Basic Tomcat Info
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)
Evitar ejecutar como root
Para no ejecutar Tomcat como 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
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 credenciales de usuario y sus 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 el tiempo de ejecución.
Se espera que cada carpeta dentro de webapps
tenga la siguiente estructura.
El archivo más importante entre estos es WEB-INF/web.xml
, que se conoce 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 un compromiso 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 conocidas como JavaServer Pages
, que se pueden comparar con archivos PHP en un servidor Apache.
Aquí hay un ejemplo de archivo web.xml.
El web.xml
configuración 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 mapear solicitudes a /admin
con AdminServlet
. Esta configuración enviará cualquier solicitud recibida para /admin
a la clase AdminServlet.class
para su procesamiento. El web.xml
descriptor 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 tomcat-users.xml
archivo se utiliza para permitir o denegar el acceso a las páginas de administración /manager
y host-manager
.
El archivo nos muestra a qué proporciona 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 ha establecido una segunda contraseña débil admin
para la cuenta de usuario admin
.
Referencias
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated