Jump to content
dancezar

[Tutorial] 2 metode de a exploata LFI

Recommended Posts

  • Active Members
Posted (edited)

In acest tutorial am sa va prezint doua metode de a exploata LFI.

Acestea sunt:

1) LFI combinat cu arbitrary file upload

2) LFI cu /var/log/auth.log

Dupa 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 upload

Aceasta 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:

image.jpg

http://s28.postimg.org/n7070anek/image.jpg

Am 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.

image.png

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.php

Dupa 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 base64

image.jpg

http://s28.postimg.org/n7070anek/image.jpg

Iar dupa acea l-am decodat.

image.png

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 .

image.png

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.

image.png

<?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.

image.png

Dupa care am aflat unde s-a urcat pdf-ul

image.jpg

http://s2.postimg.org/cpn3ty8a0/image.jpg

Acuma nu imi mai ramane nimic de facut decat sa includ acel fisier si sa vad rezultatul.

image.png

Rezultatul a fost dezamagitor pentru ca administratorul a dezactivat functia phpinfo();:(

Dar totusi Remote Code Execution am reusit sa il injectez:D.

image.png

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.log

Aceasta 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:

image.jpg

http://s28.postimg.org/dmm2twlbw/image.jpg

Ok acuma vom verifica existenta ecestui fisier /var/log/auth.log

image.png

Principiul 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:

image.png

http://s30.postimg.org/8faonucy9/image.png

Deci 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:

image.jpg

http://s23.postimg.org/p8gkd5gvu/image.jpg

Acuma 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:

image.png

http://s3.postimg.org/evzgmtpv7/image.png

Ok verificam daca exista /proc/self/environ:

image.jpg

http://s29.postimg.org/5p285v1mu/image.jpg

Totul e bine continutul lui proc/self/environ este afisat dar uitati ce se intampla cand vom incerca sa injectam codul malitios in user agent:

image.png

http://s7.postimg.org/7pcbc0im3/image.png

Nu 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: ...

image.jpg

http://s13.postimg.org/5z2yfdqae/image.jpg

Si 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:D

Am sa mai rectific sa corectez eventuale greseli gramaticale.

Edited by danyweb09
  • Upvote 2
  • Downvote 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...