Questa vulnerabilità si presenta quando troviamo un file eseguibile tramite root (o con privilegi più elevati di quelli in possesso) che ci permette di eseguire operazioni che ci danno la possibilità di manipolare cose come per esempio l’esecuzione di comandi esterni, accesso a risorse scrivibili, ecc. Per trovare questi file possiamo cercare i file che al posto della x di eseguibile dalla parte del proprietario del file troviamo s, per capire meglio cosa sono questi file particolari vai alla pagina SUDO e SUID. Tramite il comando ls -l lo possiamo verificare:
ls -l
total 24
-rwsr-xr-x 1 root root 16712 Jun 20 2021 testOppure per automatizzare il processo possiamo usare il comando find che ci trova tutti i file che hanno il bit SUID attivo (il bit SUID è una funzione di Linux che permette agli utenti di eseguire file con permesso di root).
Il comando da utilizzare è il seguente:
find / -perm -4000 2>/dev/nullOppure anche uno dei seguenti che cercheranno file e directory che possiamo modificare:
find / -writable 2>/dev/null
find / -writable 2>/dev/null | cut -d "/" -f 2,3 | grep -v proc | sort -uOra, se troviamo un programma che ha lo scopo di eseguire un altro programma con permessi di root e quell’altro programma non ha una rotta assoluta specificata noi siamo in grado di creare un file con lo stesso nome ed inserirlo in una directory del $PATH alla quale noi abbiamo permesso di scrittura, in caso non avessimo accesso a nessuna directory con permesso di scrittura possiamo sempre utilizzare la cartella tmp ed aggiungerla al PATH tramite il comando:
export PATH=/tmp:$PATHQuindi se ora noi andiamo nella cartella tmp e creiamo un nuovo file con ad esempio questo contenuto:
echo "/bin/bash" > thmIpotizzando che il file thm sia la risorsa chiamata dal file che ha attivo il bit SUID siamo in grado, dopo avergli dato i permessi esecuzione tramite chmod +x, di ottenere una shell di root perchè il file verrà eseguito con privilegi di root.