
Инструмент для эксплуатации уязвимостей Apache 2.4.49-2.4.50: обход пути и удалённое выполнение кода (CVE-2021-41773, CVE-2021-42013). Сканирует списки URL, работает с CGI и без CGI, автоматизирует эксплуатацию.
Атака path traversal и RCE в Apache/2.4.49-2.4.50
-> Принимает список URL
-> Работает как для CGI, так и для non-CGI
-> Работает для Apache/2.4.49 - 2.4.50
$ git clone https://github.com/CalfCrusher/Path-traversal-RCE-Apache-2.4.49-2.4.50-Exploit
$ cd Path-traversal-RCE-Apache-2.4.49-2.4.50-Exploit && pip3 install -r requirements.txt
$ python3 main.py urls.txt
5 октября 2021 года была опубликована CVE, описывающая атаку path traversal на Apache HTTP Server v2.4.49. Ей был присвоен номер CVE-2021-41773, и она была выпущена со следующим описанием:
Была обнаружена ошибка в изменении, внесённом в нормализацию путей в Apache HTTP Server 2.4.49.
Злоумышленник мог использовать атаку path traversal для сопоставления URL с файлами за пределами ожидаемого корневого каталога документов. Если файлы за пределами корневого каталога документов не защищены директивой "require all denied", такие запросы могут быть успешными.
Кроме того, эта ошибка могла раскрывать исходный код интерпретируемых файлов, таких как CGI-скрипты.
Известно, что эта проблема эксплуатируется в реальных условиях. Эта проблема затрагивает только Apache 2.4.49 и не затрагивает более ранние версии.
Давайте разберём это и посмотрим, что это на самом деле значит для нас:
Из первой части мы видим, что недавнее изменение раскрыло эту ошибку. Нормализация путей означает, что мы преобразуем заданный путь в некую каноническую форму, которую понимает программное обеспечение, и таким образом сопоставляем его с реальной файловой системой. Это уже наводит нас на мысль об атаке path traversal, которая потенциально может читать непредусмотренные файлы.
Следующая часть подтверждает наши подозрения: мы можем использовать атаку path traversal для чтения ресурсов за пределами предполагаемой области.
Мы видим, что для этого требуется очень специфическая конфигурация. Файлам за пределами корневого каталога документов должны быть явно предоставлены разрешения. Это не конфигурация по умолчанию, и поэтому данный эксплойт должен быть бесполезен против большой доли Apache-хостов (к счастью).
Следующая часть говорит о CGI-скриптах, что ошибочно наводит нас на мысль, что для работы этой атаки может потребоваться включённый CGI или что путь каким-то образом связан с CGI.
Даже если наша конфигурация напрямую не затронута этой ошибкой, нам всё равно стоит как можно скорее обновить уязвимые версии.
Подводя итог: чтобы использовать эту уязвимость, нам потребуется очень необычная конфигурация на целевом сервере и атака через конкретный путь. Много исправлений спустя...
Итак, Apache исправил эту ошибку и выпустил v2.4.50. Конец истории, верно? Ну, не совсем. Всего через 2 дня, 7 октября, была выпущена новая CVE со ссылкой на предыдущую. В ней говорится, что исправление для предыдущей атаки path traversal было неполным, и мы всё ещё могли выполнять обход, если рассматриваемый путь использовал директиву alias для сопоставления своих URL с файловой системой. Этой CVE был присвоен номер CVE-2021-42013 со следующим описанием:
Было обнаружено, что исправление для CVE-2021-41773 в Apache HTTP Server 2.4.50 было недостаточным.
Злоумышленник мог использовать атаку path traversal для сопоставления URL с файлами за пределами каталогов, настроенных директивами, подобными Alias.
Если файлы за пределами этих каталогов не защищены обычной конфигурацией по умолчанию "require all denied", такие запросы могут быть успешными.
Если CGI-скрипты также включены для этих псевдонимных путей, это может позволить удалённое выполнение кода. Эта проблема затрагивает только Apache 2.4.49 и Apache 2.4.50 и не затрагивает более ранние версии.
Как и раньше, мы можем узнать здесь несколько вещей:
Хотя первый эксплойт якобы был исправлен, существует ещё один вход, позволяющий обход работать (запомните это на будущее).
Теперь мы ограничены директивами псевдонимных путей.
Каталоги за пределами обычных путей по-прежнему требуют явного предоставления разрешений.
Если CGI включён, то помимо простого раскрытия информации мы можем получить RCE.
Обратите внимание, что я не несу ответственности за любой ущерб и незаконное использование. Не будьте придурком!