10 KiB
Información básica de 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!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el merchandising oficial de PEASS y 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.
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 hoy.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
Evita ejecutar con root
Para no ejecutar Tomcat con root, una configuración muy común es establecer un servidor Apache en el puerto 80/443 y, si la ruta solicitada coincide con una expresión regular, la solicitud se envía a Tomcat que se ejecuta en un puerto diferente.
Estructura predeterminada
├── bin
├── conf
│ ├── catalina.policy
│ ├── catalina.properties
│ ├── context.xml
│ ├── tomcat-users.xml
│ ├── tomcat-users.xsd
│ └── web.xml
├── lib
├── logs
├── temp
├── webapps
│ ├── manager
│ │ ├── images
│ │ ├── META-INF
│ │ └── WEB-INF
| | └── web.xml
│ └── ROOT
│ └── WEB-INF
└── work
└── Catalina
└── localhost
- La carpeta
bin
almacena scripts y binarios necesarios para iniciar y ejecutar un servidor Tomcat. - La carpeta
conf
almacena varios archivos de configuración utilizados por Tomcat. - El archivo
tomcat-users.xml
almacena las credenciales de los usuarios y los roles asignados. - La carpeta
lib
contiene los diversos archivos JAR necesarios para el correcto funcionamiento de Tomcat. - Las carpetas
logs
ytemp
almacenan archivos de registro temporales. - La carpeta
webapps
es la raíz web predeterminada de Tomcat y alberga todas las aplicaciones. La carpetawork
actúa como una caché y se utiliza para almacenar datos durante la ejecución.
Se espera que cada carpeta dentro de webapps
tenga la siguiente estructura.
webapps/customapp
├── images
├── index.jsp
├── META-INF
│ └── context.xml
├── status.xsd
└── WEB-INF
├── jsp
| └── admin.jsp
└── web.xml
└── lib
| └── jdbc_drivers.jar
└── classes
└── AdminServlet.class
El archivo más importante entre estos es WEB-INF/web.xml
, conocido como el descriptor de implementación. Este archivo almacena información sobre las rutas utilizadas por la aplicación y las clases que manejan estas rutas.
Todas las clases compiladas utilizadas por la aplicación deben almacenarse en la carpeta WEB-INF/classes
. Estas clases pueden contener lógica empresarial importante, así como información sensible. Cualquier vulnerabilidad en estos archivos puede llevar a la comprometación total del sitio web. La carpeta lib
almacena las bibliotecas necesarias para esa aplicación en particular. La carpeta jsp
almacena Jakarta Server Pages (JSP), anteriormente conocido como JavaServer Pages
, que se pueden comparar con los archivos PHP en un servidor Apache.
Aquí hay un ejemplo de archivo web.xml.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>com.inlanefreight.api.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdminServlet</servlet-name>
<url-pattern>/admin</url-pattern>
</servlet-mapping>
</web-app>
El archivo de configuración web.xml
anterior define un nuevo servlet llamado AdminServlet
que está mapeado a la clase com.inlanefreight.api.AdminServlet
. Java utiliza la notación de punto para crear nombres de paquetes, lo que significa que la ruta en disco para la clase definida anteriormente sería:
classes/com/inlanefreight/api/AdminServlet.class
A continuación, se crea un nuevo mapeo de servlet para asociar las solicitudes a /admin
con AdminServlet
. Esta configuración enviará cualquier solicitud recibida para /admin
a la clase AdminServlet.class
para su procesamiento. El descriptor web.xml
contiene mucha información sensible y es un archivo importante para verificar al aprovechar una vulnerabilidad de Inclusión de Archivos Locales (LFI).
tomcat-users
El archivo tomcat-users.xml
se utiliza para permitir o denegar el acceso a las páginas de administración /manager
y host-manager
.
<?xml version="1.0" encoding="UTF-8"?>
<SNIP>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
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
The users below are wrapped in a comment and are therefore ignored. If you
wish to configure one or more of these users for use with the manager web
application, do not forget to remove the <!.. ..> that surrounds them. You
will also need to set the passwords to something appropriate.
-->
<SNIP>
!-- user manager can access only manager section -->
<role rolename="manager-gui" />
<user username="tomcat" password="tomcat" roles="manager-gui" />
<!-- user admin can access manager and admin section both -->
<role rolename="admin-gui" />
<user username="admin" password="admin" roles="manager-gui,admin-gui" />
</tomcat-users>
El archivo nos muestra a qué tiene acceso cada uno de los roles manager-gui
, manager-script
, manager-jmx
y manager-status
. En este ejemplo, podemos ver que un usuario tomcat
con la contraseña tomcat
tiene el rol manager-gui
, y se establece una segunda contraseña débil admin
para la cuenta de usuario admin
.
Referencias
Encuentra las vulnerabilidades que más importan para que puedas solucionarlas más rápido. Intruder realiza un seguimiento de tu superficie de ataque, ejecuta escaneos de amenazas proactivas, encuentra problemas en toda tu pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. Pruébalo gratis hoy mismo.
{% 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!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag 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 hacktricks y al repositorio hacktricks-cloud.