4.3 Command Injection
Command Injection nastává ve chvíli, kdy aplikace spouští uživatelská data přímo uvnitř systémového shellu. To útočníkovi umožňuje spustit libovolné příkazy operačního systému s právy této aplikace.
Zneužití nástroje ping
Aplikace nabízí otestování konektivity pomocí ping "$IP".
Normální IP: 8.8.8.8
Pokud útočník zadá: 8.8.8.8" | cat /etc/passwd ""
Skript provede v shellu:
ping "8.8.8.8" | cat /etc/passwd ""
Díky znaku roury | se ignoruje výstup pingu a rovnou se vypíše citlivý systémový soubor (stejně poslouží znaky ; nebo &&).
Countermeasures (Obrana)
Doporučený postup obrany:
- Nepoužívat systémový shell, pokud to není nezbytné. Pro spoustu operací lze nalézt nativní API jazyka (např. čtení souborů, posílání emailů, atd.).
- Pokud se musíme shellu uchýlit, je nezbytná striktní validace podle datového typu (data-specific format validation), například white list povolených znaků (čísla a tečky pro IPv4) v kombinaci s odpovídajícím escapováním argumentů.