User Tools

Site Tools


local_file_inclusion

This is an old revision of the document!


Local file inclusion

Napad uključenja lokalne datoteke (Local File Inclusion, LFI) je napad koji prisiljava HTTP poslužitelj da u odgovor na zahtjev ugradi datoteku koja je pohranjena na napadnutom poslužitelju. Datoteka može izravno izvršiti neki maliciozan kod ili sadržavati osjetljive informacije kojima prosječan korisnik ne bi trebao imati pristup.

Ako HTTP zaglavlje sadrži “Content-Disposition: attachment; filename=file.pdf” datoteke se neće prikazati, već odmah preuzeti. To predstavlja problem u slučaju nepročišćenog zahtjeva jer napadač može uključiti datoteku

Najčešće je pristuan u PHP web aplikacijama i to u naredbama include(<filename>) ili include_once(<filename>) koje primaju putanju do datoteke koja se uključuje u program. Ranjivost se javlja kad nema provjere primljenog argumenta jer tada napadač može dobiti mogućnost čitanja svih datoteka na poslužitelju na koje korisnički račun web aplikacije ima pravo pristupa i čitanja.

Recimo da korisnik unese

http://vulnerable_host/preview.php?file=../../../../etc/passwd

Ova naredba ispisat će sve korisnike prisutne na ranjivom poslužitelju budući da parametar page nema nikakvu provjeru i pročišćavanje putanje. Oznaka .. u Linux sustavima označava naddirektorij. Ako se putanja do neke datoteke zadaje relativno (u odnosu na trenutnu poziciju korisnika), oznaka .. u toj putanju označava jedan direktorij iznad. Budući da page parametar nema nikakvu provjeru koliko se daleko korisnik može pomicati prema gore, napdač bi to mogao iskoristiti tako da se popne čak četiri direktorija iznad trenutnoga. Korisnik je u ovome primjeri došao do root direktorija kojemu nitko osim administratora ne bi trebao imati pristup. U root direktoriju nalazi se etc direktorij koji u Linux sustavima sadrži sve informacije vezane uz konfiguraciju sustava, uključujući korisnike i njihove lozinke. Zato je napadač uspio doći do svih korisnika sustava. To je potencijalno opasno jer jednom kad napadač uspije enumerirati sve korisnike u nekom sustavu, može grubom silom (brute force) probiti njihove lozinke i steći njihova prava.

Ranjivost se može iskoristiti i kod naprednijih naredbim, primjerice:

<?php include($_GET['file'].".php"); ?>

U ovom slučaju datoteka koju dohvaćamo ima predefiniranu ekstenziju .php pa ne možemo jednostavno poslati drugu datoteku u zahtjevu. Jedan od načina zaobilaženja je tzv. Null Byte Injection, odnosno na kraju nazica datoteke jednostavno dodajemo %00

http://vulnerable_host/preview.php?file=../../../../etc/passwd%00
local_file_inclusion.1697442872.txt.gz · Last modified: 2025/06/03 10:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki