Hlavní navigace

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.

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?

22. 3. 2011 0:23

Lamorak (neregistrovaný)

Clanek je zajimavel, ale titulek zni jak prekvapive zjisteni MF Dnes.. :D

25. 3. 2011 13:20

Zase plno zahradniku :) (neregistrovaný)

Zdravim vsechny kozly!! a slovenske superprogramatory :D co citaju dokumentaciu pred spanim.

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?