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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-42533-POC — CVE-2026-42533: تجاوز في سعة الكومة وتسريب معلومات قبل التحقق من الهوية (pre-auth) في nginx ناتج عن إفساد التقاطات PCRE في محرك map/script، ويُستغل ضمن سلسلة هجوم لتنفيذ تعليمات برمجية عشوائية عن بُعد (RCE). | Kitploit
أدوات/GitHubGitHub/0xcyberstan/cve-2026-42533-poc
تحليل الثغرات الأمنيةالاستغلالأمن الويباختبار الاختراقالفريق الأحمراستغلال الملفات الثنائية
GitHub0xcyberstan/cve-2026-42533-poc

CVE-2026-42533-POC

CVE-2026-42533: تجاوز في سعة الكومة وتسريب معلومات قبل التحقق من الهوية (pre-auth) في nginx ناتج عن إفساد التقاطات PCRE في محرك map/script، ويُستغل ضمن سلسلة هجوم لتنفيذ تعليمات برمجية عشوائية عن بُعد (RCE).

عرض المستودع
18منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

CVE-2026-42533

تجاوز سعة في الكومة وتسريب معلومات من الكومة قبل المصادقة في nginx، ناتج عن عدم حفظ/استعادة حالة التقاط PCRE بين تمريرتي محرك السكربت. متغير map يُقيَّم بتعبير نمطي بين مرجعَي التقاط يستبدل r->captures، لذا تختلف تمريرة LEN عن تمريرة VALUE في تحديد حجم الالتقاط. يُخصَّص المخزن المؤقت لالتقاط واحد ويُملأ بآخر. استبدال أكبر يعطي تجاوز سعة في الكومة بمحتوى وطول يتحكم بهما المهاجم. استبدال أصغر يعطي مخزنًا مؤقتًا كبيرًا جدًا يُعاد ذيله غير المهيّأ إلى العميل، مما يسرّب مؤشرات libc ومؤشرات الكومة.

تشكّل البدائيتان معًا سلسلة تؤدي إلى تنفيذ برمجي موثوق عن بُعد قبل المصادقة. التسريب يكسّر ASLR في طلب GET واحد، لذا لا يحتاج تجاوز السعة إلى تعطيل ASLR.

الشرح: https://cyberstan.co.uk/nginx-rce/ النشرة الأمنية: F5 K000162097 المُبلِّغ: Stan Shaw (cyberstan)

الإصدارات المتأثرة

nginx 0.9.6 حتى 1.30.3 (المستقر) و1.31.2 (الرئيسي)، متأثرة منذ أن أضاف توجيه map دعم التعبيرات النمطية في عام 2011. يشمل ذلك وحدتي http وstream. حوالي 50 توجيهًا عبر 13 موقع استدعاء، بالإضافة إلى مسار ثانٍ عبر الالتقاطات المسمّاة (r->variables[]). تم الإصلاح في 1.30.4 و1.31.3.

البنية

CVE-2026-42533-PoC/
├── exploits/                 exploit and validator scripts
│   ├── poc.py                numbered-capture proxy_method chain (crash/leak/rce/rce-det)
│   ├── calibrate.py          find PL_OFF / HEAP_PAGE_OFF for --rce-det on your build
│   ├── leak_multi.py         info leak on the return and set sinks
│   ├── test_all_sites.py     ASan validator, all 13 overflow sites
│   └── named_capture_poc.py  named-capture r->variables[] variant
├── configs/                  nginx configs the exploits run against
│   ├── nginx_poc.conf        crash / leak / rce
│   └── nginx_det.conf        deterministic rce-det
├── docs/
│   └── EXPLOITATION.md       full exploitation writeup
└── README.md

نفّذ كل أمر أدناه من جذر المستودع، بحيث تُحَل مسارات exploits/ وconfigs/ وشجرة البناء ../nginx-1.30.1 كلها بشكل صحيح.

المحتويات

exploits/poc.py هو الاستغلال الرئيسي (التقاط مُرقّم، مصرف proxy_method). أوضاعه:

الوضعالغرض
poc.py --crashإطلاق تجاوز سعة الكومة؛ على بناء ASan يطبع حجم الكتابة ومكدس الاستدعاء في ngx_http_script_copy_capture_code.
poc.py --leakتسريب المعلومات: تفريغ مؤشرات libc والكومة من جسم الاستجابة كبير الحجم.
poc.py --rceتنفيذ برمجي كامل عن بُعد قبل المصادقة. محاولة واحدة عامة (configs/nginx_poc.conf)، تنجح بنسبة ~66% في كل محاولة، أعد التشغيل عند الفشل.
poc.py --rce-detتنفيذ برمجي كامل عن بُعد قبل المصادقة، حتمي ضد الإعداد المُتحكَّم فيه configs/nginx_det.conf.

سكربتات مستقلة تغطي باقي سطح الثغرة:

السكربتالغرض
exploits/leak_multi.pyتسريب المعلومات عبر مُقيّمَين إضافيين (return، set)؛ كل مؤشر libc+heap مؤكد مقابل /proc/<pid>/maps. إعداد قياسي.
exploits/test_all_sites.pyمدقّق AddressSanitizer يُطلق جميع مواقع الاستدعاء الـ13 لتجاوز السعة (http + stream).
exploits/named_capture_poc.pyصيغة الالتقاط المسمّى (?P<name>...) عبر r->variables[] / copy_var_code، وهي سبب جذري ثانٍ.

الإعدادات موجودة في configs/: nginx_poc.conf (crash/leak/rce)، وnginx_det.conf (rce-det). الشرح الكامل في docs/EXPLOITATION.md.

المتطلبات

Linux وgcc وpython3 وكود مصدر nginx 1.30.1. طُوّر واختُبر على Ubuntu 24.04.4 وglibc 2.39 وPCRE2 10.42 وpython 3.12 مع تفعيل ASLR بالكامل.

البناء

بناؤان: بناء نظيف للتسريب و RCE، بحيث تكون بقايا الكومة حقيقية. وبناء AddressSanitizer للانهيار ولمدققي المواقع، بحيث يُبلَّغ عن تجاوز السعة بحجم كتابة ومكدس استدعاء دقيقين.

tar xf nginx-1.30.1.tar.gz
cd nginx-1.30.1

# clean build -> objs.dbg/nginx  (leak, rce)
./configure --with-pcre --with-http_ssl_module --with-debug --builddir=objs.dbg
make -j"$(nproc)"

# ASan build with all the modules the site validator needs -> objs/nginx
./configure --with-pcre --with-http_ssl_module --with-http_v2_module \
    --with-stream --with-stream_ssl_preread_module --with-stream_ssl_module \
    --with-debug \
    --with-cc-opt='-g -O0 -fsanitize=address -fno-omit-frame-pointer' \
    --with-ld-opt=-fsanitize=address --builddir=objs
make -j"$(nproc)"

التشغيل

exploits/poc.py يتواصل مع nginx يعمل على 127.0.0.1:8950. شغّله في طرفية باستخدام configs/nginx_poc.conf، ثم نفّذ الوضع الذي تريده في طرفية أخرى. السكربتات الثلاثة الأخرى تُشغّل وتوقف nginx الخاص بها، لذا تحتاج فقط إلى NGINX_BIN.

تجاوز السعة، مع تتبع ASan

mkdir -p run/logs
../nginx-1.30.1/objs/nginx -p run -c "$PWD/configs/nginx_poc.conf"    # ASan build, foreground
python3 exploits/poc.py --crash

المتوقع: تجاوز سعة كومة، WRITE of size 200 في ngx_http_script_copy_capture_code عند ngx_http_script.c:1404، يُستدعى من ngx_http_complex_value في ngx_http_proxy_create_request.

تسريب المعلومات

../nginx-1.30.1/objs.dbg/nginx -p run -c "$PWD/configs/nginx_poc.conf"    # clean build
python3 exploits/poc.py --leak

المتوقع: جسم بحجم 8161 بايت مع كتابة 2 بايت والباقي بقايا كومة. مؤشر libc عند الإزاحة 0x08 ومؤشر كومة عند 0x10.

السلسلة الكاملة

../nginx-1.30.1/objs.dbg/nginx -p run -c "$PWD/configs/nginx_poc.conf"    # clean build
python3 exploits/poc.py --rce            # writes /tmp/PWNED via system()

المتوقع: تسريب، حوالي 40 اتصال رش (spray)، مشغّل تجاوز سعة، ثم /tmp/PWNED يحتوي على مخرجات id. هذه محاولة واحدة تنجح حوالي ثلثي المرات على بناء التطوير؛ عند الفشل ينهار العامل وتعيد التشغيل. انظر قسم "الموثوقية" في docs/EXPLOITATION.md.

السلسلة الكاملة الحتمية

بإعداد مُتحكَّم فيه، تصبح الثغرة نفسها محاولة واحدة حتمية. يستعيد العنوان الأساسي المطلق للكومة من التسريب في سطر واحد (heap_base = (leaked_ptr & ~0xfff) - 0x22000)، ويضع عملية تنظيف وحيدة مزوّرة لتجمّع (pool) في اتصال محجوز على عنوان معروف، ثم يوجه عملية تنظيف تجمّع الضحية إليها بدلاً من جسم المشغّل العابر الذي يحرره nginx قبل الإغلاق.

mkdir -p run/logs
../nginx-1.30.1/objs.dbg/nginx -p run -c "$PWD/configs/nginx_det.conf"   # controlled config
python3 exploits/poc.py --rce-det

nginx_det.conf هو إعداد مخبري (عامل واحد، مخازن مؤقتة ثابتة) يكون تخطيط الكومة فيه قابلًا لإعادة الإنتاج، وهذا ما يجعل الإزاحات في poc.py (PL_OFF، HEAP_PAGE_OFF) صحيحة. PL_OFF هي الإزاحة من أساس الكومة التي يقع عندها جسم تنظيف POST /b/ المحجوز؛ وتعتمد على تسلسل التخصيص الدقيق، لذا تتغير بين البناءات وإصدارات glibc والإعدادات. إذا أبلغ --rce-det عن Recalibrate، فاقرأ القيم الصحيحة من عامل حي باستخدام calibrate.py:

NGINX_BIN=../nginx-1.30.1/objs.dbg/nginx python3 exploits/calibrate.py
# prints e.g.  set PL_OFF = 0x14426  ,  then edit it in exploits/poc.py

النتيجة غير الناجحة الوحيدة الأخرى هي سحب ASLR يضع 0x0a داخل عنوان التنظيف أو جسم تجاوز السعة، وهو ما لا يستطيع تعبير map النمطي حمله؛ الأداة تُبلّغ عن ذلك وتعيد المحاولة. النشر القياسي ليس بهذه الدرجة من القدرة على التنبؤ، لذا استخدم --rce هناك. انظر "بناء حتمي" في docs/EXPLOITATION.md.

جميع مواقع تجاوز السعة الـ13

NGINX_BIN=../nginx-1.30.1/objs/nginx python3 exploits/test_all_sites.py       # ASan build
NGINX_BIN=../nginx-1.30.1/objs/nginx python3 exploits/test_all_sites.py 1 7 12   # a subset

صيغة الالتقاط المسمّى

NGINX_BIN=../nginx-1.30.1/objs/nginx python3 exploits/named_capture_poc.py    # ASan build

تسريب عبر مصرفين إضافيين، الإعداد القياسي

NGINX_BIN=../nginx-1.30.1/objs.dbg/nginx python3 exploits/leak_multi.py       # clean build

المتوقع: كلا return وset يسرّبان مؤشر libc ومؤشر كومة، وكلاهما مؤكد مقابل /proc/<pid>/maps للعامل.

استكشاف الأخطاء وإصلاحها

أكثر شيئين يوقعان الناس في الخطأ: استخدام البناء الخاطئ (ASan مقابل النظيف)، وإزاحات --rce-det غير المطابقة لبيئتك. كلاهما مغطى أدناه.

تنزيل الأداة