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

CES 2017: Lenovo predstavilo nové notebooky ThinkPad X1, Miix 720 a prvý smartfón s podporou Tango - Lenovo Phab 2

03.01.2017 00:09

Lenovo odštartovala ďalší ročník veľtrhu s celou škálou nových produktov. Nová generácia produktov radu ThinkPad X1 Carbon 2017 je najľahším 14-palcovým biznis notebookom, ktorý váži len 1,14kg a obsa ...

Ako na to

Tipy a triky: Ako správne poskytovať IT pomoc a ako o ňu správne žiadať?

14.12.2016 09:40

Či už ste pokročilý používateľ počítača, ktorý často poskytuje IT pomoc známym a rodine, alebo ste to vy, kto o takúto pomoc zvyčajne žiada, ľahko sa stanete nechcenou príčinou frustrácie a obrovskej ...

Ako na to

Tipy a triky: Ako diagnostikovať a opravovať neúspešné upgrady Windows 10

14.12.2016 09:37

Microsoft prešiel s Windows 10 do celkom novej éry vývoja. Namiesto samostatných verzií Windows, vydávaných zvyčajne s odstupom dvoch až piatich rokov (XP, Vista, 7 a podobne), začal svoj systém vyvíj ...

Žiadne komentáre

Vyhľadávanie

Kyocer TASK

Najnovšie videá