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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
lighttpd-win32-dotdot-space — lighttpd 1.4.85 - عالي - عن بُعد - مسار - Win32 الأصلي GET /..%20/ يقرأ خارج جذر المستند | Kitploit
أدوات/GitHubGitHub/abraxas/lighttpd-win32-dotdot-space
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقمختبرات وتدريب عملي
GitHubabraxas/lighttpd-win32-dotdot-space

lighttpd-win32-dotdot-space

lighttpd 1.4.85 - عالي - عن بُعد - مسار - Win32 الأصلي GET /..%20/ يقرأ خارج جذر المستند

عرض المستودع
4منذ 6 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - lighttpd-win32-dotdot-space

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  lighttpd-win32-dotdot-space

التقرير: https://abraxaslabs.tech/research/lighttpd-win32-dotdot-space

lighttpd-win32-dotdot-space

الفئة: قراءة ملف الوصول: عن بُعد

lighttpd 1.4.85 (4852959) - lighttpd

يقوم _WIN32 الأصلي في staticfile بضم document-root إلى rel_path بعد buffer_path_simplify. لا يقوم Simplify بطي ../ إلا عندما يكون البايت الثالث هو /. يقوم http_response_prepare_physical بإزالة المسافات والنقاط اللاحقة من المسار بأكمله فقط. لذلك يبقى GET /..%20/windows/win.ini على هيئة /.. /windows/win.ini. بعد ذلك، تسمح _wstati64 / _wopen بدون بادئة \\?\ لـ Win32 بإزالة المسافة لكل مكوّن ومعاملة ذلك المقطع على أنه ...

طلب GET/HEAD غير مُصادَق على lighttpd الأصلي على Windows يقرأ ملفًا عاديًا خارج document-root يمكن لحساب العامل فتحه. لا ينطبق هذا على Unix/Linux. قراءة ملف، وليست RCE.

المختبر عبارة عن أداة (gadget) لتلك الدوال المثبَّتة. وهو ليس عامل Win32 أصليًا حيًّا. يستخدم السطر الأخير how=gadget.

المعرّفلا يوجد CVE بعد
الفئةقراءة ملف (اجتياز المسار، ..%20/ الأصلي على Win32)
الوصولعن بُعد (GET/HEAD غير مُصادَق)
CWECWE-22
CVSSعالٍ: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
المنتجlighttpd1.4
المتأثر1.4.85 (4852959e67ef51ea68084984400d3264b854c97d) _WIN32 الأصلي
المصادقةلا شيء. mod_staticfile الافتراضي
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط، how=gadget

ما يمكن للمهاجم فعله

يتطلب lighttpd أصليًا على Windows يقدّم الملفات الثابتة. يجب أن يكون حساب العامل قادرًا على فتح الملف العادي الهدف.

الصلاحيةالطريقة / نقطة الوصولمُثبَت في المختبر أم مُستنتَج
قراءة ملف خارج document-rootGET /..%20/<name> غير مُصادَقمُثبَت في المختبر (gadget). جسم HTTP 200 هو السرّ في المجلد الأب
نفس الفئة لمسافة/نقطة ASCII لاحقة أخرى على مكوّن .. غير نهائيفك ترميز url ثم simplify يُبقي .. مُثبَت في المختبر لـ %20. مُستنتَج للمسافة/النقطة اللاحقة الأخرى
HEAD على نفس المسارstaticfile HEADمُستنتَج. استخدم المختبر GET
سلبي: /../ حقيقيbuffer_path_simplify يطوي ../مُثبَت في المختبر. 404، مسار مبسَّط /windows/win.ini، لا دليل
سلبي: فتح Unix POSIX للسلسلة الفيزيائية غير المبسَّطةopen("/srv/htdocs/.. /windows/win.ini")مُثبَت في المختبر. ENOENT

مغلق على هذه البقايا: staticfile على Unix/Linux؛ Cygwin (نفس الإزالة، فتح POSIX)؛ %5C parseopt في 1.4.85؛ اسم CVE-2018-19052 المستعار؛ CVE-2014-2324 Host. ليست RCE. وليست كتابة.

كيف وجدته

ثبّتُ الوسم lighttpd-1.4.85. عشرون عملية بحث. staticfile الافتراضي على Unix/Linux، وFastCGI، والوكيل (proxy)، وTLS، والمصادقة، وHTTP/2، وalias/rewrite: لا شيء عند هذا المستوى. موجة المحلّل في 1.4.81-1.4.85 أغلقت بالفعل trailers، وتعارضات ترويسة CGI، وContent-Length الخلفي غير الصالح.

يطوي buffer_path_simplify فقط ../ عندما يكون walk[2] == '/'. إزالة WIN32 في http_response_prepare_physical (src/response.c 334-360) هي ذيل المسار بأكمله. تمرّر _wstati64 / _wopen (src/fs_win32.c 24-77) UTF-16 بدون \\?\، لذا يزيل Win32 المسافات اللاحقة لكل مكوّن ويصبح .. هو ... الضم الفيزيائي هو doc_root + rel_path دون فحص basedir بعد stat.

المسارات الخاطئة المسجّلة مسبقًا: اعتبار Unix ENOENT على أنه "ليس خطأً" (فهو الضابط السلبي)؛ ووصف Cygwin بأنه Win32 أصلي؛ والادعاء بأن %5C في 1.4.85 هو من هذا المخلف؛ وتضخيم قراءة الملف إلى RCE. المسرح: صدفة عكسية. أوراكل هو جسم 200 من أصل document-root.

المختبر

python3 lighttpd-win32-dotdot-space-Abraxas-Labs.py

أو

cd lab
./run.sh

المختبر هو محاكاة أمينة لـ buffer_urldecode_path وbuffer_path_simplify (خريطة '\\' في Win32)، وإزالة الذيل في response.c، و_wstati64 بدون \\?\. فتح Unix POSIX هو الضابط السلبي. يُنفَّذ حل Win32 على أنه نفس إزالة المسافات اللاحقة لكل مكوّن، ثم . / ..، ثم فتح POSIX للمسار المحلول. HTTP عبر الاسترجاع المحلي 127.0.0.1:19400.

  1. GET /index.html -> 200 public-index، دون شاهد.
  2. GET /../windows/win.ini -> 404، مبسَّط إلى /windows/win.ini.
  3. GET /..%20/windows/win.ini -> مفكوك إلى /.. /windows/win.ini، أبقى التبسيط على المسافة، Unix ENOENT، حلّ Win32 إلى /srv/windows/win.ini، 200 شاهد.
SUCCESS lighttpd-win32-dotdot-space how=gadget win32-get=200 unix-open=enoent simplify-kept-dotdot-space=yes LIGHTTPD-WIN32-DOTDOT-SPACE-WITNESS

الإصلاح

أزل المسافات والنقاط اللاحقة لكل مكوّن من مكوّنات المسار قبل simplify، أو ابدأ عمليات فتح Win32 بـ \\?\ وارفض أي مسار فعلي لا يبقى ضمن document-root.

المراجع

  • github.com/lighttpd/lighttpd1.4 وسم lighttpd-1.4.85 (4852959e67ef51ea68084984400d3264b854c97d)
  • src/buffer.c · src/response.c · src/fs_win32.c
  • قريب مُرقَّع (وليس هذه البقايا): CVE-2025-12642 trailers · 1.4.85 %5C parseopt · CVE-2018-19052 alias · CVE-2014-2324 Host
  • CWE-22

الترخيص

GNU Affero GPL v3.0. راجع LICENSE. للاستخدام في مختبر loopback فقط. دون أي ضمان.

تنزيل الأداة