User Tools

Site Tools


local_file_inclusion

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
local_file_inclusion [2023/11/09 15:09] zrinkalocal_file_inclusion [2023/11/27 14:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====Local file inclusion==== ====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. +**Napad uključenja lokalne datoteke** (//Local File Inclusion//, LFI) napad je 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 Datoteka može izravno izvršiti neki maliciozan kod ili sadržavati osjetljive informacije
 kojima prosječan korisnik ne bi trebao imati pristup. kojima prosječan korisnik ne bi trebao imati pristup.
  
-Ako HTTP zaglavlje sadrži "Content-Disposition: attachment; filename=file.pdf" +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 +datoteka se neće prikazati, već odmah preuzeti. To predstavlja problem u slučaju 
-nepročišćenog zahtjeva jer napadač može uključiti datoteku +nepročišćenog zahtjeva jer napadač može uključiti malicioznu datoteku
  
-Najčešće je pristuan u PHP web aplikacijama i to u naredbama include(<filename>) ili include_once(<filename>)+Najčešće je prisutan 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 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  kad nema provjere primljenog argumenta jer tada napadač može dobiti 
Line 15: Line 15:
 aplikacije ima pravo pristupa i čitanja. aplikacije ima pravo pristupa i čitanja.
  
-Recimo da korisnik unese +Recimo da korisnik unese:
 <code> <code>
 http://vulnerable_host/preview.php?file=../../../../etc/passwd http://vulnerable_host/preview.php?file=../../../../etc/passwd
Line 21: Line 21:
  
 Ova naredba ispisat će sve korisnike prisutne na ranjivom poslužitelju budući da  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 +parametar //page// nema nikakvu provjeru i pročišćavanje putanje. U ovom linku putanja je zadana relativno, dakle od trenutnog direktorija kojem se nalazimo. Oznaka .. u toj putanji označava jedan direktorij 
-označava naddirektorij. Ako se putanja do neke datoteke zadaje relativno (odnosu +iznad. Budući da //page// parametar nema nikakvu provjeru koliko se daleko korisnik 
-na trenutnu poziciju korisnika), oznaka .. u toj putanju označava jedan direktorij +može pomicati prema gore, napadač bi to mogao iskoristiti tako da 
-iznad. Budući da page parametar nema nikakvu provjeru koliko se daleko korisnik +se popne čak četiri direktorija iznad trenutnoga. Korisnik je u ovome primjeru došao 
-može pomicati prema gore, napdač bi to mogao iskoristiti tako da +do korijenskog (//root//) direktorija kojemu nitko osim administratora ne bi trebao imati pristup. 
-se popne čak četiri direktorija iznad trenutnoga. Korisnik je u ovome primjeri došao +tome direktoriju nalazi se etc direktorij koji u Linux sustavima
-do root direktorija kojemu nitko osim administratora ne bi trebao imati pristup. +
-root direktoriju nalazi se etc direktorij koji u Linux sustavima+
 sadrži sve informacije vezane uz konfiguraciju sustava, uključujući korisnike  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 i njihove lozinke. Zato je napadač uspio doći do svih korisnika sustava. To je potencijalno
Line 34: Line 32:
 (//brute force//) probiti njihove lozinke i steći njihova prava. (//brute force//) probiti njihove lozinke i steći njihova prava.
  
-Ranjivost se može iskoristiti i kod naprednijih naredbim, primjerice:+Ranjivost se može iskoristiti i kod naprednijih naredbi, primjerice:
  
 <code> <code>
Line 42: Line 40:
 U ovom slučaju datoteka koju dohvaćamo ima predefiniranu ekstenziju .php pa  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 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+je tzv. Null Byte Injection, odnosno na kraju naziva datoteke jednostavno dodajemo %00
 <code> <code>
 http://vulnerable_host/preview.php?file=../../../../etc/passwd%00 http://vulnerable_host/preview.php?file=../../../../etc/passwd%00
Line 48: Line 46:
  
  
-__**PRIMJER**__ **Zadatak sa Hacknite platforme - Lokalne datoteke**+__**PRIMJER**__ **Zadatak Hacknite platforme - Lokalne datoteke**
 <file> <file>
-Ivica je zaključio kako je za njegov daljnji razvoj karijere neophodno naučiti PHP te prebaciti svoju web stranicu na Apache HTTP server. +Ivica je zaključio kako je za njegov daljnji razvoj karijere neophodno naučiti PHP te prebaciti  
-U procesu izrade web stranice i konfiguracije Apache HTTP servera, Ivica je zavolio Linux te je odlučio prebaciti i neke svoje datoteke na Linux računalo koje poslužuje web stranicu. +svoju web stranicu na Apache HTTP server. 
-Možeš li pogledati kako Ivica napreduje s izradom web stranice te provjeriti je li možda napravio neki propust?+U procesu izrade web stranice i konfiguracije Apache HTTP servera, Ivica je zavolio Linux te je odlučio 
 +prebaciti i neke svoje datoteke na Linux računalo koje poslužuje web stranicu. 
 +Možeš li pogledati kako Ivica napreduje s izradom web stranice te provjeriti je li možda  
 +napravio neki propust?
  
 http://chal.hacknite.hr:8002/ http://chal.hacknite.hr:8002/
 </file> </file>
  
-Ulaskom na stranicu i pritiskom na na "O meni" primjećujemo da se ime stranice pojavljuje u URL-u: +Ulaskom na stranicu i pritiskom na na "O meni" primjećujemo da se ime stranice pojavljuje u URL-u u parametru //page// 
  
 {{ :lfi2-hint.png?600 |}} {{ :lfi2-hint.png?600 |}}
  
-To nas upućuje da pokušamo u parametar page upisati ime neke osjetljive datoteke i pristupimo njezinim \\ podatcima. Također, vidimo da su lozinke zapisane u datoteci /usr/local/lozinke.txt. \\ + 
-U tražilicu pod page parametar ubacimo "../../../usr/local/lozinke.txt i dobili smo rješenje:+To nas upućuje da pokušamo u parametar page upisati ime neke osjetljive datoteke i pristupimo njezinim  podatcima. \\ Također, vidimo da su lozinke zapisane u datoteci /usr/local/lozinke.txt.  
 +U tražilicu pod page parametar ubacimo "../../../usr/local/lozinke.txti dobili smo rješenje:
  
 {{ :lfi2-rj.png?600 |}} {{ :lfi2-rj.png?600 |}}
  
 +Važno je primijetiti da su na početku dodane oznake za odlazak u naddirektorij (..) jer bez njih Local file inclusion ne bi funkcionirao. Korisnik se uobičajeno nikad neće naći u //usr// direktoriju jer njemu ne 
 +bi uopće trebao imati pristup.
  
-__**PRIMJER**__ **Zadatak sa Hacknite platforme - Local Login inclusion**+__**PRIMJER**__ **Zadatak Hacknite platforme - Local Login inclusion**
 <file> <file>
 Petru je bilo dosadno tijekom ljetnih praznika, i odlučio je napraviti jednostavnu web stranicu. Petru je bilo dosadno tijekom ljetnih praznika, i odlučio je napraviti jednostavnu web stranicu.
Line 82: Line 87:
 {{ :lfi1-zad.png?600 |}} {{ :lfi1-zad.png?600 |}}
  
-Ako se pokušamo ulogirati kao administrator, vidimo da se šalje GET zahtjev jer URL izgleda ovako:  +Ako se pokušamo ulogirati kao administrator, vidimo da se šalje GET zahtjev jer se u URL-u nalazi path datoteke u kojoj se nalazimo (admin.php). To znači da potencijalno možemo dobiti pristup access logu. To ćemo pokušati primjenom LFI tako što ćemo u tražilicu upisati: \\
-http://chal.platforma.hacknite.hr:10015/**admin.php** +
-To znači da potencijalno možemo dobiti pristup access logu. To ćemo pokušati primjenom Local \\ file inclusiona tako što ćemo u tražilicu upisati: \\+
 /view.php?file=../../../var/log/apache2/access.log /view.php?file=../../../var/log/apache2/access.log
  
Line 91: Line 94:
 {{ :lfi1-rj.png?600 |}} {{ :lfi1-rj.png?600 |}}
  
 +===Izvori===
 +[1] https://platforma.hacknite.hr/challenges\\
 +[2] https://www.zemris.fer.hr/~sgros/students/diploma_thesis/saric_darian_diplomski.pdf\\
 +[3] https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/07-Input_Validation_Testing/11.1-Testing_for_Local_File_Inclusion \\
local_file_inclusion.1699542598.txt.gz · Last modified: 2025/06/03 10:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki