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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE2026-42926 — مختبر مُتحكَّم به لحقن إطارات HTTP/2 في NGINX للتحقق من تصحيح CVE-2026-42926 والبحث الدفاعي | Kitploit
أدوات/GitHubGitHub/ikarolaborda/cve2026-42926
أدوات دفاعيةتحليل الثغرات الأمنيةتدقيق التكوينأمن الويبالتعلم والتعليممختبرات وتدريب عملي
GitHubikarolaborda/cve2026-42926

CVE2026-42926

مختبر مُتحكَّم به لحقن إطارات HTTP/2 في NGINX للتحقق من تصحيح CVE-2026-42926 والبحث الدفاعي

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-42926 مختبر حقن إطارات HTTP/2 في NGINX

مختبر أمن سيبراني مُتحكم به للتحقق من السلوك المرتبط بـ CVE-2026-42926 ومقارنته، وهي مشكلة حقن إطارات HTTP/2 تؤثر على إصدارات محددة من NGINX عند استخدام إعداد وكيل (proxy) قابل للاستغلال.

هذا المستودع مخصّص حصريًا لـ البحث الدفاعي، والتحقق من التصحيحات، وتدقيق الإعدادات، وإعادة الإنتاج المخبري المُتحكم به فقط.

التصنيف: حقن إطارات HTTP/2 الإصدارات المتأثرة: NGINX من 1.29.4 حتى 1.30.0 الإصدارات المُصححة: NGINX 1.30.1+ / 1.31.0+

إشعار السلامة

استخدم هذا المشروع فقط في بيئة مختبر معزولة تمتلكها أو مُصرّح لك صراحةً باختبارها.

لا تشغّله ضد أنظمة تابعة لجهات خارجية، أو بنية تحتية عامة، أو بيئات مشتركة، أو خدمات إنتاجية دون إذن كتابي.

العزل الموصى به:

  • جهاز افتراضي محلي (Local VM)
  • حاوية مؤقتة (Disposable container)
  • مضيف اختبار خاص
  • شبكة مختبر غير قابلة للتوجيه (Non-routable)

ماذا يفعل هذا المختبر

يفحص المختبر ما إذا كانت نسخة NGINX الثنائية وإعداداتها تطابق الشروط اللازمة لإعادة إنتاج المشكلة، ويُرسل طلبًا مُصنّعًا إلى موقع الاختبار، ويفحص سجل upstream مُتحكمًا به للبحث عن أدلة على وصول بايتات مشابهة لإطارات HTTP/2 المحقونة إلى جهة upstream.

نمط التحقق المعتاد هو:

  1. تشغيل نفس إعداد الوكيل القابل للاستغلال مع بناء NGINX قابل للاستغلال.
  2. تشغيل نفس إعداد الوكيل القابل للاستغلال مع بناء NGINX مُصحح.
  3. مقارنة أدلة upstream وأحكام السكربت.

النتيجة المتوقعة:

  • البناء القابل للاستغلال: قد تُلاحَظ أدلة على الحقن.
  • البناء المُصحح: يجب ألا تُلاحَظ أي أدلة على الحقن.

محتويات المستودع

المتطلبات

  • بيئة شل (Shell) على Linux أو macOS
  • bash
  • python3
  • php
  • امتداد cURL لـ PHP
  • نسخ NGINX الثنائية للاختبار للإصدارات التي تريد مقارنتها
  • صلاحية ربط منفذ الاستماع المُعدّ في NGINX

لسير العمل المعتمد على الحاويات:

  • Docker
  • Docker Compose v2

يستمع الإعداد النموذجي على المنفذ 80، وهو ما يتطلب عادة صلاحيات الجذر (root). لمختبر محلي غير مميز، غيّر listen 80; في nginx_vulnerable.conf إلى منفذ مرتفع متاح مثل 8080، ثم استخدم عنوان الهدف المطابق في أمر PHP.

الإعداد

اجعل سكربتات الشل قابلة للتنفيذ:

root@kitploit:~
chmod +x nginx_config_verify.sh run_lab_comparison.sh

تأكد من أن PHP يدعم cURL:

root@kitploit:~
php -m | grep -i curl

تأكد من أن كل نسخة ثنائية من NGINX يمكنها طباعة إصدارها:

root@kitploit:~
/path/to/nginx -V

إعداد المختبر

يحتوي ملف nginx_vulnerable.conf المقدم على النمط المطلوب للاختبار:

root@kitploit:~
location /exploit {
    proxy_pass http://127.0.0.1:8081;
    proxy_http_version 2;
    proxy_set_body $request_body;
    proxy_set_header Host $host;
    proxy_set_header Content-Length $content_length;
}

تفاصيل مهمة:

  • proxy_http_version 2 يفعّل بروكسي HTTP/2 إلى سجل upstream.
  • proxy_set_body $request_body يستخدم نص طلب يتحكم فيه العميل.
  • client_max_body_size 20m يسمح بجسم الطلب المُصنّع بحجم 16 MiB المستخدم في سكربت التحقق.
  • يستمع سجل upstream على 127.0.0.1:8081 افتراضيًا.

يحافظ إعداد Docker المحدد في docker/nginx_vulnerable.docker.conf على نفس نمط الوكيل القابل للاستغلال، لكنه يستمع على منفذ الحاوية 8080 ويوصل إلى اسم خدمة Compose upstream:8081.

بدء سريع عبر Docker: مختبر NGINX 1.29.4

ينشئ Dockerfile نسخة NGINX 1.29.4 من المصدر ويُثبّت الأدوات المطلوبة للمختبر من PHP/Python. ثم يشغّل Compose ثلاث خدمات من نفس الصورة:

  • upstream: سجل إطارات HTTP/2 الخام
  • nginx: NGINX 1.29.4 القابل للاستغلال باستخدام docker/nginx_vulnerable.docker.conf
  • runner: أمر تحقق PHP لمرة واحدة

قم ببناء صورة المختبر:

root@kitploit:~
docker compose build

شغّل سجل upstream وNGINX القابل للاستغلال:

root@kitploit:~
docker compose up -d upstream nginx

تأكد من إصدار NGINX المرفق:

root@kitploit:~
docker compose exec nginx nginx -V

شغّل سكربت التحقق داخل شبكة Compose:

root@kitploit:~
docker compose --profile run run --rm runner

يستخدم المشغّل هذه الوسائط داخل الحاوية:

root@kitploit:~
php /lab/cve_2026_42926_lab.php \
  http://nginx:8080/exploit \
  /lab/upstream_logs \
  /lab/nginx_config_verify.sh \
  /usr/local/nginx/sbin/nginx \
  /lab/docker/nginx_vulnerable.docker.conf \
  /exploit

تُكتب سجلات upstream المُنشأة إلى دليل المضيف:

root@kitploit:~
./upstream_logs/

كما يتم كشف خدمة NGINX للمضيف على:

root@kitploit:~
http://localhost:8080/version

أوقف وأزل حاويات المختبر:

root@kitploit:~
docker compose down

بدء سريع: تشغيل تحقق واحد

شغّل سجل upstream المُتحكم به:

root@kitploit:~
python3 upstream_frame_logger.py 8081 ./upstream_logs

في طرفية أخرى، شغّل NGINX مع الإعداد النموذجي:

root@kitploit:~
/path/to/nginx -c "$PWD/nginx_vulnerable.conf"

شغّل سكربت التحقق:

root@kitploit:~
php cve_2026_42926_lab.php \
  http://localhost/exploit \
  ./upstream_logs \
  ./nginx_config_verify.sh \
  /path/to/nginx \
  "$PWD/nginx_vulnerable.conf" \
  /exploit

أوقف NGINX بعد التشغيل:

root@kitploit:~
/path/to/nginx -s stop

إذا غيّرت NGINX ليستمع على منفذ آخر، حدّث الوسيطة الأولى. على سبيل المثال:

root@kitploit:~
php cve_2026_42926_lab.php http://localhost:8080/exploit ./upstream_logs ./nginx_config_verify.sh /path/to/nginx "$PWD/nginx_vulnerable.conf" /exploit

بدء سريع: مقارنة النسخة القابلة للاستغلال بالنسخة المُصححة

حدد مسارات نسختي NGINX الثنائيتين وشغّل أداة المقارنة:

root@kitploit:~
VULNERABLE_NGINX=/usr/local/nginx_1.29.4/sbin/nginx \
PATCHED_NGINX=/usr/local/nginx_1.30.1/sbin/nginx \
bash run_lab_comparison.sh

تجاوزات إعداد اختيارية:

root@kitploit:~
VULNERABLE_NGINX=/path/to/vulnerable/nginx \
PATCHED_NGINX=/path/to/patched/nginx \
VULNERABLE_CONFIG="$PWD/nginx_vulnerable.conf" \
PATCHED_CONFIG="$PWD/nginx_vulnerable.conf" \
bash run_lab_comparison.sh

يكتب سكربت المقارنة:

  • vulnerable_result.txt
  • patched_result.txt
  • upstream_logs_vulnerable/
  • upstream_logs_patched/

الفحص اليدوي للإعداد

استخدم nginx_config_verify.sh مباشرة عندما تريد فقط فحص ما إذا كان الإعداد يحتوي على النمط القابل للاستغلال:

root@kitploit:~
./nginx_config_verify.sh /path/to/nginx "$PWD/nginx_vulnerable.conf" /exploit

تتحقق الأداة المساعدة من:

  • proxy_http_version 2
  • proxy_set_body مع متغير
  • client_max_body_size بقيمة 16 MiB على الأقل

وسائط السكربت

يقبل cve_2026_42926_lab.php وسائط موضعية:

root@kitploit:~
php cve_2026_42926_lab.php <target_url> <upstream_log_dir> <config_script> <nginx_binary> <nginx_config> <location> [version_url]

القيم الافتراضية:

الأحكام ورموز الخروج

يُرجع cve_2026_42926_lab.php واحدًا من ثلاثة أحكام:

يتطلب الدليل الإيجابي أن يربط السكربت بين علامة التشغيل، وترويسة إطار upstream المُلاحَظة، وعلامة الإطار المحقون، وإصدار NGINX المتأثر.

المخرجات

يكتب سجل upstream ملفات JSON بأسماء مثل:

root@kitploit:~
frames_<timestamp>.json

يحتوي كل سجل على بيانات وصفية مُحلَّلة لإطارات HTTP/2، ومقتطفات من الحمولة، وإزاحات البايت، وعلامات اكتشاف الحقن، وحقول ربط التشغيل.

يخزّن إطار المقارنة أدلة سجلات منفصلة لتشغيلات النسخة القابلة للاستغلال والنسخة المصححة حتى لا تختلط الأدلة من عمليتي التنفيذ.

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

إذا أبلغ سكربت PHP أن أداة فحص الإعداد غير قابلة للتنفيذ، شغّل:

root@kitploit:~
chmod +x nginx_config_verify.sh

إذا أعاد الطلب 413 Request Entity Too Large، فزد client_max_body_size إلى 16m على الأقل؛ يستخدم الإعداد النموذجي 20m.

إذا لم يتم إنشاء أي سجلات upstream، تحقق من أن:

  • upstream_frame_logger.py يعمل.
  • NGINX يوصل إلى 127.0.0.1:8081.
  • عنوان الهدف يشير إلى مستمع NGINX المُعد.
  • وصل الطلب إلى موقع /exploit.

إذا فشل NGINX في ربط المنفذ 80، فإما شغّله بالصلاحيات المناسبة في بيئة مختبر أو غيّر الإعداد إلى منفذ مرتفع مثل 8080.

إذا كانت نتيجة المقارنة غير حاسمة، فافحص vulnerable_result.txt وpatched_result.txt وأدلة السجلات المقابلة لـ upstream للتحقق من الشرط المسبق الفاشل.

الرخصة

هذا المشروع مرخّص بموجب رخصة MIT. راجع LICENSE للحصول على التفاصيل.

تنزيل الأداة
الملفالوصف
README.mdوثائق المشروع.
LICENSEرخصة MIT.
Dockerfileيُنشئ صورة مختبر متكاملة تحتوي على NGINX 1.29.4 وPHP CLI/cURL وPython وسكربتات المشروع.
docker-compose.ymlيشغّل خدمة NGINX القابلة للاستغلال، وسجل إطارات upstream، ومشغّل تحقق اختياري.
cve_2026_42926_lab.phpسكربت التحقق الرئيسي للمختبر. يتحقق من الشروط المسبقة للإصدار/الإعدادات، ويرسل الطلب المُصنّع، ويفحص سجلات upstream، ويعيد حكمًا.
nginx_vulnerable.confإعداد NGINX نموذجي يحتوي على نمط الوكيل القابل للاستغلال المستخدم في تشغيلات المقارنة بين النسخة القابلة للاستغلال والمصححة.
docker/nginx_vulnerable.docker.confإعداد NGINX خاص بـ Docker يستخدم نفس النمط القابل للاستغلال واكتشاف خدمات Compose.
nginx_config_verify.shأداة مساعدة تتحقق مما إذا كان إعداد NGINX الهدف يحتوي على نمط الوكيل القابل للاستغلال المطلوب.
upstream_frame_logger.pyسجل upstream خام مُتحكم به لبروتوكول HTTP/2 يُستخدم لالتقاط الإطارات المستقبلة من NGINX وفحصها.
run_lab_comparison.shينسّق تشغيلات المقارنة بين النسخة القابلة للاستغلال والنسخة المصححة.
.dockerignoreيُبقي السجلات المُنشأة وبيانات IDE الوصفية خارج سياق بناء Docker.
الوسيطةالقيمة الافتراضية
target_urlhttp://localhost/exploit
upstream_log_dir./upstream_logs
config_script./nginx_config_verify.sh
nginx_binarynginx
nginx_config/etc/nginx/nginx.conf
location/exploit
version_urlhttp://localhost/version
الحكمالمعنىرمز الخروج
positiveلوحظ دليل على حقن الإطارات وارتبط بعملية التشغيل.0
negativeتحققت الشروط المسبقة ولم يُلاحظ أي دليل على الحقن.1
inconclusiveفشل شرط مسبق واحد أو أكثر أو فشلت فحوصات الأدلة.2