User Tools

Site Tools


argument_injection

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
argument_injection [2025/04/22 16:22] ppaleargument_injection [2025/12/01 11:40] (current) – external edit 127.0.0.1
Line 22: Line 22:
 {{argumentinjectionv2:slika2.png}} {{argumentinjectionv2:slika2.png}}
  
-Ovime se efektivno ime učitane datoteke koristi kao dio naredbe, te se može iskoristiti za command injection. Ovaj command injection ima ograničenje. Može se samo promijeniti izvršavanje naredbe u kojoj je injekcijanaredba pozivanja GCC prevoditelja. Ne može se ubaciti druga arbitrarna bash naredba korištenjem uobičajenih bash operatora kao što su  ‘;’, ‘&’,  ‘|’, ..  +Ovaj command injection ima ograničenje. Ne može se, umjesto pozivanja GCC prevoditelja,  ubaciti neka arbitrarna bash naredba korištenjem uobičajenih bash operatora kao što su ‘;’, ‘&’, ‘|’ nego će se uvijek pozivati GCC prevoditeljDakle, napadač može samo pokušati na lukav način u ime datoteke ugraditi naredbu koju želi da se izvrši (command injection)
-Kako bi se uspješno poslala datoteka s injektiranom naredbom, ime datoteke mora uspješno proći kroz filter koju funkcija „allowed_file“ implementira. Kako se provjerava samo završava li ime datoteke s ".c", ime naše datoteke treba nakon injektirane naredbe završavati s „.c“. +Kako bi se uspješno poslalo ime datoteke koje sadrži injektiranu naredbu, ime datoteke mora uspješno proći kroz filter koju implementira funkcija „allowed_file“. Kako se provjerava samo završava li ime datoteke s .c, ime naše datoteke treba nakon injektirane naredbe završavati s „.c“. Da bi se command injection u naredbi pozivanja GCC-a efektivno iskoristio, trebaju se istražiti funkcionalnosti i zastavice GCC-a, kako bi se pronašao način za iskorištavanje pronađene ranjivosti, tj. da se „nagovori“ GCC da izvrši naredbu koju napadač želi. GCC ima funkcionalnost pozivanja subkomandi unutar wrapper programa, korištenjem -wrapper zastavice. Ova funkcionalnost se može iskoristiti kako bi se pokrenuo bash process i dala mu se naredba koju napadač želi izvršiti.
-Da bi se command injection u naredbi pozivanja GCC-a efektivno iskoristio, trebaju se istražiti funkcionalnosti i zastavice GCC-a, kako bi se pronašao način za iskorištavanje pronađene ranjivosti. GCC ima funkcionalnost pozivanja subkomandi unutar wrapper programa, korištenjem -wrapper zastavice. Ova funkcionalnost se može iskoristiti kako bi se pokrenuo bash process i dala mu se naredba koju napadač želi izvršiti.+
  
-Potrebno je i analizirati kôd kako bi se pronašlo može li napadač nekako dobiti rezultat pokretanja injektiranje naredbe preko sučelja aplikacije. Ako ne može, onda provjeriti može li se izvući preko weba ili može li se reverse shell pokrenuti, kako bi se znalo kako konstruirati injektiranu naredbu. Analizom izvornog kôda prikazanom na slici 2. , može se uočiti da će se rezultat izvršavanja subprocess procesa ispisati kao paragraf na vraćenoj stranici.+Potrebno je i analizirati kôd kako bi se pronašlo može li napadač nekako dobiti rezultat pokretanja injektiranje naredbe preko sučelja aplikacije. Ako ne može, onda treba provjeriti može li se izvući preko weba ili može li se pokrenuti reverse shell, kako bi se ispravnoi oblikovala injektirana naredba. Analizom izvornog kôda prikazanom na slici 2. , može se uočiti da će se rezultat izvršavanja subprocessa ispisati kao paragraf na vraćenoj stranici.
  
 {{argumentinjectionv2:slika3.png}} {{argumentinjectionv2:slika3.png}}
  
  
-Kada je poznato da se command injection može izvršiti i vidjeti rezultat izvođenja naredbe na sučelju aplikacije, može se prvo konstruirati payload za pokretanje naredbe „ls“. +Kada je poznato da se command injection može izvršiti i vidjeti rezultat izvođenja naredbe na sučelju aplikacije, može se prvo konstruirati tekst payloada za pokretanje naredbe „ls“. 
-Prvo se generira neka vrlo jednostavna .c datoteka čiji kod nije bitan, te joj se ime odmah promijeni u payload, ili se poslan zahtjev s normalnim imenom datoteke presretne burp suiteovim presretačem (eng. Proxy) i tamo promjeni. +Prvo se generira neka vrlo jednostavna .c datoteka čiji kod nije bitan, te joj se ime odmah promijeni u tekst payloada, ili se poslan zahtjev s normalnim imenom datoteke presretne burp suiteovim presretačem (eng. Proxy) i tamo promjeni. 
  
 Payload ime datoteke za pokretanje ls naredbe, uz zaobilaženje filtera glasi: Payload ime datoteke za pokretanje ls naredbe, uz zaobilaženje filtera glasi:
Line 42: Line 41:
 {{argumentinjectionv2:slika4.png}} {{argumentinjectionv2:slika4.png}}
  
-Slanjem ovog zahtjeva, na stranici se ispisuju sve datoteke u trenutnom direktoriju, gdje se vidi da je prisutna i datoteka flag.txt. Prikazano na slici 5.+Slanjem ovog zahtjeva, na stranici se ispisuju sve datoteke u trenutnom direktoriju, gdje se vidi da je prisutna i datoteka koju napadač traži, npr. flag.txt. Prikazano na slici 5.
  
 {{argumentinjectionv2:slika5.png}} {{argumentinjectionv2:slika5.png}}
Line 54: Line 53:
 </code> </code>
  
-bashu, može se vidjeti koji su znakovi definirani kao razdjeljivači. Oni su uobičajeno space, tab i newline. Da bi zamijenili ulogu razmaka u naredbi „cat flag.txt“, a održali namjenu razmaka, možemo direktno dohvatiti vrijednost definirane IFS varijable u kontekstu bash procesa. Da bi se to postiglo, razmak u naredbi „cat flag.txt“ se treba zamijeniti dohvaćanjem vrijednosti te varijable – „${IFS}“ kako bi imali naredbu ekvivalentnog značenja, ali drukčije zapisanu – „cat ${IFS}flag.txt“. Koristeći ovaj pristup, potpuna naredba za dohvaćanje flaga je:+bashu, može se vidjeti koji su znakovi definirani kao razdjeljivači. Oni su uobičajeno space, tab i newline. Da bi  u naredbi „cat flag.txt“ imali razmak, ali da ga filter ne vidi, možemo izravno dohvatiti vrijednost definirane IFS varijable u kontekstu (trenutku izvođenja) bash procesa. Da bi se to postiglo, razmak u naredbi „cat flag.txt“ se treba zamijeniti dohvaćanjem vrijednosti te varijable – „${IFS}“ kako bi imali naredbu ekvivalentnog značenja, ali drukčije zapisanu – „cat${IFS}flag.txt“. Koristeći ovaj pristup, potpuna naredba za dohvaćanje flaga je:
  
 <code> <code>
argument_injection.1745338941.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki