Introducción
Ya sabes enumerar el sistema y el usuario. Ahora es momento de explorar los tres vectores de escalada más comunes en sistemas Linux: abuso de sudo, binarios con el bit SUID y archivos con permisos inseguros. Estos tres vectores cubren la mayoría de los escenarios que encontrarás en máquinas de práctica y, con frecuencia, en entornos reales.
¿Por qué estos tres vectores?
Los errores de configuración son más comunes que las vulnerabilidades de software. Un administrador que permite ejecutar find con sudo sin contraseña, un binario con SUID que nunca debió tenerlo, o un /etc/shadow legible por todos. Estos son errores humanos que ocurren con frecuencia. Aprenderlos te da un repertorio sólido que puedes aplicar en casi cualquier sistema Linux.
Vector 1: Abuso de sudo
El programa sudo permite a un usuario ejecutar comandos con los privilegios de otro usuario (por defecto, root). La configuración se define en /etc/sudoers. Cuando ejecutas sudo -l, ves exactamente qué programas puedes ejecutar y bajo qué condiciones.
El escenario más directo es cuando puedes ejecutar cualquier comando con sudo:
1$ sudo -l
2User user may run the following commands on target:
3 (root) NOPASSWD: ALL
4
5# Escalada trivial:
6$ sudo su
7root@target:#
8Pero el caso más interesante es cuando solo puedes ejecutar programas específicos. Muchos programas tienen formas de escapar a una shell, conocidas como shell escape sequences. El recurso de referencia es GTFOBins, que cataloga cientos de binarios con técnicas de escape.
1$ sudo -l
2User user may run the following commands on target:
3 (root) NOPASSWD: /usr/bin/find
4
5# find permite ejecutar comandos con -exec:
6$ sudo find /tmp -name "anything" -exec /bin/bash \;
7root@target:#
8Consejo
GTFOBins es tu referencia principal. Cada vez que sudo -l te muestre un binario, búscalo en GTFOBins. Si existe una entrada, probablemente puedes escalar.
Vector 2: Binarios SUID
El bit SUID (Set User ID) es un permiso especial. Cuando un archivo ejecutable tiene el bit SUID activado, se ejecuta con los privilegios del propietario del archivo, no del usuario que lo ejecuta. Si el propietario es root, el programa se ejecuta como root.
Muchos binarios legítimos necesitan SUID para funcionar (por ejemplo, passwd necesita escribir en /etc/shadow). El problema surge cuando binarios con SUID tienen funcionalidad que permite ejecutar comandos arbitrarios.
Para encontrar binarios con SUID en el sistema:
1$ find / -type f -perm -u+s -exec ls -l {} \; 2>/dev/null
2-rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/passwd
3-rwsr-xr-x 1 root root 44528 Jan 10 2019 /usr/bin/chsh
4-rwsr-xr-x 1 root root 963691 May 13 2017 /usr/sbin/exim-4.84-3
5La s en la posición de ejecución del propietario (rws) indica que el bit SUID está activado. Los dos primeros binarios (passwd, chsh) son normales en cualquier sistema. El tercero (exim-4.84-3) es un servicio de correo con una versión antigua. Eso debería llamar tu atención inmediatamente.
Al igual que con sudo, los binarios SUID se pueden buscar en GTFOBins. Además, si encuentras un binario SUID con una versión antigua de un software conocido, busca exploits públicos con herramientas como searchsploit.
Vector 3: Permisos inseguros en archivos sensibles
Ciertos archivos del sistema son críticos para la seguridad. Si tienen permisos demasiado abiertos, la escalada puede ser directa.
Los dos archivos más importantes son /etc/shadow (contiene los hashes de contraseñas) y /etc/passwd (contiene información de cuentas). En un sistema bien configurado, /etc/shadow solo es legible por root.
1# Verificar permisos de archivos sensibles:
2$ ls -l /etc/shadow
3-rw-r--r-- 1 root shadow 810 May 13 2017 /etc/shadow
4
5# Si es legible, extraer el hash de root:
6$ head -n 1 /etc/shadow
7root:$6$Tb/euwmK$OXA...hash...JI0:17298:0:99999:7:::
8Si puedes leer /etc/shadow, extraes el hash y lo crackeas offline con herramientas como john o hashcat. Si puedes escribir en él, reemplazas el hash de root con uno que conoces. Si puedes escribir en /etc/passwd, puedes insertar un hash directamente (por compatibilidad histórica, un hash en /etc/passwd tiene prioridad sobre /etc/shadow).
1# Generar un hash conocido:
2$ openssl passwd "mipassword"
3L9yLGxncbOROc
4
5# Si /etc/passwd es escribible, reemplazar la 'x' del root:
6root:L9yLGxncbOROc:0:0:root:/root:/bin/bash
7
8# Cambiar a root con la contraseña conocida:
9$ su root
10Password: mipassword
11root@target:#
12Más allá de estos dos archivos, busca permisos débiles en otros lugares:
1# Archivos escribibles en /etc:
2$ find /etc -maxdepth 1 -writable -type f 2>/dev/null
3
4# Directorios escribibles en todo el sistema:
5$ find / -writable -type d 2>/dev/null
6Priorizando los vectores
Cuando enumeras un sistema, vas a encontrar múltiples datos. La clave es priorizar. Una regla práctica para principiantes:
- Primero `sudo -l`: es el vector con mayor tasa de éxito y menor riesgo.
- Después archivos sensibles legibles/escribibles:
/etc/shadow,/etc/passwd, claves SSH en directorios inesperados, backups en/tmpo/var/backups. - Luego binarios SUID inusuales: ignora los estándar (
passwd,su,sudo,ping) y enfócate en los que no reconoces o tienen versiones antiguas. - Por último, exploits de kernel: solo si los tres anteriores no dan resultado.
Esta priorización no es arbitraria. Los primeros tres vectores explotan configuraciones, que son estables y predecibles. Los exploits de kernel explotan vulnerabilidades de software, que son más frágiles e impredecibles.
Errores comunes
Advertencia
No ignorar binarios SUID "normales". Binarios como cp, mv o vi con SUID pueden ser devastadores: cp puede copiar /etc/shadow, vi puede editar /etc/passwd. No descarten un binario solo porque su nombre suena inocente. Búscalo en GTFOBins.
Advertencia
No olvidar los backups. Incluso si /etc/shadow tiene permisos correctos, un administrador podría haber creado una copia de seguridad legible en /var/backups, /tmp o en el directorio home. Siempre explora esas ubicaciones.
Conclusión
Los tres vectores más comunes de escalada en Linux son el abuso de sudo (especialmente con NOPASSWD), los binarios con SUID mal asignado y los archivos sensibles con permisos débiles. GTFOBins es tu referencia esencial para los dos primeros. En la siguiente lección aprenderás a conectar estos hallazgos individuales en una ruta de escalada completa, la habilidad que separa a un principiante de un pentester efectivo.