L'autore dell'attacco sta tentando di ottenere una shell in esecuzione come DavidGilmour
utente. Sulla base delle loro esplorazioni, la decisione è di provare a sfruttare una vulnerabilità nel binario shineon
perché quel binario è setuid a DavidGilmour
:
$ ls -lah /usr/local/bin/shineon
-rwsr-s--- 1 DavidGilmour RichardWright 7.3K Oct 25 07:58 /usr/local/bin/shineon
Notare s
nelle autorizzazioni. Ciò indica che quando viene eseguito shineon
, verrà eseguito come DavidGilmour
. Ma come shineon
è un programma con funzionalità limitate, non ha un comando start shell
. Invece, l'utente malintenzionato esamina la funzionalità fornita dalla shell:
1. Calendar
2. Who
3. Check Internet
4. Check Mail
5. Exit
e poi guarda le stringhe all'interno del binario. Le stringhe rilevanti sono:
/usr/bin/cal
/usr/bin/who
/sbin/ping -c 3 www.google.com
mail
L'utente malintenzionato indovina che quelle sono le stringhe di comando utilizzate per eseguire la funzionalità dell'applicazione: Calendar
corrisponde a /usr/bin/cal
, ecc ... L'utente malintenzionato nota che mail
non ha un percorso completo. Ciò significa che lo script eseguirà il primo comando mail
che trova in PATH
. Quindi l'attaccante crea un comando chiamato mail
in qualche directory casuale. Hanno scelto /tmp
, ma quella scelta non è importante. Il comando è un collegamento simbolico a /bin/sh
. Un collegamento simbolico crea un alias tra due file. In questo caso, quando il sistema operativo esegue /tmp/mail
, eseguirà effettivamente /bin/sh
. Potrebbero aver copiato anche /bin/sh
in /tmp/mail
, ma perché preoccuparsi. La copia richiede tempo e utilizza lo spazio su disco. Il collegamento simbolico è altrettanto efficace e più veloce.
Il passaggio finale è impostare la variabile di ambiente PATH
per iniziare con /tmp
in modo che quando il sistema operativo va a eseguire il comando mail
, troverà /tmp/mail
. E, visto che questo è solo un link simbolico a /bin/sh
, eseguirà /bin/sh
come DavidGilmour
(ricorda che il programma è setuid in modo che venga sempre eseguito come DavidGilmour
).
Obiettivo raggiunto!