
Полностью переработанный, совместимый с Python 3 эксплойт-скрипт для Tomcat Ghostcat (CVE-2020-1938 / CNVD-2020-10487) AJP Local File Inclusion
Этот проект предоставляет скрипт на Python для проверки уязвимости локального включения файлов протокола AJP Apache Tomcat (известной как Ghostcat, CVE-2020-1938 / CNVD-2020-10487).
Этот скрипт был полностью переработан и исправлен на основе первоначально распространявшейся версии для Python 2, полностью совместим с Python 3, исправлены проблемы совместимости с StringIO, кодировкой base64 и конкатенацией двоичных данных со строками, повышена стабильность на современных операционных системах.
При обработке протокола AJP (Apache JServ Protocol) Apache Tomcat по умолчанию открывает порт 8009 и не выполняет строгую проверку безопасности входящих атрибутов запроса. Злоумышленник может сконструировать вредоносный AJP-запрос, внедрив атрибуты javax.servlet.include.request_uri, javax.servlet.include.path_info и javax.servlet.include.servlet_path:
DefaultServlet Tomcat, заставляя его читать произвольные файлы в каталоге веб-приложения (например, WEB-INF/web.xml, файлы конфигурации и т.д.).JspServlet анализировать и компилировать этот файл как JSP, тем самым выполняя произвольные команды.Примечание: данная уязвимость поддерживает только локальное включение файлов (LFI) и не поддерживает прямое удаленное включение файлов (RFI).
Синтаксис командной строки:
python CNVD-2020-10487-Tomcat-Ajp-lfi.py <целевой_IP> [-p целевой_порт] [-f путь_к_файлу]
target (обязательно): IP-адрес или домен целевого хоста.-p, --port (опционально): Порт AJP, по умолчанию 8009.-f, --file (опционально): Относительный путь к целевому файлу для чтения, по умолчанию WEB-INF/web.xml.Базовая проверка (чтение файла web.xml по умолчанию):
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 127.0.0.1
Указание порта и файла (чтение пользовательского файла конфигурации):
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.1.100 -p 8009 -f WEB-INF/classes/application.properties
Если ваша система подвержена этой уязвимости, рекомендуется немедленно принять следующие меры защиты:
<Connector port="8009" protocol="AJP/1.3" ... /> в файле conf/server.xml.requiredSecret (в Tomcat 8.5.51/9.0.31 и более новых версиях — secret) для коннектора AJP, чтобы принудительно выполнять аутентификацию.Данный скрипт предназначен только для исследований в области кибербезопасности, обучения и внутреннего аудита безопасности в организациях в соответствии с требованиями. Запрещается использовать этот скрипт для несанкционированного сканирования или атак на целевые системы. Используя скрипт, вы обязаны соблюдать местные законы и нормативные акты. Пользователь несет единоличную ответственность за любые последствия, вызванные неправильным или незаконным использованием.