
Docker-лаборатория для эксплуатации обхода пути и удалённого выполнения кода (RCE) в Apache CVE-2021-41773 с Python-скриптом эксплойта, демонстрирующая анализ уязвимости и стратегии смягчения последствий.
Этот репозиторий воспроизводит публично раскрытую и исправленную уязвимость в контролируемой лабораторной среде Docker в образовательных и исследовательских целях.
Среда намеренно уязвима и должна разворачиваться только в изолированных тестовых средах. Не пытайтесь эксплуатировать системы без явного разрешения.
Цель этого проекта — продемонстрировать анализ уязвимостей, эксплуатацию и стратегии смягчения последствий.
Обход пути и удалённое выполнение кода
# Navigate to the project folder
cd Apache-CVE-2021-41773
# Validate compose syntax
docker compose config
# Start the lab
docker compose up -d --build
# Check that everything is running
docker compose ps
В Apache 2.4.49 появилась ошибка в нормализации URL-путей. Закодированные последовательности, такие как .%2e (эквивалент ..), не обрабатываются должным образом, что позволяет атакующему перемещаться по дереву каталогов за пределами DocumentRoot.
Если включён mod_cgi и корневой каталог (/) настроен с Require all granted, атакующий может:
/bin/sh (RCE)exploit.py)Без внешних зависимостей — используется только стандартная библиотека Python.
Авто python exploit.py Проверка уязвимости + запуск id в качестве демонстрации
Чтение файла python exploit.py -f /etc/shadow Чтение любого файла через RCE
RCE python exploit.py -c "whoami" Выполнение одной команды
Оболочка python exploit.py -i Интерактивная псевдооболочка
Произвольная цель python exploit.py -u http://target:8888 Нацеливание на удалённый хост
Сначала проверим, что среда уязвима.
Как и ожидалось, команда возвращает id uid=0(root) gid=0(root) groups=0(root)
Создадим reverse shell:
Мы вошли как root
Как видите, в /proc/1/environ имеется ошибка конфигурации — мы получили SQL-пароль Это выявляет раскрытые секреты, вызванные небезопасной конфигурацией контейнера
Используя извлечённые учётные данные, мы подключаемся к базе данных MySQL и выводим хранящиеся данные

Никогда не воспроизводите эти конфигурации в производственной среде.