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?
Vitalia.cz: Jíme přesolené potraviny. Zrovna tyhle

Jíme přesolené potraviny. Zrovna tyhle

Měšec.cz: Cestujte bez starostí, získejte výhodné pojištění

Cestujte bez starostí, získejte výhodné pojištění

120na80.cz: Běžecká lékárnička: jak si poradit?

Běžecká lékárnička: jak si poradit?

DigiZone.cz: Skylink přidává kanály už teď

Skylink přidává kanály už teď

Lupa.cz: Text umírá, na webu zbude jen video

Text umírá, na webu zbude jen video

DigiZone.cz: ČT veze bronz z klání televizní grafiky

ČT veze bronz z klání televizní grafiky

Podnikatel.cz: "Okurku" vyřeší slevové servery. Už jim věřte

"Okurku" vyřeší slevové servery. Už jim věřte

Lupa.cz: Vydavatelé jsou v háji, ale neumí si to připustit

Vydavatelé jsou v háji, ale neumí si to připustit

Lupa.cz: eIDAS je tu. O co přijdeme u elektronických podpisů?

eIDAS je tu. O co přijdeme u elektronických podpisů?

Lupa.cz: Jaké IoT tarify nabízejí mobilní operátoři?

Jaké IoT tarify nabízejí mobilní operátoři?

Podnikatel.cz: Eseróčko vs. živnost. Co vyhrává?

Eseróčko vs. živnost. Co vyhrává?

DigiZone.cz: Nova: technické pauzy každé 1. pondělí

Nova: technické pauzy každé 1. pondělí

DigiZone.cz: Kritické poznámky k DVB-T2

Kritické poznámky k DVB-T2

DigiZone.cz: Krajské televize na okraji zájmu?

Krajské televize na okraji zájmu?

Vitalia.cz: Epidemie: Klíšťová encefalitida po ovčím sýru

Epidemie: Klíšťová encefalitida po ovčím sýru

DigiZone.cz: Skylink: Nova Sport volně

Skylink: Nova Sport volně

DigiZone.cz: TV Nova a její postoj k DVB-T2

TV Nova a její postoj k DVB-T2

DigiZone.cz: ČTÚ květen: rušení TV vysílání narůstá

ČTÚ květen: rušení TV vysílání narůstá

DigiZone.cz: Soud zakázal šíření TV Markíza v ČR

Soud zakázal šíření TV Markíza v ČR

DigiZone.cz: Skylink zapojil nový transpondér

Skylink zapojil nový transpondér