| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| argument_injection [2025/04/22 16:50] – ppale | argument_injection [2026/06/18 17:53] (current) – mbunic |
|---|
| ====Argument injection==== | ====Argument injection==== |
| |
| "Argument injection" je podvrsta "command injection" napada. Razlikuje se u tome što se u argument injectionu, "napad" može ugraditi samo u jedan argument naredbe, dok se u command injectionu kôd može ubaciti i usred naredbe. Dok se u klasičnom command injectionu često mogu dodavati i mijenjati argumenti naredbe ili čak dodavati potpuno nove naredbe vještim korištenjem komandnih operatora, prostor za „manevriranje“ u argument injectionu je znatno manji i više ovisi o kontekstu same naredbe u čiji se argument vrši argument injection. | **Argument injection** je podvrsta **command injection** napada. Razlikuje se u tome što se u argument injection napadu zlonamjerna manipulacija naredbom može ugraditi samo u jedan argument naredbe, dok se u command injectionu kôd može ubaciti usred ili nakon naredbe te se potpuno kontekstualno odvojiti. |
| | |
| | Dok se u klasičnom command injectionu često mogu dodavati i mijenjati argumenti naredbe i dodavati potpuno nove naredbe vještim korištenjem komandnih operatora, prostor za „manevriranje“ u argument injectionu je znatno manji i više ovisi o kontekstu same naredbe u čiji se argument vrši argument injection. |
| |
| ===PRIMJER -Zadatak s Hacknite platforme – Flask GCC=== | ===PRIMJER -Zadatak s Hacknite platforme – Flask GCC=== |
| {{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 injekcija, naredba 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 prevoditelj. Dakle, 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 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. | 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. |