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?
Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte

Podnikatel.cz: Babiš bude mít přehled o vašich účtech

Babiš bude mít přehled o vašich účtech

120na80.cz: Víte, co je svobodná menstruace?

Víte, co je svobodná menstruace?

Lupa.cz: Co najdete uvnitř kosmické sondy?

Co najdete uvnitř kosmické sondy?

DigiZone.cz: ČTÚ červenec: rušení trochu vzrostlo

ČTÚ červenec: rušení trochu vzrostlo

Měšec.cz: Do ostravské MHD bez jízdenky. Stačí karta

Do ostravské MHD bez jízdenky. Stačí karta

Měšec.cz: Co když na dovolené přijdete o kartu?

Co když na dovolené přijdete o kartu?

Vitalia.cz: Vakcína Cervarix je oficiálně i pro chlapce

Vakcína Cervarix je oficiálně i pro chlapce

Vitalia.cz: „Sjíždět“ porno není bez rizika

„Sjíždět“ porno není bez rizika

DigiZone.cz: AXN u FreeSatu měsíc zdarma

AXN u FreeSatu měsíc zdarma

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

Vitalia.cz: Galerie: Strouhanka ze starých rohlíků? Kdepak

Galerie: Strouhanka ze starých rohlíků? Kdepak

Vitalia.cz: 9 potravin, které nesmí chybět v jídelníčku těhotné

9 potravin, které nesmí chybět v jídelníčku těhotné

Podnikatel.cz: Pozor na vykuky, imitují služby České pošty

Pozor na vykuky, imitují služby České pošty

Měšec.cz: Ceny PHM v Evropě. Finty na úspory

Ceny PHM v Evropě. Finty na úspory

Lupa.cz: Kdo vykrádá LinkedIn? Zjistit to má soud

Kdo vykrádá LinkedIn? Zjistit to má soud

Podnikatel.cz: Oznamte skutečné sídlo firmy, jinak zaplatíte

Oznamte skutečné sídlo firmy, jinak zaplatíte

Lupa.cz: Elektronika tajemství zbavená. Jak s ní začít?

Elektronika tajemství zbavená. Jak s ní začít?

Podnikatel.cz: Kauza z Vinohrad pokračuje. Policie se omlouvá

Kauza z Vinohrad pokračuje. Policie se omlouvá

Měšec.cz: Platíme NFC mobilem. Konečně to funguje!

Platíme NFC mobilem. Konečně to funguje!