
Advanced security research on CVE-2025-55182 (React2Shell). Features an exploitation framework with 6 functional impact scenarios (RCE to Secret Exfiltration), an interactive reverse shell, and a complete laboratory. Portfolio piece demonstrating deep analysis of Prototype Pollution and Insecure Deserialization in React Server Components
अविश्वसनीय डेटा का डिसीरियलाइज़ेशन + रिएक्ट सर्वर घटकों में प्रोटोटाइप प्रदूषण
Next.js सर्वर क्रियाओं के माध्यम से अप्रमाणित रिमोट कोड निष्पादन
प्रभावित: React 19.0.0 - 19.2.0 · पैच: React 19.0.1 / 19.1.2 / 19.2.1 (दिसंबर 3, 2025)
उन्नत एक्सप्लॉइट का प्रदर्शन - RCE बुनियादी आदेश, इंटरैक्टिव शेल, और कमजोर Next.js अनुप्रयोग के विरुद्ध कई आक्रमण वेक्टर
इस भंडार में CVE-2025-55182 पर मेरा मास्टर थीसिस अनुसंधान शामिल है, जो रिएक्ट सर्वर घटकों में एक क्रिटिकल (CVSS v3.1: 10.0) रिमोट कोड निष्पादन भेद्यता है।
यह भेद्यता रिएक्ट फ़्लाइट प्रोटोकॉल में असुरक्षित डिसीरियलाइज़ेशन तंत्र से उत्पन्न होती है। सर्वर क्रियाओं को संसाधित करते समय, Next.js बिना उचित सत्यापन के आने वाले मल्टीपार्ट पेलोड को डिसीरियलाइज़ करता है। एक हमलावर एक दुर्भावनापूर्ण पेलोड तैयार कर सकता है जो प्रोटोटाइप श्रृंखला को प्रदूषित करता है और मनमाना जावास्क्रिप्ट इंजेक्ट करता है, जो Function कंस्ट्रक्टर (और बाद में child_process.execSync() के माध्यम से) सर्वर पर निष्पादित होता है।
CVE-2025-66478 पर ध्यान दें: Vercel ने इसी भेद्यता के Next.js-विशिष्ट प्रभाव को ट्रैक करने के लिए एक समानांतर CVE जारी किया। चूंकि Next.js React को एक वेंडर्ड तरीके से बंडल करता है, कई निर्भरता स्कैनर स्वचालित रूप से इसे कमजोर नहीं पहचानते हैं। अमेरिकी राष्ट्रीय भेद्यता डेटाबेस (NVD) ने आधिकारिक तौर पर CVE-2025-66478 को CVE-2025-55182 के डुप्लिकेट के रूप में अस्वीकार कर दिया, हालांकि इसका संदर्भ Vercel के अपने सुरक्षा सलाहकार में जारी है।
अनुवर्ती भेद्यताएं: रिएक्ट टीम ने बाद में प्रारंभिक पैच संस्करणों (19.0.1, 19.1.2, 19.2.1) में मौजूद दो अतिरिक्त मुद्दों का खुलासा किया: CVE-2025-55184 (सेवा अस्वीकार, CVSS 7.5) और CVE-2025-55183 (स्रोत कोड एक्सपोज़र, CVSS 5.3)। उपयोगकर्ताओं को तीनों को संबोधित करने के लिए 19.0.2, 19.1.3, या 19.2.2 पर अपग्रेड करना चाहिए।
CVE-2025-55182/
├── README.md # यह फ़ाइल
├── LICENSE # MIT लाइसेंस
│
├── exploit/
│ ├── exploit-explanation.md # एक्सप्लॉइट उपयोग दस्तावेज़ीकरण
│ └── react2shell.py # मुख्य एक्सप्लॉइट — 4 आक्रमण मॉड्यूल + इंटरैक्टिव शेल
│
├── vulnerable-app/ # कमजोर Next.js अनुप्रयोग
│ ├── README.md # मूल vulnapp क्रेडिट
│ ├── package.json # React 19.0.0 (कमजोर)
│ ├── app/ # अनुप्रयोग स्रोत कोड
│ ├── curl_id.sh # मूल एक्सप्लॉइट स्क्रिप्ट (zack0x01 द्वारा)
│ └── scripts/
│ └── restore.sh # पुनर्स्थापना स्क्रिप्ट (मेरा योगदान)
│
└── docs/
├── screenshots/ # शोषण प्रदर्शन
│ ├── 01-app-initial.png
│ ├── 02-rce-basic.png
│ ├── 03-interactive-shell.png
│ ├── 04-no-payload.png
│ ├── 05-delete-result.png
│ ├── 06-deface.png
│ ├── 07-shutdown-servers.png
│ ├── 08-restore-from-script.png
│ └── 09-restore-from-interactive-shell.png
│
└── analysis/
├── 01-root-cause.md # भेद्यता मूल कारण विश्लेषण
├── 02-payload-breakdown.md # पेलोड संरचना और निष्पादन प्रवाह
└── 03-timeline.md # CVE समयरेखा
vulnerable-app/ में प्रदान)cd vulnerable-app
npm install --legacy-peer-deps
npm run dev
# ऐप http://localhost:3000 पर उपलब्ध
cd ../exploit
# जांचें कि लक्ष्य कमजोर है या नहीं
python3 react2shell.py -u http://localhost:3000 --check
# एकल आदेश निष्पादित करें
python3 react2shell.py -u http://localhost:3000 -c "whoami"
# इंटरैक्टिव शेल मोड
python3 react2shell.py -u http://localhost:3000 -i
रिएक्ट सर्वर घटक सर्वर से क्लाइंट तक घटक डेटा भेजने के लिए एक कस्टम सीरियलाइज़ेशन/डिसीरियलाइज़ेशन तंत्र ("फ़्लाइट" प्रोटोकॉल) का उपयोग करते हैं। सर्वर क्रियाओं को संसाधित करते समय, सर्वर बिना उचित सत्यापन के आने वाले पेलोड को डिसीरियलाइज़ करता है।
मुख्य दोष व्यवहारिक विश्वास है: डिसीरियलाइज़र प्रॉमिसेज़ की पहचान करने के लिए typeof obj.then === 'function' की जाँच करता है, बिना यह सत्यापित किए कि गुण सीधे वस्तु से संबंधित है। यह हमलावर को Object.prototype.then को जहर देने की अनुमति देता है, जिससे हर सादा वस्तु एक थनेबल के रूप में दिखाई देती है।
एक हमलावर एक दुर्भावनापूर्ण पेलोड तैयार कर सकता है जो:
__proto__:then का उपयोग करके प्रोटोटाइप श्रृंखला को प्रदूषित करता है$1:constructor:constructor के माध्यम से समाधान को Function कंस्ट्रक्टर पर पुनर्निर्देशित करता हैnew Function(_prefix) के माध्यम से मनमाना जावास्क्रिप्ट निष्पादित करता हैprocess.mainModule.require('child_process').execSync() के माध्यम से सिस्टम आदेश चलाता हैX-Action-Redirect HTTP प्रतिक्रिया हेडर के माध्यम से आउटपुट बाहर निकालता हैउपयोगकर्ता-मोड (अप्रमाणित)
│
├─ POST / (Next.js सर्वर क्रिया एंडपॉइंट)
│ ├─ हेडर: Next-Action: x
│ └─ दुर्भावनापूर्ण JSON के साथ मल्टीपार्ट बॉडी
│
└─ रिएक्ट फ़्लाइट डिसीरियलाइज़र पेलोड संसाधित करता है
└─ __proto__:then के माध्यम से प्रोटोटाइप प्रदूषण
└─ $1:constructor:constructor के माध्यम से Function कंस्ट्रक्टर तक पहुँच
└─ new Function(_prefix) हमलावर के जावास्क्रिप्ट को निष्पादित करता है
└─ execSync() सिस्टम आदेश चलाता है
└─ आउटपुट NEXT_REDIRECT त्रुटि में एम्बेडेड
└─ Next.js इसे X-Action-Redirect हेडर में बदलता है
यह भेद्यता उन सभी Next.js अनुप्रयोगों को प्रभावित करती है जो रिएक्ट सर्वर घटकों के साथ ऐप राउटर का उपयोग करते हैं — Next.js 14 के बाद से डिफ़ॉल्ट कॉन्फ़िगरेशन। स्पष्ट रूप से परिभाषित सर्वर क्रियाएं आवश्यक नहीं हैं; प्रभावित RSC पैकेजों की मात्र उपस्थिति पर्याप्त है।
यह भेद्यता एक अप्रमाणित हमलावर को अनुमति देती है:
1. [कोई] किसी भी सर्वर क्रिया एंडपॉइंट को गढ़ा गया मल्टीपार्ट POST भेजें
2. [सर्वर] रिएक्ट डिसीरियलाइज़र दुर्भावनापूर्ण JSON संसाधित करता है
3. [सर्वर] प्रोटोटाइप प्रदूषण Object.prototype.then को जहर देता है
4. [सर्वर] सादा वस्तु थनेबल के रूप में माना जाता है; Function कंस्ट्रक्टर तक पहुँच
5. [सर्वर] new Function(_prefix) हमलावर का मनमाना जावास्क्रिप्ट निष्पादित करता है
6. [सर्वर] execSync() सिस्टम आदेश चलाता है; आउटपुट कैप्चर होता है
7. [सर्वर] आउटपुट NEXT_REDIRECT त्रुटि डाइजेस्ट में एम्बेडेड
8. [सर्वर] Next.js URL-एन्कोडेड आउटपुट के साथ X-Action-Redirect हेडर लौटाता है
9. [हमलावर] हेडर से कमांड परिणाम निकालें और URL-डीकोड करें
सभी परीक्षण Next.js 15.0.0 और React 19.0.0 के साथ काली Linux 2026.1 चलाने वाले एक पृथक VirtualBox VM पर किए गए, जिसमें कोई नेटवर्क एक्सपोज़र नहीं था।
नियतिवाद: संभाव्य एक्सप्लॉइट (जैसे हीप स्प्रे) के विपरीत, CVE-2025-55182 पूरी तरह से नियतिवादी है — कोई भी सही ढंग से स्वरूपित HTTP POST अनुरोध React सर्वर घटकों को सक्षम करके React 19.0.0–19.2.0 चलाने वाले किसी भी अप्रबंधित सिस्टम पर प्रायिकता 1 के साथ RCE उत्पन्न करता है।
| दस्तावेज़ | विवरण |
|---|---|
| मूल कारण विश्लेषण | रिएक्ट फ़्लाइट में डिसीरियलाइज़ेशन दोष और प्रोटोटाइप प्रदूषण |
| पेलोड विश्लेषण |
यह शोध मेरे साइबर सुरक्षा में मास्टर थीसिस (UCAM — कैम्पस इंटरनैशनल डी साइबरसेगुरिदाद) का हिस्सा है, जो कई वातावरणों में N-दिन की भेद्यताओं का विश्लेषण करता है।
यह CVE थीसिस के भीतर आधुनिक जावास्क्रिप्ट फ्रेमवर्क वेक्टर का प्रतिनिधित्व करता है, जो प्रदर्शित करता है:
कीवर्ड: RCE · Prototype Pollution · Deserialization · React · Next.js · Server Actions · CVE-2025-55182
अन्नाइस मोलिना (devianntsec) — सुरक्षा शोधकर्ता | साइबर सुरक्षा में मास्टर्स (UCAM)
MIT लाइसेंस — LICENSE देखें
यह भंडार केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है, जो एक शैक्षणिक मास्टर थीसिस के भाग के रूप में है। सभी परीक्षण बिना किसी नेटवर्क एक्सपोज़र के पृथक वर्चुअल मशीनों पर किए गए। केवल उन सिस्टमों पर उपयोग करें जिनके आप मालिक हैं या जिनके परीक्षण के लिए स्पष्ट लिखित प्राधिकरण है। अनधिकृत उपयोग अवैध है और आपराधिक अभियोजन का कारण बन सकता है।
| पहलू | विवरण |
|---|
| चार आक्रमण मॉड्यूल | प्रोजेक्ट हटाएं, वेबसाइट विरूपित करें, पर्यावरण चर चुराएं, सर्वर बंद करें |
| इंटरैक्टिव शेल | विशेष आदेशों और पुनर्स्थापना क्षमताओं के साथ स्थायी शेल |
| स्थिर बहिर्वाह | HTTP हेडर आकार सीमाओं को बायपास करने के लिए पंक्ति-दर-पंक्ति पढ़ना |
| पुनर्स्थापना स्क्रिप्ट | हमलों के बाद सुरक्षित प्रयोगशाला पुनर्स्थापना |
| शैक्षणिक दस्तावेज़ीकरण | मूल कारण, पेलोड विश्लेषण, और भेद्यता समयरेखा |
| मॉड्यूल | आदेश | विवरण | प्रभाव |
|---|
| प्रोजेक्ट हटाएं | --delete-projects | डैशबोर्ड से सभी प्रोजेक्ट हटाता है | डेटा विनाश |
| विरूपण | --deface "message" | मुख्य पृष्ठ को बदलता है | विरूपण |
| पर्यावरण चुराएं | --steal-env | पर्यावरण चर चुराता है | बहिर्वाह |
| सर्वर बंद करें | --shutdown-servers | सभी सर्वर बंद करता है | सेवा अस्वीकार |
| आक्रमण मॉड्यूल | परिणाम | नोट्स |
|---|
| कमांड निष्पादन | ✅ RCE की पुष्टि | whoami, id, uname -a विश्वसनीय रूप से काम करते हैं |
| प्रोजेक्ट हटाएं | ✅ डैशबोर्ड संशोधित | प्रोजेक्ट हटाए गए, React संरचना संरक्षित |
| विरूपण | ✅ वेबसाइट विरूपित | कस्टम संदेश प्रदर्शित |
| पर्यावरण चुराएं | ✅ env चर निकाले गए | stolen_env.txt में सहेजे गए |
| सर्वर बंद करें | ✅ सभी सर्वर बंद के रूप में दिखाए गए | UI अद्यतन, React कार्यात्मक |
| इंटरैक्टिव शेल | ✅ स्थायी शेल | विशेष आदेश उपलब्ध |
| पुनर्स्थापना | ✅ मूल स्थिति बहाल | restore.sh स्क्रिप्ट के माध्यम से |
| दुर्भावनापूर्ण JSON संरचना का पंक्ति-दर-पंक्ति विश्लेषण |
| CVE समयरेखा | खोज, प्रकटीकरण और पैच कालक्रम |