VIM O VI como SUDO

VIM O VI como SUDO

🔓 Escalada de privilegios con Vim/Vi cuando corre como SUDO

Uno de los vectores clasicos de escalada de privilegios en Linux aparece cuando un usuario tiene permiso para ejecutar vim o vi con sudo (por ejemplo, via una entrada en /etc/sudoers como (ALL) NOPASSWD: /usr/bin/vim). Aunque a primera vista parezca un permiso inofensivo -«solo» puede editar archivos-, en realidad basta para obtener una shell con privilegios de root. Vim incluye la capacidad de lanzar un shell interno, y si el propio editor se ejecuta como root, ese shell hereda los mismos privilegios.

💡 Paso 1 — Cambiar el shell interno de Vim

Una vez dentro de Vim (en modo comando), configuramos que shell debe usar internamente:

:set shell=/bin/sh

💡 Paso 2 — Invocar el shell

Con el shell ya configurado, lo lanzamos directamente desde Vim:

:shell

Esto abre una sesion de /bin/sh dentro del contexto del proceso de Vim. Si Vim se estaba ejecutando con sudo, ese shell tambien sera root.

💡 Alternativa directa

Tambien podemos saltarnos el paso de configurar el shell y lanzar uno directamente desde el modo comando de Vim:

!/bin/bash

El prefijo ! en Vim ejecuta un comando externo, y en este caso ese comando es simplemente abrir una shell de Bash, con los mismos privilegios que el proceso padre.

🚫 ¿Por que funciona esto?

El fallo no esta en Vim en si, sino en la configuracion de sudo. Cualquier binario que permita ejecutar comandos arbitrarios, abrir un shell o invocar otros programas (editores, paginadores, interpretes, herramientas de red…) es peligroso si se le concede sudo sin restricciones. Vim es solo uno de los ejemplos mas conocidos, documentado ampliamente en GTFOBins.

✅ Buenas practicas

Si necesitas dar permisos de sudo sobre un editor como Vim, revisa siempre GTFOBins antes de otorgar el permiso, evita el NOPASSWD salvo que sea estrictamente necesario, y valora restringir con sudoers el uso de comandos internos peligrosos (por ejemplo, mediante wrappers o politicas mas granulares). En una auditoria, comprobar los permisos de sudo -l del usuario y contrastarlos contra binarios conocidos por permitir escapes de shell deberia ser uno de los primeros pasos.

🔐 Conclusion

Un permiso de sudo aparentemente inofensivo sobre un editor de texto puede traducirse en una shell de root en cuestion de segundos. Vim y Vi son ejemplos perfectos de por que el principio de menor privilegio debe aplicarse tambien -y especialmente- a herramientas que consideramos «seguras» por costumbre.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio