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:30] zrinkalocal_file_inclusion [2025/12/01 11:40] (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.
Line 9: Line 9:
 nepročišćenog zahtjeva jer napadač može uključiti malicioznu 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 23: Line 23:
 parametar //page// nema nikakvu provjeru i pročišćavanje putanje. U ovom linku putanja je zadana relativno, dakle od trenutnog direktorija u kojem se nalazimo. Oznaka .. u toj putanji označava jedan direktorij parametar //page// nema nikakvu provjeru i pročišćavanje putanje. U ovom linku putanja je zadana relativno, dakle od trenutnog direktorija u kojem se nalazimo. Oznaka .. u toj putanji označava jedan direktorij
 iznad. Budući da //page// parametar nema nikakvu provjeru koliko se daleko korisnik 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+može pomicati prema gore, napadač bi to mogao iskoristiti tako da
 se popne čak četiri direktorija iznad trenutnoga. Korisnik je u ovome primjeru došao se popne čak četiri direktorija iznad trenutnoga. Korisnik je u ovome primjeru došao
-do korjenskog (//root//) direktorija kojemu nitko osim administratora ne bi trebao imati pristup.+do korijenskog (//root//) direktorija kojemu nitko osim administratora ne bi trebao imati pristup.
 U tome direktoriju nalazi se etc direktorij koji u Linux sustavima U tome 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 
Line 40: 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 46: 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  Ivica je zaključio kako je za njegov daljnji razvoj karijere neophodno naučiti PHP te prebaciti 
Line 58: Line 58:
 </file> </file>
  
-Ulaskom na stranicu i pritiskom na na "O meni" primjećujemo da se ime stranice pojavljuje u URL-u u parametru //page//: +Ulaskom na stranicu i pritiskom na "O meni" primjećujemo da se ime stranice pojavljuje u URL-u u parametru //page//: 
  
  
Line 69: Line 69:
 {{ :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 +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. 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.
 Nije bio siguran kako bi pokrenuo svoju stranicu i gdje bi ju posluživao, ali se na kraju odlučio za svoje Nije bio siguran kako bi pokrenuo svoju stranicu i gdje bi ju posluživao, ali se na kraju odlučio za svoje
-računalo gdje se nalaze razne datoteke. Petar ima Linux računalo i odlučio je posluživati svoju stranicu +računalo gdje se nalaze razne datoteke. Petar ima Linux računalo i odlučio je posluživati svoju stranicu uz 
-pomoćApache HTTP servera. Petar je sebi napravio račun na stranici kao admin i njime se služi kad god+pomoć Apache HTTP servera. Petar je sebi napravio račun na stranici kao admin i njime se služi kad god
 želi pristupiti stranici. Stranica nije skroz gotova i postoje neke greške, ali Petar je jako ponosan nju želi pristupiti stranici. Stranica nije skroz gotova i postoje neke greške, ali Petar je jako ponosan nju
 i siguran je da nije napravio nikakav propust.  i siguran je da nije napravio nikakav propust. 
Line 87: Line 87:
 {{ :lfi1-zad.png?600 |}} {{ :lfi1-zad.png?600 |}}
  
-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 Local \\ file inclusiona tako što ćemo u tražilicu upisati: \\+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: \\
 /view.php?file=../../../var/log/apache2/access.log /view.php?file=../../../var/log/apache2/access.log
  
Line 94: 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.1699543822.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki