CVE-2025-55182 ("React2Shell") के लिए प्रूफ ऑफ कॉन्सेप्ट। एक पूरी तरह से डॉकरीकृत वातावरण जो React Server Components में असुरक्षित डिसेरिएलाइजेशन के माध्यम से रिमोट कोड एक्ज़ीक्यूशन (RCE) का प्रदर्शन करता है। वैनिला React (Express) और Next.js दोनों के लिए कमजोर लक्ष्य, साथ ही एक कस्टम पायथन शोषण स्क्रिप्ट शामिल है।
⚠️ अस्वीकरण: केवल शैक्षणिक उपयोग यह रिपॉज़िटरी एक गंभीर भेद्यता (CVSS 10.0) के लिए कार्यशील एक्सप्लॉइट कोड प्रदान करती है। यह पूर्ण रूप से शैक्षणिक अनुसंधान, सुरक्षा विश्लेषण और शैक्षिक उद्देश्यों के लिए है। इस कोड का उपयोग उन सिस्टमों के विरुद्ध न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण की स्पष्ट अनुमति आपके पास नहीं है। लेखक किसी भी दुरुपयोग के लिए उत्तरदायी नहीं है।
यह प्रोजेक्ट CVE-2025-55182 का दस्तावेज़ीकरण और प्रदर्शन करता है, जो React Server Components (RSC) आर्किटेक्चर में विद्यमान एक गंभीर Remote Code Execution (RCE) भेद्यता है। इसे अक्सर "React2Shell" के रूप में संदर्भित किया जाता है; यह दोष अनधिकृत रिमोट हमलावरों को react-server द्वारा उपयोग किए जाने वाले "Flight" सीरियलाइज़ेशन प्रोटोकॉल में हेरफेर करके सर्वर पर मनमाना कोड निष्पादित करने की अनुमति देता है।
यह लैब भेद्यता का दो अलग-अलग परिदृश्यों में विश्लेषण करने के लिए एक नियंत्रित, पृथक Docker वातावरण प्रदान करती है:
react-server-dom-webpack और Express का उपयोग करने वाला एक मूल (raw) कार्यान्वयन।वातावरण को Docker Compose के माध्यम से ऑर्केस्ट्रेट किया गया है और इसमें तीन पृथक कंटेनर शामिल हैं जो एक निजी आंतरिक नेटवर्क () से जुड़े हैं।
research-net| सेवा | संदर्भ | विवरण | भेद्य घटक |
|---|---|---|---|
vanilla-target | vanilla-rsc/ | RSC प्रोटोकॉल को मैन्युअल रूप से लागू करने वाला न्यूनतम Express सर्वर। | [email protected] |
nextjs-target | nextjs-app/ | App Router का उपयोग करने वाला मानक Next.js एप्लिकेशन। | [email protected] (impl. react-server) |
attacker | exploit/ | एक्सप्लॉइट स्क्रिप्ट्स युक्त Python वातावरण। | N/A |
यह भेद्यता Flight प्रोटोकॉल पार्सर के भीतर असुरक्षित डिसीरियलाइज़ेशन (CWE-502) से उत्पन्न होती है। "फेक" चंक संरचना युक्त एक क्राफ्टेड मल्टीपार्ट पेलोड इंजेक्ट करके, एक हमलावर निम्न कार्य कर सकता है:
.then गुण को अधिलेखित करना।$B ब्लॉब्स का संदर्भ देने वाली) का अनुसरण करने के लिए बाध्य करना।child_process.execSync) संकलित और निष्पादित करने के लिए Function() कंस्ट्रक्टर तक पहुँचना।रिपॉज़िटरी क्लोन करें:
git clone https://github.com/trax69/cve-2025-55182-poc.git
cd cve-2025-55182-poc
लैब का निर्माण (build) करें और प्रारंभ करें:
docker-compose up -d --build
कंटेनरों के पूरी तरह प्रारंभ होने की प्रतीक्षा करें। Next.js कंटेनर को अपना पहला बिल्ड पूरा करने में कुछ मिनट लग सकते हैं।
एक्सप्लॉइटेशन का तर्क exploit/exploit.py में समाहित है। आप अपनी होस्ट मशीन से (यदि Python स्थापित है) या सीधे attacker कंटेनर से हमले चला सकते हैं।
attacker शेल तक पहुँचें:
docker-compose exec attacker bash
आवश्यकताएँ स्थापित करें:
pip install -r requirements.txt
लक्ष्य A पर हमला करें (Vanilla React):
python exploit.py http://vanilla-target:4000/rsc vanilla
लक्ष्य B पर हमला करें (Next.js):
python exploit.py http://nextjs-target:3000/ nextjs
एक्सप्लॉइट पीड़ित सर्वर की /tmp डायरेक्टरी में pwned.txt नामक एक फ़ाइल बनाने का प्रयास करता है। सफलता सत्यापित करने के लिए:
# Check Vanilla Server
docker-compose exec vanilla-target ls -la /tmp/pwned.txt
# Check Next.js Server
docker-compose exec nextjs-target ls -la /tmp/pwned.txt
सफल होने पर, आपको फ़ाइल की सूची दिखाई देगी। यदि एक्सप्लॉइट विफल हो जाता है, तो फ़ाइल मौजूद नहीं होगी।
प्रोडक्शन वातावरण में इस भेद्यता को ठीक करने के लिए:
react-server-dom-webpack (और संबंधित पैकेज) को संस्करण 19.0.1, 19.1.2, या 19.2.1+ में अपग्रेड करें।"$1:__proto__" जैसे सिग्नेचर या "$@" के असामान्य उपयोग वाले अनुरोधों को ब्लॉक करने के लिए नियम लागू करें।विश्वविद्यालय परियोजना - सुरक्षा ऑडिट एवं भेद्यता अनुसंधान