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 14:47] – Još vrlo 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 46: | Line 46: | ||
| - | Drugi je primjer internetska trgovina koja ima tražilicu proizvoda | + | Drugi je primjer internetska trgovina koja nudi tražilicu proizvoda |
| < | < | ||
| https:// | https:// | ||
| </ | </ | ||
| - | pretražuje postoji li proizvod s id-jem 381 u trgovini s id-jem 29. Sustav zatim parsira upit tako što izvuče productID i storeID te izvede | + | |
| + | pretražuje postoji li proizvod s ID-om 381 u trgovini s ID-om 29. Sustav zatim parsira upit tako što izvlači vrijednosti | ||
| < | < | ||
| stockreport.pl 381 29 | stockreport.pl 381 29 | ||
| </ | </ | ||
| + | |||
| Međutim, napadač bi mogao unijeti sljedeće: | Međutim, napadač bi mogao unijeti sljedeće: | ||
| + | |||
| < | < | ||
| - | https:// | + | https:// |
| </ | </ | ||
| - | Dakle, umjesto productID parametra unio je **& echo aiwefwlguh**.Nakon parsiranja izvršava se : | ||
| - | < | ||
| - | stockreport.pl & echo aiwefwlguh & 29 | ||
| - | </ | ||
| - | Prvi se izvodi stockreport.pl koji nema argumente, dakle unos je neispravan. Nakon njega postoji još jedna naredba (echo aiwefwlguh) koja se nesmetano izvede, iako u sustavu nije predviđena. U ovome slučaju nije bila maliciozna naredba, ali služi za demonstraciju mogućnosti ubacivanja naredbe koja bi mogla napraviti štetu na sustavu. Zatim ide znak & koji služi za razvdajanje parametara u URL-u te ostaje " | ||
| - | 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: | ||
| - | < | ||
| - | char* home=getenv(" | ||
| - | char* cmd=(char*)malloc(strlen(home)+strlen(INITCMD)); | ||
| - | if (cmd) { | ||
| - | strcpy(cmd, | ||
| - | strcat(cmd, | ||
| - | 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. | + | Kao vrijednost parametra productID, umjesto broja, uneseno je **;cat**, dok je kao vrijednost parametra storeID uneseno **/ |
| - | |||
| - | Također, napadač bi mogao izvesti ovu naredbu za promjenu lozinke: | ||
| < | < | ||
| - | system(" | + | stockreport.pl; |
| </ | </ | ||
| - | 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č | + | Prvo se pokušava izvesti stockreport.pl, ali bez postavljenih argumenata, što je neispravan unos te se izvršavanje ove naredbe završava greškom. Ova greška |
| + | |||
| + | Nakon toga se pokreće sljedeća naredba **cat / | ||
| - | Ukratko, command injection napad može se izvesti u naredbama koja nemaju dobro provedenu validaciju | + | U oba opisana primjera, kada bi validacija |
| __**PRIMJER**__ **Zadatak s Hacknite platforme - Linux ROT13** | __**PRIMJER**__ **Zadatak s Hacknite platforme - Linux ROT13** | ||
command_injection.1781275637.txt.gz · Last modified: 2026/06/12 14:47 by mbunic