🐧Linux - Abuso de permisos Sudo
Se pueden otorgar privilegios sudo a una cuenta, lo que permite que la cuenta ejecute ciertos comandos en el contexto de la raíz (u otra cuenta) sin tener que cambiar de usuario ni otorgar privilegios excesivos. Cuando sudo
se emite el comando, el sistema verificará si el usuario que emite el comando tiene los derechos adecuados, tal como se configura en /etc/sudoers
.
Al ingresar a un sistema, siempre debemos verificar si el usuario actual tiene algún privilegio sudo escribiendo sudo -l
. A veces, necesitaremos saber la contraseña del usuario para enumerar sus derechos sudo
, pero cualquier entrada de derechos con la opción NOPASSWD
se puede ver sin ingresar una contraseña.
Es fácil configurar esto incorrectamente. Por ejemplo, se le pueden otorgar permisos de nivel raíz a un usuario sin requerir una contraseña. O la línea de comando permitida puede especificarse de manera demasiado vaga, lo que nos permite ejecutar un programa de una manera no deseada, lo que da como resultado una escalada de privilegios. Por ejemplo, si se edita el archivo sudoers para otorgarle a un usuario el derecho a ejecutar un comando como tcpdump
en la siguiente entrada en el archivo sudoers: (ALL) NOPASSWD: /usr/sbin/tcpdump
un atacante podría aprovechar esto para aprovechar la opción postrotate-command .
Al especificar la flag -z
, un atacante podría usarla tcpdump
para ejecutar un script de shell, obtener un shell inverso como usuario root o ejecutar otros comandos privilegiados. Por ejemplo, un atacante podría crear el script de shell .test
que contenga un reverse shell y ejecutarlo de la siguiente manera:
Probemos esto. Primero, crea un archivo para ejecutar con postrotate-command
, agregando una línea simple de shell inverso.
A continuación, inicie un listener con netcat
en nuestro equipo atacante y ejecuta tcpdump
como root con postrotate-command
. Si todo sale como lo previsto, recibiremos una conexión de root.
Recibimos un shell root casi instantáneamente.
En las distribuciones más recientes, AppArmor ha predefinido los comandos que se usan con postrotate-command
, lo que evita de manera efectiva la ejecución de comandos. Hay dos prácticas recomendadas que siempre se deben tener en cuenta al otorgar derechos sudo
:
Los archivos binarios que aparecen en la entrada del archivo
sudoers
. De lo contrario, un atacante podría aprovechar el abuso de PATH (que veremos en la siguiente sección) para crear un archivo binario malicioso que se ejecutará cuando se ejecute el comando (es decir, si la entradasudoers
especificacat
en lugar de/bin/cat
es probable que se abuse de él).Otorgue derechos
sudo
con moderación y basándose en el principio del mínimo privilegio. ¿El usuario necesita derechos completossudo
? ¿Puede realizar su trabajo con una o dos entradas en el archivosudoers
? Limitar el comando privilegiado que un usuario puede ejecutar reducirá en gran medida la probabilidad de una escalada de privilegios exitosa.
Caso práctico
¿Qué comando puede ejecutar el usuario htb-student como root?
Observamos que el usuario htb-student solo puede ejecutar el comando /usr/bin/openssl
como sudo
Última actualización