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:

  1. 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.).
  2. 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ů.