
Um script de exploit totalmente refatorado e compatível com Python 3 para Tomcat Ghostcat (CVE-2020-1938 / CNVD-2020-10487) AJP Local File Inclusion
Este projeto fornece um script de verificação em Python para validar a vulnerabilidade de inclusão local de arquivos no protocolo AJP do Apache Tomcat (conhecida como Ghostcat, CVE-2020-1938 / CNVD-2020-10487).
Este script foi totalmente reestruturado e corrigido a partir da versão original em Python 2 que circulava, sendo totalmente compatível com Python 3. Foram corrigidos problemas de compatibilidade relacionados a StringIO, codificação base64 e à concatenação de dados binários com strings, aumentando a estabilidade em sistemas operacionais modernos.
Ao processar o protocolo AJP (Apache JServ Protocol), o Apache Tomcat habilita a porta 8009 por padrão e não realiza uma validação de segurança rigorosa dos atributos de requisição recebidos.
Um atacante pode, ao construir uma requisição AJP maliciosa, injetar atributos como javax.servlet.include.request_uri, javax.servlet.include.path_info e javax.servlet.include.servlet_path:
DefaultServlet do Tomcat para ler qualquer arquivo dentro do diretório da aplicação web (como WEB-INF/web.xml, arquivos de configuração, etc.).JspServlet a interpretar e compilar o arquivo como JSP, conseguindo assim a execução remota de comandos.Nota: essa vulnerabilidade suporta apenas a inclusão local de arquivos (LFI), não suporta inclusão remota de arquivos (RFI) direta.
Sintaxe da linha de comando:
python CNVD-2020-10487-Tomcat-Ajp-lfi.py <目标IP> [-p 目标端口] [-f 目标文件路径]
target (obrigatório): endereço IP ou domínio do host de destino.-p, --port (opcional): porta AJP, o padrão é 8009.-f, --file (opcional): caminho relativo do arquivo de destino que se deseja ler, o padrão é WEB-INF/web.xml.Detecção básica (lê o web.xml padrão):
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 127.0.0.1
Especificando porta e arquivo (lê um arquivo de configuração personalizado):
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.1.100 -p 8009 -f WEB-INF/classes/application.properties
Se o seu sistema for afetado por essa vulnerabilidade, recomenda-se tomar imediatamente as seguintes medidas de proteção:
<Connector port="8009" protocol="AJP/1.3" ... /> em conf/server.xml.requiredSecret ao Connector AJP (nas versões 8.5.51/9.0.31 e posteriores do Tomcat, use secret) para forçar a autenticação.Este script destina-se exclusivamente a pesquisa em segurança cibernética, educação e auditorias de segurança internas em conformidade com as políticas corporativas. Não use este script para sondagens ou ataques ilegais contra alvos não autorizados. Ao utilizá-lo, o usuário deve cumprir as leis e regulamentos locais. Quaisquer consequências resultantes do uso inadequado ou ilegal são de inteira responsabilidade do usuário.