-
Initiate Recon Attacks
-
-
-
-
- Find Secrets
- wanna find secrets ?
-
-
-
-
-
-
-
- Find EndPoints
-
- Unveiling extra and hidden endpoints
-
-
-
-
-
-
+
JsLeaks
+ {details && (
+
+
+
+
+ Find Secrets
+ wanna find secrets ?
+
+
+
+
+
+
+
+ Find EndPoints
+
+ Unveiling extra and hidden endpoints
+
+
+
+
+
+
+
-
+ )}
);
}
diff --git a/src/renderer/views/project/attacks.tsx b/src/renderer/views/project/attacks.tsx
new file mode 100644
index 0000000..9291ad4
--- /dev/null
+++ b/src/renderer/views/project/attacks.tsx
@@ -0,0 +1,61 @@
+import {
+ Card,
+ CardContent,
+ CardDescription,
+ CardHeader,
+ CardTitle,
+} from '../../components/ui/card';
+import Exposures from './attacks/exposures';
+import MissingHeaders from './attacks/missingHeaders';
+import PotentialXss from './attacks/potentialXss';
+import SqlInjection from './attacks/sqlInjection';
+
+export default function Attacks() {
+ return (
+
+
Attacks
+
+
+
+
+ Scan for exposures
+ wanna find exposures ?
+
+
+
+
+
+
+
+ Scan for missing headers
+ wanna find more ?
+
+
+
+
+
+
+
+ Scan the URLs
+ wanna catch potential XSS
+
+
+
+
+
+
+
+ Scan for SQL Injection
+
+ SSTI, Open Redirect & CRLF Injection
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/renderer/views/project/attacks/exposures.tsx b/src/renderer/views/project/attacks/exposures.tsx
new file mode 100644
index 0000000..538635b
--- /dev/null
+++ b/src/renderer/views/project/attacks/exposures.tsx
@@ -0,0 +1,23 @@
+import { Loader2 } from 'lucide-react';
+import { useState } from 'react';
+import { Button } from '../../../components/ui/button';
+
+export default function Exposures() {
+ const [Loading, setLoading] = useState
(false);
+ const RunExposures = async () => {
+ setLoading(true);
+ };
+ return (
+ // eslint-disable-next-line react/jsx-no-useless-fragment
+ <>
+ {!Loading ? (
+
+ ) : (
+
+ )}
+ >
+ );
+}
diff --git a/src/renderer/views/project/attacks/missingHeaders.tsx b/src/renderer/views/project/attacks/missingHeaders.tsx
new file mode 100644
index 0000000..7d9dbb8
--- /dev/null
+++ b/src/renderer/views/project/attacks/missingHeaders.tsx
@@ -0,0 +1,23 @@
+import { Loader2 } from 'lucide-react';
+import { useState } from 'react';
+import { Button } from '../../../components/ui/button';
+
+export default function MissingHeaders() {
+ const [Loading, setLoading] = useState(false);
+ const RunMissingHeaders = async () => {
+ setLoading(true);
+ };
+ return (
+ // eslint-disable-next-line react/jsx-no-useless-fragment
+ <>
+ {!Loading ? (
+
+ ) : (
+
+ )}
+ >
+ );
+}
diff --git a/src/renderer/views/project/attacks/potentialXss.tsx b/src/renderer/views/project/attacks/potentialXss.tsx
new file mode 100644
index 0000000..a4d518a
--- /dev/null
+++ b/src/renderer/views/project/attacks/potentialXss.tsx
@@ -0,0 +1,23 @@
+import { Loader2 } from 'lucide-react';
+import { useState } from 'react';
+import { Button } from '../../../components/ui/button';
+
+export default function PotentialXss() {
+ const [Loading, setLoading] = useState(false);
+ const RunPotentialXss = async () => {
+ setLoading(true);
+ };
+ return (
+ // eslint-disable-next-line react/jsx-no-useless-fragment
+ <>
+ {!Loading ? (
+
+ ) : (
+
+ )}
+ >
+ );
+}
diff --git a/src/renderer/views/project/attacks/sqlInjection.tsx b/src/renderer/views/project/attacks/sqlInjection.tsx
new file mode 100644
index 0000000..f4c9156
--- /dev/null
+++ b/src/renderer/views/project/attacks/sqlInjection.tsx
@@ -0,0 +1,23 @@
+import { Loader2 } from 'lucide-react';
+import { useState } from 'react';
+import { Button } from '../../../components/ui/button';
+
+export default function SqlInjection() {
+ const [Loading, setLoading] = useState(false);
+ const RunSqlInjection = async () => {
+ setLoading(true);
+ };
+ return (
+ // eslint-disable-next-line react/jsx-no-useless-fragment
+ <>
+ {!Loading ? (
+
+ ) : (
+
+ )}
+ >
+ );
+}
diff --git a/src/renderer/views/project/jsLeaksJob/Endpoint.tsx b/src/renderer/views/project/jsLeaksJob/Endpoint.tsx
index 205df3f..b2f151f 100644
--- a/src/renderer/views/project/jsLeaksJob/Endpoint.tsx
+++ b/src/renderer/views/project/jsLeaksJob/Endpoint.tsx
@@ -1,11 +1,26 @@
import { Loader2 } from 'lucide-react';
import { useState } from 'react';
import { Button } from '../../../components/ui/button';
+import { useToast } from '../../../components/ui/use-toast';
+import { ProjectDetails } from '../../../types';
-export default function EndPoints() {
+export default function EndPoints(details: ProjectDetails) {
+ const { name } = details;
const [Loading, setLoading] = useState(false);
+ const { toast } = useToast();
const RunEndPoints = async () => {
setLoading(true);
+ if (details) {
+ const res = await window.electron.ipcRenderer.invoke('extra-links', {
+ projectName: name,
+ });
+ if (res) {
+ toast({
+ title: 'Endpoints are ready',
+ });
+ }
+ }
+ setLoading(false);
};
return (
// eslint-disable-next-line react/jsx-no-useless-fragment
diff --git a/src/renderer/views/project/jsLeaksJob/secrets.tsx b/src/renderer/views/project/jsLeaksJob/secrets.tsx
index 865aea9..41d2ea5 100644
--- a/src/renderer/views/project/jsLeaksJob/secrets.tsx
+++ b/src/renderer/views/project/jsLeaksJob/secrets.tsx
@@ -1,11 +1,24 @@
import { Loader2 } from 'lucide-react';
import { useState } from 'react';
import { Button } from '../../../components/ui/button';
+import { useToast } from '../../../components/ui/use-toast';
+import { ProjectDetails } from '../../../types';
-export default function Secrets() {
+export default function Secrets(details: ProjectDetails) {
+ const { name } = details;
const [Loading, setLoading] = useState(false);
+ const { toast } = useToast();
const RunSecrets = async () => {
setLoading(true);
+ const res = await window.electron.ipcRenderer.invoke('find-secrets', {
+ projectName: name,
+ });
+ if (res) {
+ toast({
+ title: 'your Secrets are ready',
+ });
+ }
+ setLoading(false);
};
return (
// eslint-disable-next-line react/jsx-no-useless-fragment