XSS Reflected Nasıl Tespit ve İstismar Edilir?

Reflected XSS Nasıl yapılır?

Reflected XSS kullanıcının girilmesi beklenen parametre yerine Javascript, html kodu girerek bunu ekrana yansıtması ile tespit edilebilen XSS çeşitidir.

Saldırının nasıl yapıldığına gelecek olursak DVWA’dan XSS reflected(low) kısmını açalım. Birkaç deneme yapalım. Yaptığımız bütün denemeleri ekrana yazdırdığını göreceğiz.

 

Kaynak kodunu incelediğimizde “echo ‘Hello’ “ komutundan sonra nokta ile GET metodunu birleştirmiş. Burada GET metoduna karşı hiçbir önlem alınmadığını ve denetlemeye tabi tutulmadığını görüyoruz. Bunun anlamı istediğimiz html kodunu ya da özel karakteri sayfada çalıştırabileceğimizdir.

Şimdi javascript kodunu form alanına yazıp neler olacağını görelim. ‘<script> alert (“XSS zafiyeti var”)</script>’ kodunu yazıp submit diyoruz ve küçük bir pencere açılıp yazdığımız mesaj kullanıcıya gösteriliyor. Burada daha zararlı bir komut kullansaydık cookie çalma, sayfanın içinde başka sayfaya yönlendirme gibi işlemler yapabilirdik.

Buna önlem alınmış bir seviyeyi yani DVWA’yı medium seviyesini inceleyelim. Kaynak kodunu incelediğimizde GET metodundan önce <script> etiketine önlem alındığını görüyoruz. Burada str_replace fonksiyonun eğer bir <script> etiketi görürse onu sildiğini görebiliyoruz. Peki biz iki tane <script> etiketi kullanırsak GET metodu ne yapabilir ki?

Şimdi form alanına <script><scripT>alert(“XSS zafiyeti yine var”)</script> yazıp gönderiyorum. Siz iç içe de yazabilirsiniz hangisinin silindiğinin anlaşılması ikinci etiketteki “t” harfini büyük yazdım. 

Görüldüğü üzere gibi uyarı mesajını yine verdi. Kaynak kodunu incelediğimizde ilk etiketi silmiş ama ikinci yazdığım etiket hala duruyor. Bu da kodumuzun hala çalışmasını sağlıyor.

Nasıl Önlenir?

High levele baktığımızda ise htmlspecialchars() fonksiyonunu görüyoruz. Bu kullandığımız özel karakterleri engelliyor ve normal karaktere dönüşmesini sağlıyor. Bir de kullanıcıların güvenliği için anti-CSRF token güvenlik mekanizmasının uygulandığını görüyoruz. 

Bir de bu önlemlere sadece kullandığımız metodları ve fonksiyonları içeren bir whitelist’i kodumuza eklersek saldırıyı önlemenin tadı tuzu olacaktır.

Yazar Hakkında

Reply