argument_injection
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| argument_injection [2025/04/22 09:13] – ppale | argument_injection [2025/12/01 11:40] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 13: | Line 13: | ||
| - | Pregledom stranice i izvornog kôda zadatka može se primijetiti da je namjena web aplikacije kompiliranje učitanog (eng. Uploaded) C koda u izvršnu datoteku korištenjem GCC kompajlera. Učitana datoteka se pohrani u direktorij na serverskoj strani, ime datoteke se zapamti, nakon čega server korištenjem subprocess modula pokreće naredbe za kompajliranje učitane datoteke u novom procesu korištenjem ljuske (eng. Shell). Naredba koja se pokreće se sastoji od pozivanja GCC-a s argumentima i spremljenim imenom učitane datoteke. | + | Pregledom stranice i izvornog kôda zadatka može se primijetiti da je namjena web aplikacije kompiliranje učitanog (eng. Uploaded) C koda u izvršnu datoteku korištenjem GCC kompajlera. Učitana datoteka se pohrani u direktorij na serverskoj strani, ime datoteke se zapamti, nakon čega server korištenjem subprocess modula pokreće naredbe za kompajliranje učitane datoteke u novom procesu korištenjem ljuske (eng. Shell). Naredba koja se pokreće se sastoji od pozivanja GCC-a s argumentima i spremljenim imenom učitane datoteke. |
| {{argumentinjectionv2: | {{argumentinjectionv2: | ||
| - | Nakon provjere, učitana datoteka se pohranjuje, a ime datoteke | + | Nakon provjere, učitana datoteka se pohranjuje, a ime datoteke, koje uključuje cijelu putanju, |
| {{argumentinjectionv2: | {{argumentinjectionv2: | ||
| - | 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. |
| - | Kako bi se uspješno | + | Kako bi se uspješno |
| - | 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 | + | 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 |
| {{argumentinjectionv2: | {{argumentinjectionv2: | ||
| - | 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 | + | 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 |
| - | 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: | {{argumentinjectionv2: | ||
| - | Slanjem ovog zahtjeva, na stranici se ispisuju sve datoteke u trenutnom direktoriju, | + | Slanjem ovog zahtjeva, na stranici se ispisuju sve datoteke u trenutnom direktoriju, |
| {{argumentinjectionv2: | {{argumentinjectionv2: | ||
| Line 54: | Line 53: | ||
| </ | </ | ||
| - | U 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 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“ |
| < | < | ||
argument_injection.1745313231.txt.gz · Last modified: 2025/12/01 11:40 (external edit)