
Uno script di exploit completamente rifattorizzato e compatibile con Python 3 per Tomcat Ghostcat (CVE-2020-1938 / CNVD-2020-10487) AJP Local File Inclusion
Questo progetto fornisce uno script Python per verificare la vulnerabilità di inclusione locale di file nel protocollo AJP di Apache Tomcat (comunemente nota come Ghostcat, CVE-2020-1938 / CNVD-2020-10487).
Questo script è stato completamente riprogettato e corretto rispetto alla versione Python 2 originale, è completamente compatibile con Python 3, risolve i problemi di compatibilità con StringIO, la codifica base64 e la concatenazione di dati binari e stringhe, migliorando la stabilità sui sistemi operativi moderni.
Quando Apache Tomcat gestisce il protocollo AJP (Apache JServ Protocol), la porta 8009 è aperta per impostazione predefinita e non vengono effettuati controlli di sicurezza rigorosi sugli attributi delle richieste in arrivo.
Un attaccante può costruire richieste AJP dannose per iniettare attributi come javax.servlet.include.request_uri, javax.servlet.include.path_info e javax.servlet.include.servlet_path:
DefaultServlet di Tomcat per leggere qualsiasi file nella directory dell'applicazione web (ad esempio WEB-INF/web.xml, file di configurazione, ecc.).JspServlet a interpretare e compilare quel file come JSP, realizzando così l'esecuzione remota di comandi.Nota: questa vulnerabilità supporta solo l'inclusione locale di file (LFI), non l'inclusione remota diretta (RFI).
Sintassi della riga di comando:
python CNVD-2020-10487-Tomcat-Ajp-lfi.py <IP_destinazione> [-p porta_destinazione] [-f percorso_file_destinazione]
target (obbligatorio): indirizzo IP o nome di dominio del server di destinazione.-p, --port (opzionale): porta AJP, predefinita 8009.-f, --file (opzionale): percorso relativo del file di destinazione da leggere, predefinito WEB-INF/web.xml.Rilevamento di base (legge il file web.xml predefinito):
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 127.0.0.1
Porta e file specificati (legge un file di configurazione personalizzato):
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.1.100 -p 8009 -f WEB-INF/classes/application.properties
Se il tuo sistema è affetto da questa vulnerabilità, si consiglia di adottare immediatamente le seguenti misure di protezione:
<Connector port="8009" protocol="AJP/1.3" ... /> in conf/server.xml.requiredSecret (o secret nelle versioni Tomcat 8.5.51/9.0.31 e successive) al connettore AJP per imporre l'autenticazione.Questo script è destinato esclusivamente a ricerca sulla sicurezza informatica, formazione e audit di conformità interni all'azienda. Non utilizzare questo script per sondaggi o attacchi illegali contro obiettivi non autorizzati. L'utente deve rispettare le leggi e i regolamenti locali durante l'utilizzo. L'utente si assume qualsiasi conseguenza derivante da un uso improprio o illegale.