ugrás a tartalomhoz

Intranetes betörés JavaScript-tel

Hojtsy Gábor · 2006. Aug. 1. (K), 15.13
Az SPI Dynamics a napokban zajló BlackHat USA 2006 konferencián tartandó előadásának beharangozásaként tette közzé a koncepciót bemutató JavaScript kódját, melynek segítségével az intranetünk gépei ismert minták alapján felderíthetőek. Manapság már szinte minden hálózati eszközben webszerver működik, elősegítve a távoli konfigurációt. Az SPI Dynamics pedig olyan szkriptet készített, amely a termékek által használt közismert képek és a beágyazott keretek segítségével azonosítani tudja, hogy egy adott hoszt létezik-e, és hogy milyen webszervert futtat.

A közzétett kód lehetővé teszi, hogy kipróbáljuk a módszert, és egyben természetesen meg is tekinthetjük magát a felderítésre használt JavaScript kódot. Az SPI Dynamics nem épített be semmilyen támadásra alkalmas funkciót a példakódjába, de megjegyzik, hogy a JavaScript lehetőségeit nem merítették ki, csupán demonstrációval szerettek volna szolgálni.

A potenciális IP címek felderítéséhez a JavaScript Image objektumot használják a kívánt ping funkcionalitás megvalósítására, majd egy Iframe alkalmazásával állapítják meg, hogy valóban webszerver fut a gépen. A különböző webszervert is tartalmazó készülékek és az ismert webkiszolgáló programok által megszokott helyen elhelyezett képek ellenőrzésével pedig a futó kiszolgálót tudják megállapítani.

A JavaScript alapú megoldás a rendszergazdák számára azért lehet ijesztő, mert a tűzfalakat könnyedén átlépi, a betörő szándékai szerinti kód tulajdonképpen a belső hálózaton belül van már. Éppen ezért összetettebb védelemre van szükség az ilyen sebezhetőségek kivédése érdekében. A módszert részletező PDF dokumentumban az SPI Dynamics a rendszergazdáknak azt ajánlja, hogy a legfrisebb biztonsági frissítéseket alkalmazzák a potenciálisan veszélyeztetett eszközökön, illetve hálózati behatolás érzékelőt működtessenek.

A webfejlesztőknek az esetből az az elsődleges tanulság, hogy a Cross Site Scripting sebezhetőségeket mindenképpen komolyan kell venni. Nem csak arról van ugyanis szó, hogy az ellenőrizetlenül weblapunkra került JS kódok miatt a felhasználónk azonosítóját vagy jelszavát megszerezhetik (bár ez sem túl üdvözítő), hanem a látogatónk helyi rendszerét is támadásnak tehetjük ki.

További információ az XSS-ről és más sebezhetőségekről, valamint kivédésükről PHP a frontvonalon, védekezés a bemeneten című cikkünkben.
 
1

Ijesztő

janoszen · 2006. Aug. 1. (K), 15.41
A dolog azért ijesztő, mert gyk. a külső user kéréseket eregethet az intranetesnek szánt szervereknek. Az mondjuk más kérdés, hogy mennyi ideig tud futni egy ilyen program. Szerintem, ritka az az eset, hogy valóban egy pár percnél tovább futhat egy ilyen kód. De ha mondjuk elég jól meg van írva, akkor mindenféle rondaságokat meg lehet vele csinálni.
2

Harap a kicsiJ

Dualon · 2006. Aug. 1. (K), 19.36
A még pár hónappal ezelőtt is leginkább csak csilli-villi segédfunkciók kialakítására használt javascript megmutatta, hogy harapni is tud. :)

Pedig igazából ez nem JS "feature", egyszerűen csak végiggondolták a lehetőségeket. Tetszik.
3

Betörés

Bártházi András · 2006. Aug. 2. (Sze), 10.53
A trükk valóban sokmindenre alkalmas lehet, elég durvának tűnik. Ha JS segítségével komoly betörésre nem is számíthatunk, de ha megtudják a felhasználónevünket, jelszavunkat egy adott alkalmazáshoz az intraneten, a szerver felé indított kérésekkel (<img src="" /> segítségével) tudnak bármilyen GET/POST kérést imitálni, s így be tudnak lépni, létre tudnak hozni akár felhasználót is maguknak, vagy a tűzfalunkon engedélyezni egy távoli IP cím hozzáférését. Veszélyesen hangzik, de nem hiszem, hogy rövid távon megjelennének olyan megoldások, melyek széleskörűen ki is használnák.
4

kis kiegészítés

Hodicska Gergely · 2006. Aug. 2. (Sze), 13.05
Ha JS segítségével komoly betörésre nem is számíthatunk, de ha megtudják a felhasználónevünket, jelszavunkat egy adott alkalmazáshoz...

Kis tévedés, mert a CSRF támadásban pont az a pláne, hogy nem kell tudnod az authentikációs adatokat, hiszen a user a szokott módon lép be a rendszerbe. Ezért fontos, hogy ha olyan a környezet, akkor a third party cookiek tiltva legyenek, valamint lehetőleg alkalmazás szinten védekezzünk ellene (formok kapjanak valami azonosítót, csak úgy ne lehessen elküldeni; valamint ha fontos funkcióról van szó, akkor a végrhajtás előtt kérjen megerősítést).


Felhő
5

Azért

janoszen · 2006. Aug. 2. (Sze), 15.32
Azért ok, hogy durva, de mivel ez vagy AI-t vagy interaktivitást kíván, biztosítani kell, hogy az adott hálózaton belül többé-kevésbé folyamatosan legyen egy exploitolt gép, különben nem sokat ér.

Persze, ez nem bocsánat arra, hogy valaki elfeledtkezzen a védekezésről, de a támadhatóság súlyosságát (a rendszergazdák szemszögéből) valamelyest lejjebb viszi.
6

nem értem

Hodicska Gergely · 2006. Aug. 2. (Sze), 17.39
Nem igazán értem amit írtál. Olvasd el, hogy miről szól a CSRF támadhatóság. A user ilyenkor teljesen megszokott módon használja a rendszert, kvázi nem hibázik, csak előfordulhat, hogy az általa a munkája mellett használt oldalak XSS támadhatóak.


Felhő
7

Belső hálózat

janoszen · 2006. Aug. 2. (Sze), 22.03
Itt belső hálózatról volt szó, nem? Ergo, mondjuk bekerül a JS kód egy LANon belüli gépre egy tetszőleges gonosz weboldalról vagy gonosszá tett weboldalról és ott valamit csinál a LANon belül. Pl. webszerverek után kutat. Értelemszerűen ezt az információt utána vissza kell juttassa az ötletgazdának, aki valamit akar vele kezdeni. Ergo, valamilyen interaktivitást kíván. Ha még csinálni is akar utána vele valamit, akkor megint csakbe kell jutni az előbb említett módon a hálózatba. Ergo, kell, hogy valaki fent legyen azon a lapon, hogy fusson a JS, nem? Vagy én értek félre valamit?
8

nem kell többször bejutni

Hojtsy Gábor · 2006. Aug. 2. (Sze), 22.18
A bemutatott mintakód valóban csak ismert webszerverek után keres. De az intranetes webszervereken támadható programok is lehetnek SQL injection, tetszőleges távoli include és hasonló hibákkal, ami akár szintén ujjlenyomatos felismeréssel detektálható JavaScriptből. Így anélkül, hogy a JS kifelé küldene információt befolyásolhatja egy másik helyi hálózaton lévő gép (konkrétan egy szerver) működését.

Például ha van egy ismert (hibás) PHP groupware program az intraneten, aminek megfelelő URL paraméterével tetszőleges PHP kódot include-olhatunk távoli gépről, akkor ezt a szervert a JS meg tudja keresni, az include-os kérést el tudja indítani, utána viszont már a szerveren az include-olt kód azt csinál, amit csak lehet, és permanensen beépítheti magát.

Ahogy a blogbejegyzés is jelzi, a JS itt csak a kapu, amivel más sebezhetőségek kihasználhatóak. A fenti természetesen csak az én fantáziám szüleménye, és egy eléggé konkrét eset lehetséges leírása. Érdekes lenne megnézni, hogy az SPI Dynamics előadásában mi lesz még...
10

Elolvastam, de

janoszen · 2006. Aug. 3. (Cs), 07.07
Elolvatam az említett cikket, többször is.

Attól tartok, nem értitek a lényegét a mondanivalómnak. Ha egy ismetlen hálózatba jutok be ilyen módon, megkapom a webszerverek listáját és esetleg típusát. Utána, mint hacker, nyilván kielemzem ezeket az adatokat majd ezeket felhasználva egy támadást indítok.

De akkor újabb CSRF támadást kell végrehajtanom, most már módosított paraméterekkel. Ergo, meg kell várnom, amig még valaki abból a hálózatból belesétál a csapdámba. Nem jól mondom?
11

nem kell többször bejutni

Hojtsy Gábor · 2006. Aug. 3. (Cs), 10.18
Nincs szükség emberi elemzésre, a JavaScript tud elemezni, és rögtön ki tud használni sebezhetőségeket, semennyi időbe nem kerül. Nem kell kétszer bejutni. Lásd még egyszer a #8-as hozzászólásomat.
9

olvasni

Hodicska Gergely · 2006. Aug. 3. (Cs), 01.07
Miért nem olvasod el a cikk részletet, amit írtam Neked? ;)


Felhő
12

rss is hasonló cipőben

Hojtsy Gábor · 2006. Aug. 5. (Szo), 12.59
Sok RSS olvasó nem foglalkozik a tartalom biztonsági szűrésével, és így XSS-sel támadható, vagyis a fenti problémát erősíti.

Betanews: RSS Feeds at Risk From Attackers?
13

technikai részletek

Hojtsy Gábor · 2006. Aug. 9. (Sze), 13.45
A technikai részletek eléretőek itt: http://www.spidynamics.com/assets/documents/HackingFeeds.pdf
14

gyakorlati alkalmazásra szemléltető példa (IFRAME)

toxin · 2006. Aug. 13. (V), 10.16
a gugli egy már úgynézem javított exploit-ja, itt az 'RSS feed addition tool'-hoz lehetett szűretlen js kódot adni

http://jibbering.com/blog/?p=514

tanulságos dolgok ezek :)