command_injection
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| command_injection [2026/06/12 15:33] – Još značajnih ispravki.. mbunic | command_injection [2026/06/12 18:21] (current) – //host// višak mbunic | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====Command injection==== | ====Command injection==== | ||
| - | **Command injection** je tip napada u kojem napadač izvršava naredbe na // | + | **Command injection** je tip napada u kojem napadač izvršava naredbe na operacijskom sustavu poslužitelja kroz neku ranjivu aplikaciju. Ranjivost nastaje kada se korisnički unos, bez odgovarajuće validacije, izravno ili neizravno koristi za sastavljanje naredbe koja se izvršava u ljusci operacijskog sustava (engl. //shell//, npr. Bash na Linuxu ili PowerShell na Windowsima). Primjeri korisničkih unosa u web-aplikaciji koji se mogu naknadno koristiti za sastavljanje naredbi za izvršavanje u ljusci operacijskog sustava mogu biti podaci iz obrazaca (formi), kolačića, URL parametara te ponekad čak i korisnička imena ili lozinke. |
| Ovaj napad omogućuje napadaču izvršavanje naredbi s privilegijama korisnika pod kojim se izvršava web-aplikacija, | Ovaj napad omogućuje napadaču izvršavanje naredbi s privilegijama korisnika pod kojim se izvršava web-aplikacija, | ||
| Line 75: | Line 75: | ||
| - | Command injection moguć je i u naredbama koje ne zahtjevaju unos korisnika ako napadač manipulira varijablama okruženja. Primjerice, napadač može promijeniti varijablu APPHOME koja u ovome primjeru određuje lokaciju gdje će se aplikacija instalirati: | + | U oba opisana primjera, kada bi validacija korisničkog unosa bila adekvatno implementirana, primjerice dozvoljavanjem unosa samo brojeva za parametre te odbacivanjem unosa koji sadrže operator točka-zarez ili druge specijalne znakove |
| - | + | ||
| - | < | + | |
| - | char* home=getenv(" | + | |
| - | char* cmd=(char*)malloc(strlen(home)+strlen(INITCMD)); | + | |
| - | if (cmd) { | + | |
| - | strcpy(cmd,home); | + | |
| - | strcat(cmd,INITCMD); | + | |
| - | execl(cmd, NULL); | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | Skripta dohvaća varijablu okruženja APPHOME (varijabla home) i lokaciju radni direktorij (varijabla cmd). Ako naredba postoji, varijabla okruženja se kopira na to mjesto. Ranjivost se krije u tome što nema nikakve provjere APPHOME varijable. To znači da, ako napadač promijeni varijablu APPHOME na neku putanju koja sadrži malicioznu verziju inicijalizacijske skripte (INITCMD), ona će se izvršiti zajedno s kodom koji bi inače trebao. | + | |
| - | + | ||
| - | + | ||
| - | Također, napadač bi mogao izvesti ovu naredbu za promjenu lozinke: | + | |
| - | < | + | |
| - | system(" | + | |
| - | </ | + | |
| - | + | ||
| - | Naredba mijenja radni direktorij u /var/yp i tamo poziva make. Ona je sama po sebi sigurna jer nema korisničkog unosa, što znači da ju ni napadač ne može izmijeniti. Međutim, budući da nije zadana apsolutna putanja do make filea, ako napadač promijeni $PATH varijablu okruženja, može na tu putanju unijeti malicioznu verziju make binarne datoteke. | + | |
| - | + | ||
| - | + | ||
| - | Ukratko, command injection napad može se izvesti | + | |
| __**PRIMJER**__ **Zadatak s Hacknite platforme - Linux ROT13** | __**PRIMJER**__ **Zadatak s Hacknite platforme - Linux ROT13** | ||
command_injection.1781278403.txt.gz · Last modified: 2026/06/12 15:33 by mbunic