Az alábbi postot a hacktivity 2008 rendezvény kapcsán írtam le. A féreg olyan program, amely képes a felhasználó beavatkozása nélkül is terjedni.
Az XSS féreg (XSS=Cross Site Scripting - weboldalak kereszt scriptelése) olyan féreg, amely a böngészők használata során terjed (mindegy, hogy Firefox, Internet Explorer vagy más böngésző). Az a lényeg, hogy a böngészőben le lehessen futtatni javascript kódot. A kódnak két része van.
Az egyik a propagáló kód. Ennek az a feladata, hogy az oldal lefuttatása után a kód önmagát átmásolja egy másik munkaállomásra, például egy üzenet küldésével.
A kód másik része a hasznos teher, a payload kód. Ennek az a feladata, hogy adatokat lopjon el, módosítson, küldjön egy megadott helyre.
Hogyan juthat el a fertőzés egy böngészőbe, azaz egy weboldalra? Vannak olyan böngésző pluginok, (mint például az Acrobat Reader 9 és az azelőttiek) amelyek programozási hibát tartalmaznak. Konkrétan, ha a mypage.com oldalunkon megtalálható a foo.pdf fájl, és a felhasználót rávesszük, hogy az alábbi url-t indítsa el (például egy html leélben egy linket készítünk), akkor ez a kód meghívja az ugyanezen a szerveren lévő uxss,js javascript fájlt és annak tartalmát lefuttatja.
http://mypage.com/foo.pdf#blah=javascript:var%20xhr%20=%20new%20XMLHttpRequest(); xhr.open(%22GET%22,%20%22uxss.js%22,%20false);xhr.send(null);eval(xhr.responseText);,
Miért baj az, ha ez a javascript lefut? Azért, mert nem a böngésző, hanem a lokális gépre telepített Acrobat Reader futtatja ezt a fájlt, aminek joga van hozzáférni a saját winchesterünk fájljaihoz, amikkel mindenféle gonoszságot tud művelni.
Hasonló probléma, ha van egy beviteli űrlapunk és azon javascript kódot tudunk bevinni úgy, hogy az legközelebb megjelenjen. Például ha az én website-omon a hozzászólások tartalmazhatnának javascript kódot, akkor egy támadó beírhat olyan javascript kódot, amit a weboldal a megjelenítéskor lefuttathat egy user.
A kód a távoli szerveren van eredetileg, de felhasználó böngészőjében fut le. Ez a javascript kód el tudná lopni az oldalamon lévő cookie-mat, amiben benne van a session azonosítóm. Annak segítségével pedig ebben az időpontban be lehet lépni az oldalra.
További információt a Tudásbázisban is találtok.