Active Members dancezar Posted February 13, 2014 Active Members Report Posted February 13, 2014 (edited) In acest tutorial am sa va prezint doua metode de a exploata LFI.Acestea sunt:1) LFI combinat cu arbitrary file upload2) LFI cu /var/log/auth.logDupa ce am dat un search pe google aproximativ 2 ore am gasit 2 LFI-uri care au corespuns criteriilor mele .Pozele sunt cenzurate dar poate am mai scapat ceva indicii;)1) LFI + arbitrary file uploadAceasta metetoda are la baza un concept simplu.Pe site sa zicem ca exista un LFI si noi nu avem acces la loguri iar allow_http este off ,dar totusi putem include fisiere de pe site.Aa zicem ca pe acelasi site se afla un script de upload poze care nu permite uploadarea fisierelor php ci doar a celor cu extensie .gif sau .jpg .Ce putem face? Pai uploadam un fisier cu extensie permisa dar continutul sa fie un shell:D.Tin sa mentionez ca aceasta metoda nu functioneaza daca doar se pot citi fisiere (Source code Discloure) ci doar cele care au in spate functia include( sau functia require( require_once( etc..Am pregatit in continuare un exemplu :Avem urmatorul LFI:http://s28.postimg.org/n7070anek/image.jpgAm reusit cu succes sa includem fisierul /etc/passwd.Dupa ce am cercetat putin site-ul am gasit un formular unde administratorul poat uploada fisiere PDF dar nu pot fi urcate fisiere cu alta extesie.Dar se pare ca nu putem uploada fisiere daca nu introducem o parola prestabilita:P.Ce am facut? Pai m-am folosit de metoda php://filter pentru a citi sursa pagini uploadform.php.php://filter/convert.base64-encode/resource=fisier.phpDupa cum stiti aceasta metoda presupune preluarea continutului fisier.php encodarea lui in base64 si afisarea lui in pagina.Daca cautati prin posturile mele gasiti si un tutorial pe aceasta tema.Dupa ce am executat injectia am obtinut continutul in base64http://s28.postimg.org/n7070anek/image.jpgIar dupa acea l-am decodat.Dar se pare ca parola pe care o vrem sa o obtinem nu se afla in acest fisier ci in upload.php:))Ok am executat aceasi injectie pentru a citi continutul fisierului upload.php .Si bingo am obtinut parola care este encodata in md5.Dupa ca am dat un search pe google am aflat ca aceast hash ascunde in spate parola upload1 .Am creat un fisier pdf.pdf in care am pus un cod php.<?php eval($_GET['a']); ?>Acest cod ne v-a crea un Remote Code Execution cu care putem face practic orice.Iar apoi l-am uploadat cu parola respectiva.Dupa care am aflat unde s-a urcat pdf-ulhttp://s2.postimg.org/cpn3ty8a0/image.jpgAcuma nu imi mai ramane nimic de facut decat sa includ acel fisier si sa vad rezultatul.Rezultatul a fost dezamagitor pentru ca administratorul a dezactivat functia phpinfo();Dar totusi Remote Code Execution am reusit sa il injectez:D.De ce s-a executat codul php? Pentru ca include si pentru ca php.Pai in documentatia PHP la functia include nu se zice nicaieri ca este impusa o extesie anume pe care avem voie sa o includem poate fi si .php poate fi .pdf si poate fi .jpg de ce nu ,atata timp cat acolo se afla un cod php functia il v-a executa.2) LFI cu /var/log/auth.logAceasta metoda se foloseste de log poisoning.Pentru cei care nu stiu var log auth.log este un fisier cu loguri.Dar in acest fisier cu loguri nu se mai pastreaza loguri despre traficul HTTP,ci traficul si tentativele de logare de pe protocolul SSH.Mai exact daca noi ne vom conecta prin putty la un site anume si ne vom loga cu un username si parola gresita,in /var/log/auth.log v-a aparea ca userul cutare cu ip-ul cutare a incercat sa se logheze pe ssh.Am pregatit si un mic exemplu:Avem urmatorul LFI:http://s28.postimg.org/dmm2twlbw/image.jpgOk acuma vom verifica existenta ecestui fisier /var/log/auth.logPrincipiul este simplu daca noi am putut include fisierul var/log/auth.log inseamna ca daca ne am loga pe ssh si am incerca un user gen <?php echo 1; ?> in acel fisier se v-a inregistra tentativa noastra de logare si daca vom inrca sa includem din nou fisierul /var/log/auth.log acel cod php v-a fi executat.Dupa ce m-am asigurat ca portul ssh este deschis am deschis putty si m-am logat cu username-ul :<?php eval($_GET['a']); ?> dupa cum se observa mai jos:http://s30.postimg.org/8faonucy9/image.pngDeci m-am logat cu utilizatorul de mai sus si evident ca tentativa de logare a fost inregistrata in fisierul /var/log/auth.log.Acuma daca incerc sa includ din nou fisierul /var/log/auth.log cu parametrul GET a=phpinfo(); ce voi obtine v-a fi asta:http://s23.postimg.org/p8gkd5gvu/image.jpgAcuma la urma am sa va mai arat un demo tot cu log poisoning dar de data asta cu proc/self/environ.Stiu ca mai exista n tutoriale despre proc/self/environ dar acesta este altceva pentru ca nu vom putea injecta codul php in user agent.Deci am pregatit un alt exemplu si avem urmatorul LFI:http://s3.postimg.org/evzgmtpv7/image.pngOk verificam daca exista /proc/self/environ:http://s29.postimg.org/5p285v1mu/image.jpgTotul e bine continutul lui proc/self/environ este afisat dar uitati ce se intampla cand vom incerca sa injectam codul malitios in user agent:http://s7.postimg.org/7pcbc0im3/image.pngNu vom putea face url encode pentru a trece de filtru pus pe <> pentru ca daca vom introduce %3c spre exemplu acesta v-a fi introdus in proc self inviron exact asa cum este %3c si nu se v-a mai executa codul php.Ce putem face:-/? Administratorul site-ului a pus filtru pe useragent dar el nu stie ca orice header trimis ca cerere catre server este inregistrat in proc/self/environ;) Deci voi incerca sa injectez codul in headerul Accept: ... http://s13.postimg.org/5z2yfdqae/image.jpgSi rezultatul v-a fi acesta.Nu conteaza in ce header injectati codul php poate fi Accept-Encoding: sau Accept-Language: acesta v-a fi inregistrat in fisierul /proc/self/environ.Cam atat am avut de prezentat sper sa va fi fost de folos si sa fi placut daca da apasati butonul de like:DAm sa mai rectific sa corectez eventuale greseli gramaticale. Edited February 13, 2014 by danyweb09 2 1 Quote
xTremeSurfer Posted February 13, 2014 Report Posted February 13, 2014 prea multe 404 good job + rep Quote
Active Members dancezar Posted February 13, 2014 Author Active Members Report Posted February 13, 2014 Multumesc am sa modific.Imaginile exista nu stiu de ce da 404:-/ Quote