
CVE-2025-55182 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Next.js सर्वर एक्शन्स में एक गंभीर RCE भेद्यता है। React Flight प्रोटोकॉल में असुरक्षित डिसीरियलाइज़ेशन का फायदा उठाकर प्रोटोटाइप पोल्यूशन और सैंडबॉक्स बायपास के माध्यम से मनमाने कमांड निष्पादित करता है।
React2Shell (CVE-2025-55182) के लिए एक Proof-of-Concept (PoC) स्क्रिप्ट, जो Server Actions का उपयोग करने वाले Next.js अनुप्रयोगों को प्रभावित करने वाली एक गंभीर रिमोट कोड निष्पादन (RCE) भेद्यता है।
[!WARNING] अस्वीकरण: यह टूल केवल शैक्षिक और अधिकृत परीक्षण उद्देश्यों के लिए है। किसी भी दुरुपयोग के लिए मैं उत्तरदायी नहीं हूँ।
यह स्क्रिप्ट React Server Components "Flight" प्रोटोकॉल में एक असुरक्षित deserialization भेद्यता का शोषण करती है। यह बिना प्रमाणीकरण वाले हमलावरों को सर्वर पर मनमाना JavaScript कोड निष्पादित करने की अनुमति देती है, जिससे आंशिक रिमोट कोड निष्पादन (RCE) होता है।
require (global.require या module constructor के माध्यम से) खोजने के लिए संगतता जाँच का उपयोग करता है, यह सुनिश्चित करते हुए कि यह आधुनिक Node.js संस्करणों (v14+) पर काम करता है।pip install -r requirements.txt
python3 react2shell.py -u <TARGET_URL> [-c <COMMAND>]
| आर्ग्युमेंट | विवरण | डिफ़ॉल्ट |
|---|---|---|
-u, --url | आवश्यक। लक्ष्य URL (जैसे, http://localhost:3000/)। | N/A |
-c, --cmd | वैकल्पिक। सर्वर पर निष्पादित करने के लिए कमांड। | id |
उपयोगकर्ता पहचान जाँचें:
python3 react2shell.py -u http://127.0.0.1:3000/
निर्देशिका सामग्री सूचीबद्ध करें:
python3 react2shell.py -u http://127.0.0.1:3000/ -c "ls -la"
संवेदनशील फ़ाइल पढ़ें:
python3 react2shell.py -u http://127.0.0.1:3000/ -c "cat /etc/passwd"
यह एक्सप्लॉइट React Server Components (RSC) को संभालने वाले Next.js Server Actions के भीतर एक Prototype Pollution और Insecure Deserialization श्रृंखला का लाभ उठाता है।
Next-Action हेडर सर्वर को एक Server Action प्रोसेस करने का संकेत देता है।then प्रॉपर्टी ("$1:__proto__:then") इंजेक्ट करता है। यह सर्वर के asynchronous request handler को पेलोड को एक "Thenable" (Promise-जैसी वस्तु) के रूप में मानने के लिए धोखा देता है।_response ऑब्जेक्ट को प्रोसेस करता है। _prefix फ़ील्ड का उपयोग सामान्यतः आंतरिक स्ट्रीम बफ़रिंग के लिए किया जाता है, लेकिन इसमें हेरफेर करके, हम रॉ JavaScript इंजेक्ट कर सकते हैं।require फ़ंक्शन को अक्सर global scope से हटा दिया जाता है। स्क्रिप्ट process.mainModule प्रोटोटाइप चेन को ट्रैवर्स करके इसे बाईपास करती है:
var require = global.require || global.process.mainModule.constructor._load;
child_process आयात कर सकते हैं और सिस्टम कमांड निष्पादित कर सकते हैं।execSync) चलता है, और आउटपुट को एक Error ऑब्जेक्ट के रूप में फेंक दिया जाता है। यह त्रुटि क्रमबद्ध की जाती है और HTTP प्रतिक्रिया बॉडी में क्लाइंट को वापस भेज दी जाती है, जिससे हम कमांड आउटपुट देख सकते हैं।यह टूल Gemini 3 Pro की सहायता से विकसित किया गया था।