From 80919f66ba3eeb099f9b9e5ed7645059bb6e66ba Mon Sep 17 00:00:00 2001 From: Yazan Essam Date: Thu, 25 Apr 2024 02:19:50 +0200 Subject: [PATCH] Attacks UI --- src/renderer/App.tsx | 5 +- src/renderer/components/sidebar.tsx | 5 +- src/renderer/views/project/JsLeaks.tsx | 6 +- src/renderer/views/project/attacks.tsx | 61 +++++++++++++++++++ .../views/project/attacks/exposures.tsx | 23 +++++++ .../views/project/attacks/missingHeaders.tsx | 23 +++++++ .../views/project/attacks/potentialXss.tsx | 23 +++++++ .../views/project/attacks/sqlInjection.tsx | 23 +++++++ 8 files changed, 161 insertions(+), 8 deletions(-) create mode 100644 src/renderer/views/project/attacks.tsx create mode 100644 src/renderer/views/project/attacks/exposures.tsx create mode 100644 src/renderer/views/project/attacks/missingHeaders.tsx create mode 100644 src/renderer/views/project/attacks/potentialXss.tsx create mode 100644 src/renderer/views/project/attacks/sqlInjection.tsx diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 3e35156..86abb64 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -9,7 +9,8 @@ import { ProjectLayout } from './layout/projectLayout'; import Status from './views/project/status'; import Recon from './views/project/recon'; import { ReconResults } from './views/project/results/recon-results'; -import JsLeaks from './views/project/JsLeaks.1'; +import JsLeaks from './views/project/JsLeaks'; +import Attacks from './views/project/attacks'; function Home() { return ( @@ -31,7 +32,7 @@ export default function App() { } /> } /> } /> - } /> + } /> } /> diff --git a/src/renderer/components/sidebar.tsx b/src/renderer/components/sidebar.tsx index e50e4e8..63896eb 100644 --- a/src/renderer/components/sidebar.tsx +++ b/src/renderer/components/sidebar.tsx @@ -30,9 +30,8 @@ const dashboardMenu: DashboardMenu[] = [ icon: , }, { - href: 'attack', - title: 'Attack', - Disabled: true, + href: 'attacks', + title: 'Attacks', icon: , }, { diff --git a/src/renderer/views/project/JsLeaks.tsx b/src/renderer/views/project/JsLeaks.tsx index b3ad068..0a4b824 100644 --- a/src/renderer/views/project/JsLeaks.tsx +++ b/src/renderer/views/project/JsLeaks.tsx @@ -5,13 +5,13 @@ import { CardHeader, CardTitle, } from '../../components/ui/card'; -import Secrets from './JsLeaks Jobs/secrets'; -import EndPoints from './JsLeaks Jobs/EndPoints'; +import Secrets from './jsLeaksJob/secrets'; +import EndPoints from './jsLeaksJob/Endpoint'; export default function JsLeaks() { return (
-

Initiate Recon Attacks

+

JsLeaks

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 ? ( + + ) : ( + + )} + + ); +}