User Tools

Site Tools


command_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
command_injection [2026/06/12 14:47] – Još vrlo značajnih ispravki mbuniccommand_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 //host// 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.+**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, no ako sustav nije ispravno konfiguriran, može doći do podizanja razine privilegija (engl. //privilege escalation//) do administratorskog korisnika, što napadaču daje potpunu kontrolu sustava. Ovaj napad omogućuje napadaču izvršavanje naredbi s privilegijama korisnika pod kojim se izvršava web-aplikacija, no ako sustav nije ispravno konfiguriran, može doći do podizanja razine privilegija (engl. //privilege escalation//) do administratorskog korisnika, što napadaču daje potpunu kontrolu sustava.
Line 46: Line 46:
  
  
-Drugi je primjer internetska trgovina koja ima tražilicu proizvoda prima parametre preko URL-a. Primjerice, upit +Drugi je primjer internetska trgovina koja nudi tražilicu proizvoda za koju prima parametre putem URL-a. Primjerice, upit  
 <code> <code>
 https://insecure-webshop.com/stockStatus?productID=381&storeID=29  https://insecure-webshop.com/stockStatus?productID=381&storeID=29 
 </code> </code>
-pretražuje postoji li proizvod s id-jem 381 u trgovini s id-jem 29. Sustav zatim parsira upit tako što izvučproductID i storeID te izvede naredbu koja može izgledati ovako:+ 
 +pretražuje postoji li proizvod s ID-om 381 u trgovini s ID-om 29. Sustav zatim parsira upit tako što izvlači vrijednosti productID i storeID parametara te zatim izvršava naredbu koja izgleda ovako: 
 <code> <code>
 stockreport.pl 381 29 stockreport.pl 381 29
 </code> </code>
 +
 Međutim, napadač bi mogao unijeti sljedeće:  Međutim, napadač bi mogao unijeti sljedeće: 
 +
 <code> <code>
-https://insecure-website.com/stockStatus?productID= & echo aiwefwlguh &storeID=29+https://insecure-website.com/stockStatus?productID=;cat&storeID=/etc/passwd
 </code> </code>
-Dakle, umjesto productID parametra unio je **& echo aiwefwlguh**.Nakon parsiranja izvršava se :  
-<code> 
-stockreport.pl & echo aiwefwlguh & 29 
-</code> 
-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 "29" što sustav pokušava pročitati kao naredbu, ali ne postoji pa se ni ne izvede.\\ 
-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: 
-<file> 
-char* home=getenv("APPHOME"); 
-char* cmd=(char*)malloc(strlen(home)+strlen(INITCMD)); 
-if (cmd) { 
-    strcpy(cmd,home); 
-    strcat(cmd,INITCMD); 
-    execl(cmd, NULL); 
-} 
-</file> 
  
-Skripta dohvaća varijablu okruženja APPHOME (varijabla home) i lokaciju radni direktorij (varijabla cmd). Ako naredba postojivarijabla okruženja se kopira na to mjesto. Ranjivost se krije u tome što nema nikakve provjere APPHOME varijable. To znači daako 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 productIDumjesto brojauneseno je **;cat**dok je kao vrijednost parametra storeID uneseno **/etc/passwd**. Nakon parsiranja izvršava se: 
  
- 
-Također, napadač bi mogao izvesti ovu naredbu za promjenu lozinke: 
 <code> <code>
-system("cd /var/yp && make &> /dev/null");+stockreport.pl;cat /etc/passwd
 </code> </code>
  
-Naredba mijenja radni direktorij u /var/yp i tamo poziva makeOna je sama po sebi sigurna jer nema korisničkog unosa, što znači da ju ni napadač ne možizmijenitiMeđutim, budući da nije zadana apsolutna putanja do make filea, ako napadač promijeni $PATH varijablu okruženjamožna tu putanju unijeti malicioznu verziju make binarne datoteke.+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 ne utječna naredbu koja se izvršava nakon operatora točka-zarez za odjeljivanje naredbi. 
 + 
 +Nakon toga se pokreće sljedeća naredba **cat /etc/passwd** koja se uspješno izvršava. Ako se rezultat izvršavanja naredbe ispisuje u odgovoru poslužiteljabit ćprikazan sadržaj datoteke /etc/passwd.
  
  
-Ukratkocommand injection napad može se izvesti u naredbama koja nemaju dobro provedenu validaciju korisničkog unosa. Kako bi se izbjegaoaplikacija ne bi trebala ignorirati svaki unos koji djeluje neispravnoveć bi trebala pogledati postoji li nešto toj naredbi što bi moglo potencijalno biti command injection napad+U oba opisana primjerakada 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 (&, /, razmak, *, itd.)ranjivost ne bi postojala. Još bolji pristup jeumjesto zabranjivanja znakova (engl. //blacklist//), ograničiti unos tako da smije sadržavati samo znakove iz dozvoljenog skupa (engl. //whitelist//). Za parametre bi u tom slučaju jedini dozvoljeni znakovi za unos bile znamenke 0–9, a za prvi primjer samo znakovi koji se mogu pojaviti unutar imena datoteke.
  
 __**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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki