diff --git a/web/.env b/web/.env index 118b5060..1f867a91 100644 --- a/web/.env +++ b/web/.env @@ -1,3 +1,2 @@ VITE_APP_API_URL=http://127.0.0.1:8080 -VITE_APP_BASE_PATH=/ -VITE_APP_LANDING=false \ No newline at end of file +VITE_APP_BASE_PATH=/ \ No newline at end of file diff --git a/web/.env.production b/web/.env.production index 2d43daf7..7ff78958 100644 --- a/web/.env.production +++ b/web/.env.production @@ -1,3 +1,2 @@ VITE_APP_API_URL= -VITE_APP_BASE_PATH=/ -VITE_APP_LANDING=true \ No newline at end of file +VITE_APP_BASE_PATH=/ \ No newline at end of file diff --git a/web/bun.lockb b/web/bun.lockb index e3f8f9e0..f00f21a7 100755 Binary files a/web/bun.lockb and b/web/bun.lockb differ diff --git a/web/package.json b/web/package.json index 58406270..b0539542 100644 --- a/web/package.json +++ b/web/package.json @@ -31,7 +31,7 @@ "dependencies": { "@hookform/resolvers": "^5.2.1", "@tailwindcss/vite": "^4.1.11", - "@tanstack/react-query": "^5.84.2", + "@tanstack/react-query": "^5.85.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "framer-motion": "^12.23.12", diff --git a/web/src/config.ts b/web/src/config.ts index 8d4999c0..6ff5ae6b 100644 --- a/web/src/config.ts +++ b/web/src/config.ts @@ -4,7 +4,6 @@ const EnvSchema = yup.object({ API_URL: yup.string().optional(), BASE_PATH: yup.string().optional(), MODE: yup.string().required(), - LANDING: yup.boolean().required(), }); type EnvSchema = yup.InferType; diff --git a/web/src/pages/landing.tsx b/web/src/pages/landing.tsx deleted file mode 100644 index 7824d522..00000000 --- a/web/src/pages/landing.tsx +++ /dev/null @@ -1,296 +0,0 @@ -import {motion} from "framer-motion"; -import { - CombineIcon, - GithubIcon, - MinimizeIcon, - ServerIcon, - ShellIcon, - Shield, - ShieldCheckIcon, - TerminalIcon, - ZapIcon, -} from "lucide-react"; -import {NavLink} from "react-router-dom"; -import {LineShadowText} from "@/components/magicui/line-shadow-text"; -import {RainbowButton} from "@/components/magicui/rainbow-button"; -import {useTheme} from "@/components/theme-provider"; -import {Badge} from "@/components/ui/badge"; -import {Button} from "@/components/ui/button"; -import {Card, CardContent, CardDescription, CardHeader, CardTitle} from "@/components/ui/card"; - -export default function LandingPage() { - const features = [ - { - icon: , - title: "Non-Intrusive", - description: - "Generated memshells don't interfere with normal middleware traffic, even with multiple shells injected.", - }, - { - icon: , - title: "High Availability", - description: "Comes with comprehensive CI integration tests, covering mainstream middleware for reliability.", - }, - { - icon: , - title: "Minimal Size", - description: "The core code of the memshell is kept as concise as possible for efficient transfer and injection.", - }, - { - icon: , - title: "Strong Compatibility", - description: "Covers common middleware and frameworks like Tomcat, WebLogic, and Spring.", - }, - ]; - - const supportedMiddleware = [ - "Tomcat", - "Jetty", - "GlassFish", - "Payara", - "Resin", - "SpringWebMVC", - "SpringWebFlux", - "XXL-JOB", - "JBossAS", - "JBossEAP", - "WildFly", - "Undertow", - "WebLogic", - "WebSphere", - "BES", - "TongWeb", - "InforSuite AS", - "Apusic AS", - "Primeton", - ]; - const supportedShells = [ - "Godzilla", - "Behinder", - "AntSword", - "Suo5", - "Neo-reGeorg", - "Command Execution", - "Custom Shell", - ]; - - const theme = useTheme(); - const shadowColor = theme.theme === "dark" ? "#ffffff" : "#000000"; - - return ( -
-
-
-
- -
- - For Security Research & Authorized Testing Only -
-

- - MemShell - - Party - - -

-

- A self-hosted, visual platform for one-click generation of Java memory shells for common middleware and - frameworks. The ultimate learning platform for security researchers. -

-
- - - - - - - - -
-
- -
-
-
-

Why Choose MemShellParty?

-

Designed for modern offensive and defensive scenarios.

-
-
- {features.map((feature, index) => ( - - - - {feature.icon} - {feature.title} - - - {feature.description} - - - - ))} -
-
-
- -
-
-
-

Extensive Support Matrix

-

- Compatible with a wide range of industry-standard technologies. -

-
-
- - - - - - Supported Middleware - - - - {supportedMiddleware.map((tech) => ( - - {tech} - - ))} - - - - - - - - - Supported Shell Tools - - - - {supportedShells.map((shell) => ( - - {shell} - - ))} - - - -
-
-
- -
-
-
-

Get Your Shell in 3 Simple Steps

-

A streamlined process from selection to generation.

-
-
- -
- 1 -
-

Select Middleware

-

Choose your target environment like Tomcat or Spring.

-
- -
- 2 -
-

Configure Shell

-

Pick a shell type and set parameters like passwords or keys.

-
- -
- 3 -
-

Generate Payload

-

Click generate to get the final payload for your operation.

-
-
-
-
- - {/* --- Final CTA Section --- */} -
-
-

Ready to Join the Party?

-

- Visit the GitHub repository to start your memshell exploration, or contribute to the project! -

- -
-
- - {/* --- Footer --- */} -
-
-
-

MemShellParty

-

- Built with ❤️ by{" "} - - ReaJason - -

-
-
-
-
- ); -} diff --git a/web/src/router.tsx b/web/src/router.tsx index b397c40d..a4dfb4d8 100644 --- a/web/src/router.tsx +++ b/web/src/router.tsx @@ -1,7 +1,6 @@ import {createHashRouter} from "react-router-dom"; import RootLayout from "@/components/layouts/root-layout"; import {env} from "@/config"; -import LandingPage from "@/pages/landing"; import MemShellPage from "@/pages/memshell"; import ProbeShellPage from "@/pages/probeshell"; import type {MemShellFormSchema} from "@/types/schema"; @@ -42,13 +41,6 @@ const parseUrlParams = (searchParams: URLSearchParams): Partial; - } - return ; -} - export const router = createHashRouter( [ { @@ -57,7 +49,7 @@ export const router = createHashRouter( children: [ { index: true, - element: , + element: , loader: ({ request }) => { const url = new URL(request.url); return parseUrlParams(url.searchParams);