
Демонстрирует эксплуатацию CVE-2024-4577, PHP CGI RCE на Windows, включая шаги атаки, развертывание обратной оболочки и симуляцию программы-вымогателя с анализом журналов.
CVE-2024-4577 — это уязвимость безопасности, затрагивающая PHP-серверы следующих версий:
Эта уязвимость представляет собой ошибку удаленного выполнения кода (RCE), которая возникает при использовании PHP CGI (Common Gateway Interface) на серверах Windows. Проблема связана с тем, что Windows неправильно интерпретирует некоторые символы из-за использования сопоставления символов "Best Fit" в некоторых языковых настройках. В данном случае модуль PHP CGI интерпретирует вредоносные символы как опции PHP, что позволяет атакующим выполнять вредоносные команды на сервере.
Начальный вектор атаки:
Для эксплуатации уязвимости добавьте следующую строку в URL уязвимого сайта:
?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
Используйте Burp Suite, чтобы перехватить этот запрос и отправить его в Repeater.
Изменение метода запроса: Преобразуйте перехваченный запрос в метод POST и выполните простой PHP-код, например:
<?php phpinfo();
Если уязвимость существует, в выводе отобразится информация, связанная с версией PHP.
В зависимости от целей атакующего могут применяться различные методы. Мой предпочтительный метод заключался в определении исполнения в каталоге автозагрузки Windows с помощью Burp Suite. Я преобразовал скрипт reverseshell.ps1 в исполняемый файл (exe) и поместил его туда.
Аналогичным образом я загрузил файл ransomware.ps1 в систему и успешно выгрузил документы, оставив только их зашифрованные версии.
Перед началом атаки необходимо активировать журналы 4688. Проанализировав журналы безопасности 4688 на моей Windows-машине, я обнаружил, что атака исходила от Apache в составе XAMPP. При проверке файлов Access.log я столкнулся с аномальным запросом, который вернул код состояния 200, что побудило меня найти этот URL в браузере. Я выявил уязвимость и принял меры предосторожности, такие как обновление версии PHP или отключение функции PHP CGI.
Поскольку созданная мной программа-вымогатель не была обфусцирована, мой код виден в журналах PowerShell. Это показывает, как я зашифровал данные. Для восстановления данных я запускаю файл encoded.ps1.
Эта симуляция подчеркивает потенциальные риски, связанные с CVE-2024-4577, и акцентирует важность защиты установок PHP. Поддержание PHP в актуальном состоянии и предотвращение неправильной конфигурации настроек CGI могут эффективно снизить такие уязвимости.