Xss Şeysi...
-
Xss nedir? ne değildir ?
bunun cevabı zaten sık sık tekrar edildi. Birkez daha tekrar edelim ve kendi dökümanımızı yazalım.
Xss Cross site scripting ( çapraz site kodlaması ) anlamında kullanılır.Xss bir web sayfasının gönderdiği get veya post yöntemlerinden faydalanarak kod çalıştırma işlemidir.
Temsil-i Misal:CODE<html>
<head>
<title>Xss</title>
</head>
<body>
<h1> Xss </h1>
<br/>
<form name="xss" action="xssal.php" method="get">
Aranacak Kelime : <input type="text" name="xss"/><br/>
<input type="submit" value="Ara"/>
</form>
<!-- Form oluşturduk öncelikle buraya kadar herşey normal xss çıkartacak bir durum yok -->
</body>
</html>
Yukarıdaki formu göndereceğimiz xssal.php yi oluşturalım..CODE<html>
<head>
<?php
$kelime = $_GET['xss'];
//Buraya dikkat burda hiç bir filtreleme yapmadan veriyi aldık.
?>
<title>
<?php echo $kelime; //İşte önemli hususlardan birisi daha.
//burada başlık kısmına aranan kelimeyi yazdırıyoruz. Üstelik filtresiz bir kelime :S
?>
</title>
</head>
<body>
<!-- arama kodlarını yazmıyorum -->
Aranan '<?php echo $kelime; ?>' kelimesi kayıtlarda bulunamadı..
<!-- işte buyrun bi yere daha yazdırdık :S -->
<br />
Tekrar Ara: <br/>
<form name="sada" action="xssal.php" method="get">
Aranacak Kelime: <input type="text" name="xss" value="<?= $kelime;?>"><br/>
<!-- alın işte bir yere daha yazdırdık ... -->
<input type="submit" value="ara"/>
</form>
</body>
</html>
birinci form ile bilgileri ikinci forma gönderiyoruz. bunda bi anormallik yok.
ikinci formda ise birinci formdan gelen bilgileri alıyoruz. üstelik filtresiz. filtresiz almak demek sql inj. açığı ve sayfada o kelimeyi üç farklı yerde yazdırmakta xss açığı demektir...
bu sayfayı açın. gönderim kısmına "></title></head><script>alert(123);</script> yazın...
ikinci sayfaya göndermek için tuşa bastığınızda karşınıza tam üç adet 123 uyarısı çıkacaktır. buda demektirki geçmiş olsun xss i yedik.
filtrelemiyosanız sayfaya yazdırmayın ve veritabanında arma yaptırtmayın.
sağlam halini yapalım o zaman
gönderme işlemi aynı şekilde kalacak...
sadece alım işleminde değişiklik yapacağız...CODE<html>
<head>
<?php
$kelime = htmlspecialchars(strip_tags(addslashes($_GET['xss']));
// htmlspecialchars(strip_tags(addslashes <- bunlar php nin filtreleme fonksiyonudur . html karakterlerini filtrelerler ve tırnak işaretleri önüne \ koyarlar...
?>
<title>
<?php echo $kelime;
?>
</title>
</head>
<body>
<!-- arama kodlarını yazmıyorum -->
Aranan '<?php echo $kelime; ?>' kelimesi kayıtlarda bulunamadı..
<br />
Tekrar Ara: <br/>
<form name="sada" action="xssal.php" method="get">
Aranacak Kelime: <input type="text" name="xss" value="<?= $kelime;?>"><br/>
<input type="submit" value="ara"/>
</form>
</body>
</html>
yukarıdaki ise sağlam kod. deneyin görün sonucu
biraz karışık oldu ama idare edin artık
-
nury bence senin test ettiğin sayfanın kodları farklı
-
maalasef arkadaşım yemiyor :) en altta kod sağlam kod. sen yukardakini denediysen zaten hatalı diye belirtmişim :) veri alışında htmlspecialchars(strip_tags(addslashes($_GET['xss']))) bu şekilde 3 filtreden geçirdikten sonra zaten yemesi saçma...
Toplam Hit: 2066 Toplam Mesaj: 5
