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!