
Nmap NSE script لفحص React2Shell (CVE-2025-55182)
نص Nmap NSE لمسح React2Shell (CVE-2025-55182)
إخلاء مسؤولية الكود التالي مُقدَّم للأغراض التعليمية والبحثية فقط. أي استخدام لهذا النص يقع تحت مسؤولية المستخدم وحده.
قد يُنتج هذا الماسح نتائج إيجابية خاطئة أو غير حاسمة، لذا تقع على عاتق المستخدم مهمة التحقق من أي نتائج مُبلَّغ عنها وتأكيدها. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام أو الضرر أو العواقب غير المقصودة الناشئة عن تنفيذ هذا الكود.
استخدم هذه الأداة فقط في البيئات التي لديك فيها إذن صريح. الاختبار غير المصرح به للأنظمة ممنوع منعًا باتًا وقد يكون غير قانوني.
المؤلف: Kevin Leon
التصنيفات: discovery, vuln, intrusive
نوع النص: Nmap NSE
nmap --script http-vuln-cve2025-55182.nse -p- <target>
nmap --script http-vuln-cve2025-55182.nse -p3000,3001,3002 <target>
nmap --script http-vuln-cve2025-55182.nse \
--script-args=http-vuln-cve2025-55182.waf_bypass=true <target>
PORT STATE SERVICE
3000/tcp open ppp
| http-vuln-cve2025-55182:
| VULNERABLE:
| React2Shell Remote Code Execution (RCE)
| State: VULNERABLE
| IDs: CVE:2025-55182
| Risk factor: High CVSS: 10.0
| Disclosure date: 2025-12-03
| References:
| https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
| https://nvd.nist.gov/vuln/detail/CVE-2025-55182
| https://github.com/assetnote/react2shell-scanner
|_ https://github.com/msanft/CVE-2025-55182
قبل محاولة الاستغلال، يتحقق النص من أن الهدف يُرجَّح أنه يشغّل:
طرق الكشف
يقوم النص بفحص أولي:
http.get(host, port, "/")
ويتفقد:
X-Powered-By: next.jsX-Powered-By: react_next
(دليل على أصول Next.js الثابتة)فإن الهدف يُعتبر معرَّضًا للخطر.
توليد الحدود متعددة الأجزاء
يقوم النص بتوليد حد عشوائي من نمط WebKit:
----WebKitFormBoundary<random 16 chars>
يُستخدم هذا للاستغلال من نوع multipart/form-data.
وفقًا لوسائط المستخدم:
حمولة استغلال بسيطة
حمولة تجاوز جدار الحماية (WAF Bypass)
--script-args=http-vuln-cve2025-55182.waf_bypass=true
تتضمن المزيد من الحقول والتعتيم لتجاوز الوسيطات.
داخل الحمولة، يقوم النص بحقن:
process.mainModule.require('child_process')
.execSync('echo $((41*271))')
يقيم هذا الأمر إلى 11111 ويُستخدم لاحقًا للتحقق من الاستغلال عبر كشف توجيه التوجيه (redirect digest).
يحاول النص استغلال الثغرة عن طريق إرسال POST للحمولة المُجهَّزة إلى عدة نقاط نهاية RSC معروفة:
/
/_action
/api/action
/api
/_next/data
/__rsc
/action
/server
/server/action
يتم إرسال كل طلب كـ:
http.post(host, port, path, header, payload)
الحالة أ — خطأ خادم HTTP 500
فشل إلغاء التسلسل بنجاح يشير إلى احتمال وجود ثغرة:
الحالة ب — وجود توجيه NEXT_REDIRECT Digest
تُجبر الحمولة على إعادة توجيه من جانب الخادم:
NEXT_REDIRECT;push;/login?a=11111;307;
يتحقق النص من ترويسات الاستجابة بحثًا عن:
x-action-redirect11111إذا وُجد → على الأرجح معرَّض للخطر
بناءً على نتيجة الكشف، يملأ النص تقريرًا قياسيًا لثغرات NSE:
VULNERABLENOT_VULNERABLE ┌──────────────────────┐
│ Start NSE Script │
└─────────────┬────────┘
│
▼
┌────────────────────┐
│ Request "/" │
│ Check headers/body │
└──────────┬─────────┘
│Yes
▼
┌────────────────────┐
│ React/Next.js Detected? ── No ─▶ Exit (Not Vulnerable)
└──────────┬─────────┘
│Yes
▼
┌────────────────────┐
│ Build multipart │
│ exploit payload │
└──────────┬─────────┘
▼
┌─────────────────────────────────┐
│ Loop through RSC endpoints │
│ Send POST exploit payload │
└──────────┬──────────────────────┘
│
┌─────────┴──────────────────────────────┐
▼ ▼
┌───────────────┐ ┌───────────────────┐
│ HTTP 500? │ YES │ Redirect digest? │ YES
└───────┬────────┘ └────────┬──────────┘
│NO │NO
▼ ▼
Continue testing Continue testing
│ │
└──────────────────────────────┬─────────┘
▼
┌────────────────────┐
│ Vulnerable? │
└──────────┬─────────┘
▼
Generate Report
يوفر هذا النص آلية كشف تلقائية وشاملة وآمنة لثغرة React2Shell ذات التأثير العالي. يضمن نهج التحقق متعدد الطبقات كشفًا موثوقًا مع تقليل النتائج الإيجابية الخاطئة.