escalada de privilegios en linux
Escalada de Privilegios en Linux
Section titled “Escalada de Privilegios en Linux”Durante una explotación probablemente consigamos acceso a una cuenta con pocos privilegios, para poder explotar el sistema por completo tenemos que conseguir acceso a la cuenta raíz.
Con una cuenta superusuario podemos:
- Capturar el tráfico
- Acceder a archivos confidenciales
- Conseguir el Hash NTLM si esta en dominio
- Aumentar la superficie de ataque
Enumeración para Escalada de Privilegios en Linux
Section titled “Enumeración para Escalada de Privilegios en Linux”La enumeración manual es el paso crítico tras obtener acceso inicial. Antes de lanzar herramientas automáticas, conviene revisar sistemáticamente los siguientes vectores.
1. Identificar situacion
Section titled “1. Identificar situacion”Nada más aterrizar en la shell, orienta el contexto del sistema, tu identidad y el entorno de ejecución:
# Identidad, grupos y hostwhoami && id && hostname
# Rutas de ejecución (revisar si hay rutas editables o '.' al inicio)echo $PATH
# Variables de entorno en memoria (tokens, API keys o credenciales)env
# Shells instaladas y binarios interactivos disponibles (tmux, screen)cat /etc/shells
# Información del procesador y arquitecturalscpu2. Información del Sistema, Kernel y Defensas
Section titled “2. Información del Sistema, Kernel y Defensas”Identifica la distribución y el kernel para buscar vulnerabilidades locales (LPE), comprobando si existen mecanismos de contención activos.
# Distribución y versión del SOcat /etc/os-release 2>/dev/null || cat /etc/lsb-release
# Versión del kernel y arquitecturauname -acat /proc/version{% hint style=“warning” %} Probar exploits de kernel en entornos reales conlleva un alto riesgo de causar un Kernel Panic o dejar el host inestable. {% endhint %}
- Defensas a verificar: Detectar si el sistema utiliza AppArmor, SELinux, iptables/ufw, Fail2ban o Snort para evitar bloqueos innecesarios durante las pruebas.
3. Red Interna y Conectividad
Section titled “3. Red Interna y Conectividad”Analiza interfaces, rutas y resoluciones DNS para identificar pivotes o servicios internos.
# Interfaces y subredes asignadasip -a || ifconfig
# Tabla de rutas (puertas de enlace y redes adyacentes)route || netstat -rn
# Tabla ARP (hosts con los que se ha comunicado el objetivo recientemente)arp -a
# Servidores DNS configurados (clave para detectar controladores de dominio)cat /etc/resolv.conf4. Procesos, Servicios y Usuarios
Section titled “4. Procesos, Servicios y Usuarios”Busca servicios desactualizados, tareas en ejecución con privilegios de root y sesiones abiertas:
# Procesos ejecutados por rootps aux | grep root
# Procesos interactivos y usuarios conectadosps au
# Monitorizar procesos en segundo plano/cron en tiempo real (sin ser root)./pspy64 -pf -i 10005. Privilegios Sudo
Section titled “5. Privilegios Sudo”Comprueba los comandos delegados al usuario actual:
sudo -l- Si encuentras cualquier comando autorizado (incluso reglas tipo
(ALL, !root)), contrástalo de inmediato en GTFOBins. - Ejemplo (tcpdump con parámetro post-rotate):
sudo /usr/sbin/tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root- Variables de entorno: Si la salida refleja
env_keep+=LD_PRELOAD, puedes inyectar una librería.socompilada al invocar un binario permitido con sudo.
6. Usuarios, Grupos y Formatos de Hashes
Section titled “6. Usuarios, Grupos y Formatos de Hashes”Revisa las cuentas del sistema, pertenencia a grupos privilegiados y posibles contraseñas accesibles.
# Filtrar usuarios con acceso interactivo a consolagrep -E "(/bin/bash|/bin/sh)$" /etc/passwd
# Miembros de un grupo específicogetent group sudo
# Identificar hashes si /etc/shadow o /etc/passwd exponen contraseñascat /etc/shadow 2>/dev/nullAlgoritmos Comunes según el Prefijo del Hash
Section titled “Algoritmos Comunes según el Prefijo del Hash”| Prefijo | Algoritmo |
|---|---|
$1$... |
Salted MD5 |
$2a$... / $2y$... |
Blowfish (BCrypt) |
$5$... |
SHA-256 |
$6$... |
SHA-512 |
$7$... |
Scrypt |
$argon2i$... |
Argon2 |
7. Directorios de Usuario, Claves SSH y Archivos Ocultos
Section titled “7. Directorios de Usuario, Claves SSH y Archivos Ocultos”Inspecciona directorios personales, rastros de sesiones anteriores y claves privadas:
# Listar directorios personalesls -la /home/
# Claves privadas SSHls -la ~/.ssh/find /home -name "id_rsa*" 2>/dev/null
# Historial de comandoscat ~/.bash_historyhistory
# Buscar archivos o carpetas ocultas en el sistemafind / -type f -name ".*" -exec ls -l {} \; 2>/dev/nullfind / -type d -name ".*" -ls 2>/dev/null8. Tareas Programadas (Cron Jobs)
Section titled “8. Tareas Programadas (Cron Jobs)”Revisa automatizaciones que corran como root y tengan permisos débiles:
# Tareas diarias, horarias o del crontab generalls -la /etc/cron*cat /etc/crontab 2>/dev/null9. Permisos Débiles y Archivos Temporales
Section titled “9. Permisos Débiles y Archivos Temporales”Rutas donde escribir herramientas o scripts ejecutados por otros usuarios:
# Directorios modificables por cualquier usuario (world-writable)find / -path /proc -prune -o -type d -perm -o+w 2>/dev/null
# Archivos modificables por cualquier usuariofind / -path /proc -prune -o -type f -perm -o+w 2>/dev/null- Gestión de temporales y memoria:
/tmp: Se limpia tras reinicios o por políticas cortas (~10 días)./var/tmp: Persiste entre reinicios (retención habitual de hasta 30 días)./dev/shm: Montado en RAM, minimiza la escritura en disco.
10. Discos, Montajes y Red
Section titled “10. Discos, Montajes y Red”Revisa particiones desmontadas o montadas en busca de credenciales, copias de seguridad o comparticiones inseguras:
# Discos y particiones del hostlsblkdf -h
# Sistemas de archivos declarados en fstabcat /etc/fstab | grep -v "#" | column -t
# Comprobar trabajos o colas de impresión activaslpstat -p -d 2>/dev/null
# Verificar montajes NFS sin restricción de root (no_root_squash)showmount -e <target_IP>sudo mount -t nfs <target_IP>:/recurso /mnt11. Búsqueda Rápida de Secretos
Section titled “11. Búsqueda Rápida de Secretos”Cuando se buscan credenciales o flags conocidas sin necesidad de escalar previamente:
# Buscar patrones directos de flagsgrep -r -l 'HTB{' / 2>/dev/null
# Buscar archivos de configuraciónfind / ! -path "*/proc/*" -iname "*config*" -type f 2>/dev/nullCheat Sheet
Section titled “Cheat Sheet”| Objetivo | Comando |
|---|---|
| Identidad y Contexto | whoami && id && hostname |
| Variables y PATH | echo $PATH && env |
| Sistema y Kernel | uname -a | cat /etc/os-release |
| Defensas de Red | arp -a | route | cat /etc/resolv.conf |
| Permisos Sudo | sudo -l (Buscar en GTFOBins) |
| Usuarios con Shell | grep -E "(/bin/bash|/bin/sh)$" /etc/passwd |
| Miembros de un Grupo | getent group <grupo> |
| Binarios SUID | find / -perm -4000 -type f 2>/dev/null |
| Procesos en Tiempo Real | ./pspy64 -pf -i 1000 |
| Archivos/Carpetas Ocultos | find / -type f -name ".*" 2>/dev/null |
| Discos y Montajes | lsblk | df -h | cat /etc/fstab |
| Rutas Modificables (World-Writable) | find / -perm -o+w -type d 2>/dev/null |
| Búsqueda Recursiva de Flags | grep -r -l 'HTB{' / 2>/dev/null |