Command Injection Zranitelnosti

OS příkaz injekce (také známý jako shell injekce) je webový bezpečnostní zranitelnost, která umožňuje útočníkovi spustit libovolný operační systém (OS) příkazy na server, který je spuštěna aplikace, a obvykle plně kompromis aplikaci a všechny jeho data.

proč webové aplikace potřebují provádět systémové příkazy?

webové aplikace někdy potřebují provádět příkazy operačního systému (příkazy OS), aby komunikovaly se základním hostitelským operačním systémem a souborovým systémem. To lze provést pro spouštění systémových příkazů, spouštění aplikací napsaných v jiném programovacím jazyce nebo spouštění skriptů shell, python, perl nebo PHP. Pro jakýkoli operační systém, včetně Windows, Unix a Linux, jsou k dispozici funkce, které mohou spustit příkaz, který je předán ostatním skriptům jako příkaz shellu. I když je tato funkce velmi užitečná, může být při nesprávném použití nebezpečná a může vést k problémům se zabezpečením webových aplikací, jak je vysvětleno v tomto článku.

Proč Byste Měli být Opatrní Při Používání Systému Příkazy v Webové Aplikace

Tím, že využívá příkaz vstřikování zranitelnosti ve zranitelné aplikace, útočníci mohou přidat další příkazy, nebo aplikovat své vlastní příkazy operačního systému. To znamená, že během útoku na vstřikování příkazů může útočník snadno převzít úplnou kontrolu nad hostitelským operačním systémem webového serveru. Vývojáři by proto měli být při vývoji webových aplikací velmi opatrní, jak přenést Uživatelský vstup do jedné z těchto funkcí.

příklad zranitelnosti příkazu injection

v tomto příkladu zranitelnosti příkazu injection používáme funkci ping, která je notoricky nejistá na mnoha směrovačích. Představte si zranitelnou aplikaci, která má společnou funkci, která předává IP adresu z uživatelského vstupu do příkazu ping systému. Pokud je tedy vstup uživatele 127.0.0.1, provede se v hostitelském operačním systému následující příkaz:

ping -c 5 127.0.0.1

vzhledem k tomu, že se jedná o zranitelnou webovou aplikaci, je možné vymanit se z příkazu ping nebo vyvolat chybu, která vrací užitečné informace útočníkovi. Útočník pak může tuto funkci použít k provádění vlastních libovolných příkazů. Příklad přidání dalších systémových příkazů může vypadat takto:

ping -c 5 127.0.0.1; id

ve výše uvedeném příkladu se nejprve provede příkaz ping a bezprostředně poté se provede spuštění příkazu id. Proto bude výstup příkazu na stránce vypadat takto:

během útoku na vstřikování příkazů OS může útočník také nastavit útok založený na chybách. Například, injekce kódu v tomto případě bude typicky vypadat takto:

ping -c 5 "$(id)"

výše uvedený kód injekce vrátí odpověď jako toto:

ping: unknown host uid=0(root) gid=0(root) groups=0(root)

Jak Zabránit Systému Command Injection Zranitelnosti

aby se zabránilo útočníkovi z využívání zranitelné webové aplikace a vkládání speciálních znaků do operačního systému velení, ti by se měli snažit, aby se obecně zabránilo systémová volání, kde je to možné. Ve všech případech se vyhněte vstupu uživatele jakéhokoli druhu, pokud to není nezbytně nutné. A pokud je to nutné, ujistěte se, že je správné vstupní validace – validace vstupu je vždy třeba, aby zajistili, že vaše webové aplikace kód není citlivé na jiné high-dopad chyby zabezpečení, včetně XSS a SQL Injection.

Také, deaktivujte tuto funkci ve vašem jazyce je konfigurační soubor, když to nepotřebujete, takže útočníci mohou nikdy snažit získat přístup k systémové jádro v operačním systému hostitele prostřednictvím zranitelné webové aplikace. V některých jazycích můžete oddělit provádění procesu od vstupních parametrů. Můžete také vytvořit bílý seznam možných vstupů a zkontrolovat formáty, například přijímat pouze celé číslo pro číselné id.

tabulka klasifikace a závažnosti zranitelnosti

Zůstaňte v obraze o trendech zabezpečení webu

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.