local_file_inclusion
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
local_file_inclusion [2023/11/09 15:10] – zrinka | local_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 " | + | Ako HTTP zaglavlje sadrži " |
- | datoteke | + | datoteka |
- | nepročišćenog zahtjeva jer napadač može uključiti datoteku | + | nepročišćenog zahtjeva jer napadač može uključiti |
- | Najčešće je pristuan | + | Najčešće je prisutan |
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: |
< | < | ||
http:// | http:// | ||
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. | + | parametar |
- | označava naddirektorij. Ako se putanja | + | iznad. Budući da //page// parametar nema nikakvu provjeru koliko se daleko korisnik |
- | na trenutnu poziciju korisnika), oznaka | + | 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 |
- | 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 | + | U tome direktoriju nalazi se etc direktorij koji u Linux sustavima |
- | 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 | 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 | + | Ranjivost se može iskoristiti i kod naprednijih |
< | < | ||
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 | + | je tzv. Null Byte Injection, odnosno na kraju naziva |
< | < | ||
http:// | http:// | ||
Line 48: | Line 46: | ||
- | __**PRIMJER**__ **Zadatak | + | __**PRIMJER**__ **Zadatak |
< | < | ||
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 | ||
svoju web stranicu na Apache HTTP server. | svoju web stranicu na Apache HTTP server. | ||
- | U procesu izrade web stranice i konfiguracije Apache HTTP servera, Ivica je zavolio Linux | + | U procesu izrade web stranice i konfiguracije Apache HTTP servera, Ivica je zavolio Linux te je odlučio |
- | te je odlučio prebaciti i neke svoje datoteke na Linux računalo koje poslužuje web stranicu. | + | 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 | Možeš li pogledati kako Ivica napreduje s izradom web stranice te provjeriti je li možda | ||
napravio neki propust? | napravio neki propust? | ||
Line 60: | Line 58: | ||
</ | </ | ||
- | 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//: |
{{ : | {{ : | ||
- | To nas upućuje da pokušamo u parametar page upisati ime neke osjetljive datoteke i pristupimo njezinim | + | |
- | U tražilicu pod page parametar ubacimo " | + | To nas upućuje da pokušamo u parametar page upisati ime neke osjetljive datoteke i pristupimo njezinim |
+ | U tražilicu pod page parametar ubacimo " | ||
{{ : | {{ : | ||
+ | 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 | + | __**PRIMJER**__ **Zadatak |
< | < | ||
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 85: | Line 87: | ||
{{ : | {{ : | ||
- | Ako se pokušamo ulogirati kao administrator, | + | Ako se pokušamo ulogirati kao administrator, |
- | http:// | + | |
- | To znači da potencijalno možemo dobiti pristup access logu. To ćemo pokušati primjenom | + | |
/ | / | ||
Line 94: | Line 94: | ||
{{ : | {{ : | ||
+ | ===Izvori=== | ||
+ | [1] https:// | ||
+ | [2] https:// | ||
+ | [3] https:// |
local_file_inclusion.1699542624.txt.gz · Last modified: 2025/06/03 10:22 (external edit)