Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Nginx-chain-Rift-Poolslip — سلسلة RCE مستقلة عن ASLR لـ nginx PoC تجمع بين تسريب القراءة الزائدة من كومة PoolSlip (CVE-2026-9256) مع تجاوز rift (CVE-2026-42945) للوصول إلى system() على nginx الأصلي. | Kitploit
أدوات/GitHubGitHub/y198nt/nginx-chain-rift-poolslip
تحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمتطوير الحمولاتاستغلال الملفات الثنائية

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
مختبرات وتدريب عملي
GitHuby198nt/nginx-chain-rift-poolslip

Nginx-chain-Rift-Poolslip

سلسلة RCE مستقلة عن ASLR لـ nginx PoC تجمع بين تسريب القراءة الزائدة من كومة PoolSlip (CVE-2026-9256) مع تجاوز rift (CVE-2026-42945) للوصول إلى system() على nginx الأصلي.

عرض المستودع
146منذ 4 أشهرلم تتم المراجعة بعد

سلسلة استغلال RCE مستقلة عن ASLR لـ nginx PoolSlip × Rift

أول سلسلة عامة تجمع بين ثغرتين مُعلنتين حديثًا في محرك إعادة الكتابة (rewrite engine) في nginx لتحويلهما إلى تنفيذ system() عن بُعد مستقل عن ASLR على صورة Docker الرسمية nginx:1.30.0 الأصلية (Debian 13، glibc 2.41) — بدون عناوين مُثبّتة مسبقًا، وبدون إعادة تشغيل nginx، ونسبة نجاح ~90% لكل عامل (worker) جديد.

  • CVE-2026-9256 "PoolSlip" — قراءة زائدة (over-read) من كومة (heap) $args → تسريب libc + heap الحيّين.
  • CVE-2026-42945 "rift" — تجاوز سعة كومة (heap overflow) في is_args (بايتات آمنة لعناوين URL فقط) → كتابة جزئية بمقدار بايتين على مؤشر تنظيف limit_conn → يقوم ngx_destroy_pool باتباعه → system(cmd).

كلاهما ناتج عن نفس عدم التطابق ثنائي المرور (two-pass mismatch) في is_args مُوجَّه نحو مصرفين (sinks) مختلفين. الشرح التقني الكامل: Writeup


الإفصاح والسلامة

  • كلا الثغرتين مُرقَّعتان بالفعل وتحت استغلال نشط في البرية. قم بالترقية إلى nginx 1.30.2 (stable) أو 1.31.1 (mainline) — لاحظ أن 1.30.1 يُصلح rift لكنه لا يزال عرضة لـ PoolSlip، لذا فإن 1.30.2 فقط يُغلق كليهما. NGINX Plus: R36 P5 / R32 P7 / R37.0.1.1.
  • هذا منشور للتعليم والاختبار المُصرَّح به فقط. يعمل ضد مختبر Docker المحلي المُضمَّن — لا توجّهه نحو بنية تحتية لا تملكها أو لا تملك إذنًا كتابيًا لاختبارها.
CVEالاسم المستعارالإصدارات المصابةالإصدار المُصلَح (nginx OSS)
CVE-2026-42945rift0.6.27 – 1.30.01.30.1 / 1.31.0
CVE-2026-9256PoolSlip0.1.17 – 1.30.1 + 1.31.01.30.2 / 1.31.1

ما يوجد في المستودع

الملفالغرض
nginx.confإعداد بوابة API واقعي (الهدف — limit_conn، إعادة كتابة ترحيل من v1 إلى v2، وكيل رفع (upload proxy)، صفحة بحث متدهورة). بدون ضبط المُخصِّص (allocator tuning).
run.shيُشغّل المختبر المحلي: صورة nginx:1.30.0 الأصلية تخدم nginx.conf، بالإضافة إلى خادم أعلى (upstream) بطيء، على المضيف :19322.
exp_official.pyالسلسلة الكاملة: تسريب PoolSlip → اشتقاق libc/heap → رشّ (spray) → تهيئة (groom) → كتابة جزئية عبر rift → system().

المتطلبات

  • Docker، Python 3 (لتشغيل exp_official.py)، curl، Linux x86-64.
  • المختبر مكتفٍ ذاتيًا بالكامل / يعمل دون اتصال — يستخدم run.sh أداة perl (الموجودة أصلًا في صورة nginx الأصلية) للخادم الأعلى البطيء، لذا لا توجد حزمة إضافية، ولا ملف slow_backend، ولا حاجة للإنترنت. يبقى ملف nginx التنفيذي نفسه أصليًا.
  • اختياري: لمتابعة جلسات gdb في WRITEUP.md، استخدم docker exec ثم apt-get install gdb file binutils، ثم حمّل gef.

تشغيله

git clone https://github.com/y198nt/Nginx-chain-Rift-Poolslip
cd Nginx-chain-Rift-Poolslip

bash run.sh                                          # stock nginx:1.30.0 on http://127.0.0.1:19322
python3 exp_official.py --cmd 'id > /tmp/rce_proof'  # leak → overwrite → system()
docker exec nginx-rift-official cat /tmp/rce_proof   # → uid=101(nginx) ...

exp_official.py هو محاولة واحدة (~90% لكل عامل جديد): يُسرّب مرة واحدة ويُطلق مرة واحدة. إذا كان ملف الإثبات فارغًا، فقد هبطت التهيئة في خانة خاطئة — فقط أعد تشغيله.

docker rm -f nginx-rift-official      # tear the lab down

كيف يعمل (باختصار)

  1. التسريب (PoolSlip). يجعل rewrite ^/search/((.*))$ /lookup?$1$2 مرور النسخ يضبط r->args.len متجاوزًا المخزن المؤقت؛ فتعكس صفحة /search المتدهورة قيمة $args إلى الكومة المجاورة. بعد فترة تسخين قصيرة، يستقر مؤشر libpcre-cluster (ثابت 0xb0ad08 أسفل libc) ومؤشر كومة عند إزاحات مستقرة → libc_base وheap_base، دون أي شيء مُثبّت مسبقًا.
  2. الكتابة (rift). لا يمكن لتجاوز rift أن يُصدر سوى بايتات آمنة لعناوين URL، لذا فإن عنوانًا كاملًا بطول 48 بت قابل للكتابة بنسبة ~0.9% فقط تحت ASLR. بدلًا من ذلك نكتب فقط البايتين المنخفضين لمؤشر تنظيف limit_conn صالح بالفعل — فتمرّ البايتات العليا العشوائية بفعل ASLR دون مساس → مستقل عن ASLR.
  3. الإطلاق. يُعاد توجيه المؤشر إلى ngx_pool_cleanup_t{handler=&system, data=cmd, next=0} المرشوش؛ فإغلاق الضحية يُفعّل مرور التنظيف في ngx_destroy_pool → system(cmd).

راجع Writeup للاشتقاق الكامل، وجلسات gdb، والطرق المسدودة والتحولات.

التخفيف والكشف

  • الترقيع (الترقية إلى 1.30.2 / 1.31.1) — الإصلاح الحقيقي الوحيد.
  • لا تُطلَق الكتابة إلا عبر rewrite تحتوي بديلها على ? و تشير إلى التقاط PCRE ($1/$2)، أو نمط التقاط متداخل مثل ^/x/((.*))$ → /y?$1$2. دقّق في الإعدادات بحثًا عن هذه وأعد صياغة rewrite/set المُخالِف حتى الترقيع.
  • انعكاس $args (أو أي متغير مشتق من الطلب يُعاد إرساله) هو ما يحوّل القراءة الزائدة إلى تسريب معلومات — لا تعكس وسائط الطلب حرفيًا.
  • إشارات WAF / السجلات: فيضانات %2B/+ في مسار URI (GET /search/+++…)، واستجابات 503 من صفحة متدهورة تعكس $args طويلًا، وعواصف SIGSEGV/إعادة إنشاء العمال.

الشكر والمراجع

  • نماذج PoC الأصلية للمكوّنات: DepthFirstDisclosures/Nginx-Rift (rift).
  • إشعارات المورّد — CVE-2026-42945 (rift) وCVE-2026-9256 (PoolSlip)، F5/nginx.
  • الربط، والتقنية المستقلة عن ASLR، ونقلها إلى Debian glibc-2.41: هذا المستودع.
تنزيل الأداة