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:30] – zrinka | local_file_inclusion [2026/06/11 19:23] (current) – mbunic | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====Local file inclusion==== | ====Local file inclusion==== | ||
| - | **Napad uključenja lokalne datoteke | + | **Ranjivost |
| - | Datoteka može izravno izvršiti neki maliciozan kod ili sadržavati osjetljive | + | To mogu biti konfiguracijske datoteke, datoteke s kodom koji se izvršava na poslužitelju, |
| - | kojima prosječan korisnik | + | |
| - | Ako HTTP zaglavlje sadrži " | ||
| - | datoteka se neće prikazati, već odmah preuzeti. To predstavlja problem u slučaju | ||
| - | nepročišćenog zahtjeva jer napadač može uključiti malicioznu datoteku. | ||
| - | Najčešće je pristuan | + | Primjeri funkcija |
| - | koje primaju putanju do datoteke koja se uključuje u program. Ranjivost se javlja | + | kada se korisnički unos, izravno ili neizravno, koristi kao argument funkcije bez provjere ili adekvatnih ograničenja. To omogućuje napadaču da navede proizvoljne datoteke iz lokalnog datotečnog sustava kao argumente funkcije, navodeći njihovu apsolutnu ili relativnu putanju. |
| - | kad nema provjere primljenog argumenta jer tada napadač može dobiti | + | |
| - | mogućnost čitanja svih datoteka | + | Posljedica toga, osim dohvaćanja osjetljivih |
| - | aplikacije ima pravo pristupa | + | |
| + | |||
| + | Pretpostavimo da korisnik unese sljedeći URL: | ||
| - | Recimo da korisnik unese: | ||
| < | < | ||
| http:// | http:// | ||
| </ | </ | ||
| - | Ova naredba | + | Ovaj zahtjev |
| - | parametar //page// nema nikakvu provjeru i pročišćavanje putanje. U ovom linku putanja je zadana relativno, | + | se popne četiri |
| - | iznad. Budući da //page// parametar | + | |
| - | može pomicati prema gore, napdač bi to mogao iskoristiti tako da | + | |
| - | se popne čak četiri direktorija iznad trenutnoga. Korisnik je u ovome primjeru došao | + | |
| - | do korjenskog (// | + | |
| - | U tome 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 naredbi, primjerice: | + | Napadač bi u ovom slučaju došao |
| + | do korijenskog (//root//) direktorija, | ||
| + | U tom direktoriju nalazi se /etc direktorij koji u Linux sustavima | ||
| + | sadrži informacije vezane uz konfiguraciju sustava, uključujući korisnike | ||
| + | i njihove hashirane lozinke (/ | ||
| + | |||
| + | To je potencijalno | ||
| + | opasno jer ako napadač uspije enumerirati sve korisničke račune u sustavu, može grubom silom | ||
| + | (//brute force// ili korištenjem rječnika) nad hashevima njihovih lozinki pokušati otkriti izvorne lozinke i koristiti njihove račune (iako obično samo administrator ima pristup /etc/shadow datoteci, proces može biti neispravno pokrenut s prevelikom razinom privilegija ili se napad može kombinirati s napadom podizanja privilegija). | ||
| + | |||
| + | Ranjivost se može iskoristiti i kod zaštićenijih oblika poziva funkcija, primjerice: | ||
| < | < | ||
| - | <?php include($_GET[' | + | <?php include($_GET[' |
| </ | </ | ||
| - | U ovom slučaju datoteka | + | U ovom slučaju datoteka |
| - | ne možemo jednostavno | + | ne možemo jednostavno |
| - | je tzv. Null Byte Injection, odnosno na kraju nazica | + | je tzv. Null Byte Injection, odnosno na kraju naziva |
| < | < | ||
| http:// | http:// | ||
| </ | </ | ||
| + | |||
| + | Funkcije napisane u C-u koje obrađuju ovaj unos bi ostatak niza nakon pojave nul bajta zanemarile, jer se nul bajt interpretira kao kraj stringa, te bi se ekstenzija .php učinkovito uklonila iz parisrane putanje. | ||
| - | __**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 | ||
| Line 58: | Line 58: | ||
| </ | </ | ||
| - | Ulaskom na stranicu i pritiskom | + | Ulaskom na stranicu i pritiskom na "O meni" primjećujemo da se ime stranice pojavljuje u URL-u u parametru // |
| Line 64: | Line 64: | ||
| - | To nas upućuje da pokušamo u parametar page upisati ime neke osjetljive datoteke i pristupimo njezinim | + | 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 " | 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 | + | 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 | + | __**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. | ||
| Nije bio siguran kako bi pokrenuo svoju stranicu i gdje bi ju posluživao, | 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 | + | 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 | + | 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: | ||
| {{ : | {{ : | ||
| - | Ako se pokušamo ulogirati kao administrator, | + | Ako se pokušamo ulogirati kao administrator, |
| / | / | ||
| Line 94: | Line 94: | ||
| {{ : | {{ : | ||
| + | ===Izvori=== | ||
| + | [1] https:// | ||
| + | [2] https:// | ||
| + | [3] https:// | ||
local_file_inclusion.1699543822.txt.gz · Last modified: 2025/12/01 11:40 (external edit)