» »

Vzpostavljanje prikritih omrežij s pomočjo XSS ranljivosti in JavaScripta

Slo-Tech - O XSS ranljivostih s(m)o na Slo-Techu že pisali. A kljub temu, da gre za tim. ranljivost na strani spletnega odjemalca, so posledice zlorabe lahko precej drastične.

Raziskovalec Billy Hoffman, znan tudi pod imenom Acidus, je namreč januarja lani na konferenci Black Hat Federal 2006 predstavil prispevek z naslovom Analysis of Web Application Worms and Viruses. V prispevku je predstavil možnosti napadov s tim. spletnimi virusi, ki izkoriščajo XSS ranljivosti ter AJAX tehnologijo.

V soboto pa bo imel Hoffman predavanje na to temo tudi na Smoocon konferenci v Washingtonu.

Na konferenci bo predstavil možnosti vzpostavitve prikritih omrežij (tim. botnetov) s pomočjo izkoriščanja XSS ranljivosti in JavaScripta. Predstavil bo tudi konkreten primer, aplikacijo Jikto, ki omogoča samodejno vzpostavitev prikritega omrežja.

Orodje Jitko se lahko preko okužene spletne strani namesti na uporabnikov računalnik. Po namestitvi lahko orodje izvaja samodejno skeniranje, oz. iskanje varnostnih ranljivosti na spletnih straneh (npr. XSS ranljivosti in SQL vrivanje), rezultate pa sporoča poljubnemu strežniku. Hkrati pa se lahko tudi poveže v prikrito omrežje in čaka na navodila upravljalca omrežja. Upravljalec omrežja lahko vidi kdaj je računalnik vključen in kdaj je neaktiven ter mu pošilja ukaze, ki se izvedejo lokalno.

Zadeva je še posebej nevarna zato, ker je praktično nemogoče ločiti zlonamerno JavaScript kodo od dobre. Ker se JavaScript v Web 2.0 aplikacijah pogosto spreminja sama, je tudi nemogoče preverjati integriteto JavaScripta z digitalnimi prstnimi odtisi, torej s tehniko, ki jo antivirusna podjetja uporabljajo za zaznavanje virusov. Hoffman zato napoveduje eksplozijo tim. spletnih virusov ter svari, da tudi majhna varnostna ranljivost v spletni aplikaciji lahko predstavlja resno grožnjo.

Bomo pričeli v spletnih brskalnikih izklapljati JavaScript?

22 komentarjev

JurijTurnsek ::

vprašanje: v praksi to pomeni da najebejo strani (oz strežniki) ali ima to kaj veze s PCji? je to morda odvisno tudi os OS ki ga laufaš?
http://www.slatnaskejta.com

fiction ::

KoRnholio8: Streznik pri takih napadih "ne najebe". JavaScript se izvaja v browserju pri tebi.

Ok, XSS bo samo omogocil, da se bo neka zlobna JavaScript koda nahajala na tisti strani in ob vsakem obisku
tiste strani se bo ta JS skripta pri uporabniku tudi izvedla (torej nekako je tist XSS misljen samo za hitrejse razmnozevanje)...

Samo naprej pa ne razumem.
JavaScript tece v "sandboxu" - ne more dostopati do lokalnega filesystema, zaradi "same origin policy" ne more
requestati strani z drugih domen (drugacnih od domene od webserverja od koder je prisla, ce ze govorimo o AJAX-u) itd.
Torej ne razumem kako se bo lahko s tem (brez intervencije uporabnika) zlobna koda sploh namestila na uporabnikov racunalnik,
oz. kako bo lahko tist JavaScript sam delal nek "scan" in podobne zadeve.
Razen, ce ima brskalnik kaksno varnostno pomankljivost, ki to omogoca... ampak to pa ni stvar JavaScripta kot takega.

Zgodovina sprememb…

  • spremenil: fiction ()

Matthai ::

JavaScript koda pač pošilja http requeste in s tem dela scan. Dobljene rezultate lahko potem nekam "submita".

Na enak način lahko vzpostavi povezavo z "nadzornim centrom". Seveda ne more izvajati ravno kakršnihkoli ukazov, lahko pa komot pošilja spam, izvaja DDOS napad, ali pa obišče spletno stran z 0-day exploitom in posledično prevzame popoln nadzor nad mašino.
Zloraba oblasti, avtokracija in tema nikoli ne pridejo hipoma, vedno je vmesno
obdobje mračenja, ko se dan preveša v noč; biti moramo pozorni opazovalci
okolja in varuhi luči, da ne postanemo nemočni ujetniki teme. --W. Douglas

darkolord ::

Bomo pričeli v spletnih brskalnikih izklapljati JavaScript?

= "Bomo nehali uporabljati splet?"
spamtrap@hokej.si
spamtrap@gettymobile.si

fiction ::

HTTP requestov ne more kar tako posiljati. Zaradi same origin policy
se request lahko poslje samo, ce je za isti racunalnik od koder izvira ta JavaScript. Torej na
tisti webserver bo zadeva lahko poslala kakrsnkoli request, ampak direktno nekam drugam pa ne bo mogla (vsaj ce ni
bugov pri implementaciji tega v browserju - IE je imel vcasih neke probleme s tem afair).
Rezultate bi se lahko nekako preko XSS nekam dodajala in hacker bi te potem pridobil zadeve z obiskom tiste strani.
Ampak kako pa zadeva izvaja "scan" nad neko drugo masino ali pa napade?

fiction ::

Aja glede tistega o IE:
Mail na fulldisclosure@ od Zalewskega
Neka podobna ideja kot to omenjeno v clanku - vendar pa seveda zadeva dela samo zaradi buga v browserju in ne kar tako.
Ne vem zakaj je avtor omenjal nek check JavaScript-a, ce pa dejanski vzrok tici drugje. JavaScript more bit tak,
da se lahko zmeraj izvaja in s tem ne predstavlja varnostne groznje za uporabnika.

Matthai ::

Darkolord: točno. Zato je vprašanje kako se boš sploh branil proti takim napadom? Bojim se, da je odgovor: ne moreš se.
Zloraba oblasti, avtokracija in tema nikoli ne pridejo hipoma, vedno je vmesno
obdobje mračenja, ko se dan preveša v noč; biti moramo pozorni opazovalci
okolja in varuhi luči, da ne postanemo nemočni ujetniki teme. --W. Douglas

darkolord ::

Malo dvomim, da je to ultimativni napad, (ki pomeni konec spleta) 8-).
spamtrap@hokej.si
spamtrap@gettymobile.si

fiction ::

Malo paranoje je zmeraj dobro (vsaj kar se tice varnosti), ampak tole je pa ze malo bolano imho.
Kot da bi rekel, da zaradi vseh bugov v programski opremi, sploh ne bos vec uporabljal nikakrsne programske opreme.

JavaScript tece ravno zaradi tega v "sandboxu". In pac untrusted koda tudi ne sme dobiti vec privilegijev kot jih nujno potrebuje.
Vsak nov "feature" lahko hitro pomeni varnostni problem, zato je treba take dodatke v jeziku tudi skrbno nacrtovati.
JavaScript skripta je lahko tudi podpisana, ampak potem mora pac user potrditi izvajanje (tako dobi JS tudi vec pravic).

Resitev tega je uporaba up-to-date browserja, ki se res drzi vseh idej ter common-sense (ne klikati na vsak "OK"),
na strezniski strani pa seveda zagotoviti da ni problemov z XSS.

Matthai ::

Hja, saj ni bilo čisto resno mišljeno... zato je pa v kurzivu. :D
Zloraba oblasti, avtokracija in tema nikoli ne pridejo hipoma, vedno je vmesno
obdobje mračenja, ko se dan preveša v noč; biti moramo pozorni opazovalci
okolja in varuhi luči, da ne postanemo nemočni ujetniki teme. --W. Douglas

MrStein ::

Resitev je na dlani : Uporabnik je kriv in pika ! ;)
Teštiram če delaž - umlaut dela: ä ?

darkolord ::

Uporabnik orodij za izdelavo spletnih strani :D
spamtrap@hokej.si
spamtrap@gettymobile.si

Looooooka ::

grem stavt da so zadevo napihnl do onemoglosti.
pa bogve kere browserje so to uporablal.
in na konc...kdo hudica ma pa tok cajta kot ta model =)
ampak ok...taki morjo pac paniko zaganjat pa pozornost iskat.
da se bo pa tole razsiril je pa pomojem velk BS.ce mu je slucajn kj ratal nardit bojo lepo vsi browser developerji si vzel cajt in dal se kksn nadlezn prompt(ceprou JE ZE NOT) not ki ti bo zamoril da probava zadeva postat neki na en xy url.ce mu je pa ze ratal na lokalno masino neki instalirat...pol bojo pa na microsoftu z visto zelo jokal =)

zerox ::

Same origin policy velja za XHR...ne velja pa za npr. dynamic script tag. Requeste like POST na tuje strežnike se lahko pošilja na drug način
<html>
<body>
	<form method="POST" id="zloben" name="zloben" action="https://moja.zrtev.si/input.asp">
	<input type=hidden name="data" value="<script>alert('xss');</script>">
	<input type=hidden name="Prenesi"  id="btn_1" value="1">
	</form>
	<script>document.zloben.submit()</script>
</body>
</html>

Portscan z javascriptom:
http://blogs.ittoolbox.com/security/sin...

Me pa zanima na kak način so uspeli namestiti kodo na lokalno mašino oz. ali je bilo to browser specific.

Sicer pa če je npr 1000 obiskovalcev na strani, ki gosti zlobno kodo, kjer v zanki zahteva browser npr odpiranje neke slike (na tvojem IP naslovu) v nedogled... dobimo neke vrste ddos napad?

Zgodovina sprememb…

  • spremenil: zerox ()

In Extremis ::

Po zadnjih informacijah Billy Hoffman na Shmooconu (vseeno) ne bo objavil Jikto izvorne kode, ampak bo izvedel le demonstracijo. Orodje bo tako (še nekaj časa) ostalo v rokah posvečenih. Kar je IMHO tudi najboljše...

Eksperti, ki so aplikacijo že "testirali" zagotavljajo, da ne prinaša nič revolucionarnega, saj naj bi bila le skupek že znanih tehnik, metod in exploitov.

Še en način ponarejanja Requestov:
http://www.securityfocus.com/archive/1/441014/30/0/threaded

Matthai ::

Hehe, ali pa se Hoffman boji, da mu bodo spet zatezili s sodno prepovedjo... no ja, kakorkoli ze, vseeno je bolje, da zadeve ne dobi stotine script kiddyev takoj v roke.
Zloraba oblasti, avtokracija in tema nikoli ne pridejo hipoma, vedno je vmesno
obdobje mračenja, ko se dan preveša v noč; biti moramo pozorni opazovalci
okolja in varuhi luči, da ne postanemo nemočni ujetniki teme. --W. Douglas

fiction ::

S tem se ne morem strinjati. Ce gledamo s stalisca varnosti je veliko bolj problematicno ce neka stvar ostane znana samo krogu posvecenih,
kot pa ce jo poznajo vsi. Nikoli namrec ne moremo vedeti kaj bodo tisti ljudje s tem znanjem naredili.
To da so bili dovolj "pametni" in napako odkrili, namrec se ne pomeni, da je ne bodo zlorabljali za vdore.
Enako velja tudi za razne pripomocke.

Vsaka zadeva bi se morala objaviti. In to cimprej. Seveda le PoC, ne pa nekaj s cimer lahko script-kiddiji povzrocajo kaos.

V tem konkretnem primeru (ce je res, da je vecina pristopov znana ze od prej), najbrz niti demonstracija
niti objava ni potrebna. Se pa seveda da objaviti vse skupaj tudi tako, da ljudje razumejo princip, ne morejo
pa vsega skupaj direktno uporabiti za svoje zle namene (minimalne spremembe v sourcu, odstranitev kaksnega
za razumevanje nepomembnega dela), ali pa pac proof of concept. Pri ne vem, buffer overflowu bi recimo
shell koda v PoC exploitu lahko izpisala uid, ne pa pognala shell ali kaj takega.

In Extremis ::

Nekdo je omenil (post je bil pobrisan), da so buffer overflowi stvar preteklosti. Take a look(a): http://www.dshield.org/diary.html?storyid=2492
Remote code execution. Ups, saj res. SCADA nima ASLR...

Definitivno sem pro-FD (razen izjemoma :) )

Zgodovina sprememb…

MrStein ::

Nekdo je omenil (post je bil pobrisan), da so buffer overflowi stvar preteklosti.

Hja, jaz se spomnim, da ko so odkrivali buffer overflow, so eni trdili, da na x86 to ne bo nikoli delalo. Približno kot če bi trdil, da švedska voda ni mokra. Ampak en (ugleden) folk je to trdil... Whatever ;)
Teštiram če delaž - umlaut dela: ä ?

Matthai ::

Ja, sj sem jaz tudi za disclosure, ni pa mi všeč, ko nekdo da izdelano napadalsko orodje v javnost. Naj da proof of concept, naj malo prej obvesti proizvajalce, ne pa da da kar botnet development tool v javnost.

Je pa to še vedno bolje, kot da o zadevi sploh ne črhne.
Zloraba oblasti, avtokracija in tema nikoli ne pridejo hipoma, vedno je vmesno
obdobje mračenja, ko se dan preveša v noč; biti moramo pozorni opazovalci
okolja in varuhi luči, da ne postanemo nemočni ujetniki teme. --W. Douglas

In Extremis ::

Kiddies unite. Jikto code leaked :)

Uradno je kodo nekdo (prebrisano) smuknil med prezentacijo na Schmoocon. Če koga zanima kako Jikto pretenta "Same origin policy" ... z proxiji (npr. Google Translate, proxydrop...). Really smart.

Pa še to, če se boste slučajno podali na lov za primerkom kode, baje se že dobijo "modificirane" različice. Beware...

MrStein ::

"This this vulnerability is only theoretical ..." >:D
Teštiram če delaž - umlaut dela: ä ?


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

JavaScript ugrabljanje

Oddelek: Novice / Zasebnost
202416 (1678) Matevžk
»

(Ne)nevarni XSS napadi

Oddelek: Novice / Varnost
243571 (2089) nubes
»

Spletne urice: Kako urediti tabelo z JavaScriptom in kakšno povezavo ima to z Ajaxom?

Oddelek: Novice / Kiberpipa
62152 (1566) minmax
»

Mozilla Firefox 2 RC2 je tu

Oddelek: Novice / Brskalniki
435060 (2809) OmegaBlue
»

Prikaz še enega napada na anonimnost

Oddelek: Novice / Zasebnost
263067 (1973) MrM

Več podobnih tem