Injekce s dávkou jedu mohou být i smrtelné

Petr Závodský 22. 3. 2011

K nejzávažnějším útokům může dojít i po použití malé dávky řetězce znaků. Šikovnou dávkou můžete získat veškerá data anebo sprovodit web (a nejen ten) z virtuálního světa. Dnes útočníkem používajícím injekce může být téměř kdokoliv – injekce i s návodem jsou k sehnání na každém „rohu“ internetu.

V minulém díle seriálu o OWASP – Deset nejběžnějších bezpečnostních chyb na webu jsme si vyjmenovali první desítku nejzávažnějších bezpečnostních slabin webových aplikací. Dnešním dílem se začneme blíže seznamovat s jednotlivými slabinami z OWASP Top 10.

OWASP Top 10 2010 – A1 – Injection

Obecné informace:

Základní informace na stránkách OWASP: Top 10 2010 – A1

Potenciální útočníci: Interní i externí uživatelé, administrátoři aj.; všichni, kdo do systému umí poslat nedůvěryhodná data.

Vektor útoku: Útočník posílá často jednoduché textové řetězce, které využívají syntaxi cíleného interpreteru. Prakticky každý zdroj dat může obsahovat „injekci“. Útočníci nezřídka používají pro odhalení slabin fuzery a skenery.

Slabina: Injektování nastává, když aplikace nechtěná data pošle do interpreteru. Náchylnost aplikací k útokům injektováním jsou velmi časté, zvláště u starších kódů – v dotazech SQL, LDAP, XPath, OS příkazech, programových argumentech atd. Chyby se poměrně snadno dají nalézt zkoumáním kódu, hůře testováním. Při testování mohou pomoci skenery a fuzzery.

Technické dopady: Dopady mohou být velice pestré. Může dojít ke ztrátě dat či k jejich poškození, ke ztrátě odpovědnosti, odepření přístupu atd. Někdy může dojít až k úplnému převzetí kontroly nad systémem.

Obchodní dopady: Zvažte obchodní dopady dotčených údajů a platformy interpreteru. Mohou být znehodnocena nebo ukradena všechna či jen některá data. Mohla by být poškozena vaše pověst? 

Příklady možných scénářů:

K simulaci útoku používám v minulých dílech zmiňované nástroje proxy WebScarab a „trenažér“ WebGoat.

Scénář 1. Injection Flaws – Numeric SQL Injection:

1. Spusťte WebGoat.

2. Spusťte WebScarab. Položku Proxy / Manual Edit / Intercept request mějte nastavenou na off.

3. WebGoat: Zobrazte si Injection Flaws / Numeric SQL Injection

4. WebScarab: Položku Proxy / Manual Edit / Intercept request nastavte na on. V nabídce Methods vyberte POST.

5. WebGoat: Vyberte možnost z výběrového pole („Select your local weather station“). Klikněte na GO. POST požadavek je odeslán. Požadavek se však na cestě k serveru zastaví v proxy WebScarab.

6. WebScarab: Zobrazilo se nové okno – Edit Request. V záložce Parsed / URL Encoded v proměnné station přepište hodnotu „101“ na „101 OR 1=1“. Změnu akceptujte potvrzením Accept changes – tím jste odeslali změněný požadavek na server.

7. WebGoat: Zobrazil se obsah celé tabulky weather_data. I data ve výběrovém poli nepovolených položek.

8. Webgoat: Prostřednictvím „Show Java“ zobrazíte zdrojový kód, v němž můžete zjistit, že příčina úspěchu injekce spočívá v neošetřeném SQL selektu

SELECT  * FROM weather_data WHERE station = 101

Přestože SQL Injection jistě patří mezi nejznámější a velmi časté útoky injektováním, je nutné poznamenat, že se nejedná o jedinou „injekční“ techniku – jak ostatně napovídá následující seznam, jenž zcela jistě není vyčerpávající:

Scénář 2. Injection Flaws – Command Injection

1. Spusťte WebGoat.

2. Spusťte WebScarab. Položku Proxy / Manual Edit / Intercept request mějte nastavenou na off.

3. WebGoat: Zobrazte si Injection Flaws / Command Injection

4. WebScarab: Položku Proxy / Manual Edit / Intercept request nastavte na on. V nabídce Methods vyberte POST.

5. WebGoat: Vyberte možnost z výběrového pole („Select the lesson plan to view:“). Klikněte na View. POST požadavek je odeslán. Požadavek se však na cestě k serveru zastaví v proxy WebScarab.

6. WebScarab: Zobrazilo se nové okno – Edit Request. V záložce Parsed / URL Encoded v proměnné HelpFile přepište hodnotu AccessControl­Matrix.help na AccessControl­Matrix.help “ & ping 127.0.0.1 (Předpokládám, že máte WebGoat na localhostu). Změnu akceptujte potvrzením Accept changes – tím jste odeslali změněný požadavek na server.

7. WebGoat: Zobrazil se výpis injektovaného příkazu.

widgety

Samozřejmě se nemusíte omezovat jen na ping.

Závěr

Útoky vkládáním zákeřného kódu jsou snadné. Slabiny umožňující tyto útoky se vyskytují poměrně často. Technické dopady mohou být přitom kritické. Existuje ohromné množství webových aplikací, které slabiny typu injection obsahují – patří mezi ně úřady, nemocnice, vysoké školy atd., tedy weby, které by měly být maximálním možným způsobem zabezpečeny. Vážnější injection slabiny v kombinaci s nedostatečným zabezpečením serverů a síťové infrastruktury umožňují útočníkovi převzít kontrolu nejen nad samotným webem, ale také nad vnitřní sítí, servery a jednotlivými stanicemi.

Našli jste v článku chybu?
Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Vitalia.cz: Tesco nabízí desítky tun jídla zdarma

Tesco nabízí desítky tun jídla zdarma

Vitalia.cz: Tradiční čínská medicína a rakovina

Tradiční čínská medicína a rakovina

120na80.cz: Pálení žáhy: která jídla ne a co nás uzdraví?

Pálení žáhy: která jídla ne a co nás uzdraví?

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

Podnikatel.cz: Letáky? Lidi zuří, ale ony stále fungují

Letáky? Lidi zuří, ale ony stále fungují

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Lupa.cz: Další Češi si nechali vložit do těla čip

Další Češi si nechali vložit do těla čip

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

Vitalia.cz: 5 chyb, které děláme při skladování potravin

5 chyb, které děláme při skladování potravin

Vitalia.cz: Tahák, jak vyzrát nad zápachem z úst

Tahák, jak vyzrát nad zápachem z úst

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup

Vitalia.cz: Fyzioterapeutka: Chůze naboso? Rozhodně ano!

Fyzioterapeutka: Chůze naboso? Rozhodně ano!

DigiZone.cz: Numan Two: rozhlasový přijímač s CD

Numan Two: rozhlasový přijímač s CD

DigiZone.cz: Funbox 4K v DVB-T2 má ostrý provoz

Funbox 4K v DVB-T2 má ostrý provoz

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

DigiZone.cz: Digi Slovakia zařazuje stanice SPI

Digi Slovakia zařazuje stanice SPI