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/10/16 08: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 | ||
opasno jer jednom kad napadač uspije enumerirati sve korisnike u nekom sustavu, može grubom silom | 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. | + | (//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:// | ||
</ | </ | ||
+ | |||
+ | __**PRIMJER**__ **Zadatak s Hacknite platforme - Lokalne datoteke** | ||
+ | < | ||
+ | Ivica je zaključio kako je za njegov daljnji razvoj karijere neophodno naučiti PHP te prebaciti | ||
+ | svoju web stranicu na Apache HTTP server. | ||
+ | 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:// | ||
+ | </ | ||
+ | |||
+ | Ulaskom na stranicu i pritiskom na na "O meni" primjećujemo da se ime stranice pojavljuje u URL-u u parametru // | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 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 s Hacknite platforme - Local Login inclusion** | ||
+ | < | ||
+ | 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, | ||
+ | računalo gdje se nalaze razne datoteke. Petar ima Linux računalo i odlučio je posluživati svoju stranicu | ||
+ | pomoću 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 | ||
+ | i siguran je da nije napravio nikakav propust. | ||
+ | Možeš li provjeriti i vidjeti je li Petar u pravu? | ||
+ | http:// | ||
+ | </ | ||
+ | Ovako izgleda stranica: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Ako se pokušamo ulogirati kao administrator, | ||
+ | / | ||
+ | |||
+ | Rezultat je ispis access.log datoteke u kojoj se ujedno i nalazi rješenje zadatka: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ===Izvori=== | ||
+ | [1] https:// | ||
+ | [2] https:// | ||
+ | [3] https:// |
local_file_inclusion.1697443803.txt.gz · Last modified: 2025/06/03 10:22 (external edit)