
PoC-эксплойт для CVE-2018-11736, затрагивающий Pluck CMS версий до 4.7.7-dev2 с уязвимостью загрузки файлов
Отказ от ответственности ⚠️: Данный эксплойт был разработан на Rust в первую очередь как учебное упражнение по программированию. Пожалуйста, извините за возможное отсутствие технической строгости или неидиоматические паттерны кода. Кроме того, это не моё открытие; при написании этого эксплойта я опирался на официальные отчёты.
Эксплойт PoC для CVE-2018-11736, затрагивающий Pluck CMS версий до 4.7.7-dev2. Уязвимость находится в /data/inc/images.php, что позволяет злоумышленнику загружать произвольные файлы. Загрузив вредоносный файл .htaccess, замаскированный под MIME-тип image/jpeg, можно заставить веб-сервер интерпретировать файлы .jpg как PHP-скрипты, что приводит к выполнению произвольного PHP-кода.
Для компиляции main.rs необходимо установить Cargo.
cargo build
Также требуется действительный аутентифицированный файл cookie сессии целевого экземпляра Pluck CMS:
./CVE-2018-11736 -h
CVE-2018-11736 exploit. Uploads a malicious .htaccess to force the web server to interpret .jpg files as PHP scripts, leading to Remote Code Execution (RCE)
Usage: CVE-2018-11736 --cookie <COOKIE> --base-url <BASE_URL> --hta-path <HTACCESS> --image-path <IMAGE>
Options:
-c, --cookie <COOKIE> Session Cookie (Once you have logged in succesfully). Format: xxxxxxxxxxxx
-u, --base-url <BASE_URL> Base URL (e.g. http://localhost)
-H, --hta-path <HTACCESS> Path to the .htaccess file
-i, --image-path <IMAGE> Path to the fake image file
-h, --help Print help
-V, --version Print version
Для обеспечения воспроизводимости и безопасного тестирования можно развернуть уязвимый экземпляр Pluck CMS v4.7.4-dev5 с помощью Docker. Для развертывания необходимо скачать .zip-архив уязвимой версии:
wget https://github.com/pluck-cms/pluck/archive/refs/tags/4.74-dev5.zip
Затем выполните следующую команду в той же директории, где находятся файлы Docker:
docker-compose up -d
Веб-приложение будет доступно по адресу http://localhost:8080. Если вы хотите открыть TTY внутри контейнера:
docker exec -it pluck-cms bash
Здесь показан PoC в действии, демонстрирующий загрузку вредоносной конфигурации и RCE.