Reflected XSS Zafiyeti, Önlemler, Bypass ve Saldırı İzleri

Amaç

DVWA Lab. ortamında Reflected XSS zafiyetinin bir saldırgan tarafından nasıl istismar edileceği ve saldırı neticesinde erişim log kayıtlarında nasıl izler oluşacağını öğrenmek.

Reflected XSS Nedir?

Cross-Site Scripting (XSS): HTML kodlarının arasına istemci tabanlı kod yerleştirilmesi sonucu kullanıcının tarayıcısında istenen istemci tabanlı kodun çalıştırılabilmesini sağlayan zafiyet türü.

Cross-Site Scripting yani XSS saldırılarının Reflected, Stored ve DOM olmak üzere üç çeşidir bulunmaktadır. Bu yazımızda bizler Reflected XSS saldırı türüne değineceğiz. Reflected kelimesi dilimizde yansıtılmış, yansıyan anlamlarına gelmektedir ve bu zafiyetinde mantığı budur.

Ziyaret edilen web uygulamasındaki parametre değerine, kullanıcının javascript kodu girerek ekrana kendi değerlerini yansıttığı XSS türüne Reflected XSS denmektedir.

DVWA Reflected XSS – {Low Level}

Görüldüğü üzere aşağıda bize ismimizi soran bir form bulunmaktadır. İsminizi yazdıktan sonra submit butonuna basınca ekrana “Hello Cenk” yazmaktadır. Burada kullanıcı tarafında girilen veriler GET metodu ile gönderildiği için girilen değer URL adres satırına yansımaktadır. Bu nedenle URL adres satırında yer alan linki alarak Cenk yerine başka isimler yazmanız ile formu doldurarak işlem yapmanız arasında herhangi bir fark bulunmamaktadır. Bu husus göz önünde bulundurulduğunda bu linki bir başkasına tıklatarak sanki o kullanıcının form kutusuna veri girerek gönderme işlemi yapmış gibi gösterebiliriz.

Zafiyetin istismarına geçmeden önce kaynak kodlara göz atarak uygulamayı anlamaya çalışalım. Aşağıdaki resimde görüldüğü üzere kullanıcıdan gelen input’u temsil eden $_GET[‘name’] ifadesi hiçbir denetlemeye tabi tutulmadan ekrana yansıtılmaktadır.

Şimdi burada “Cenk” ismi yerine form kutusuna javascript kodu yazacağız. Eğer site sahibi kullanıcıdan gelen veriyi herhangi bir denetim mekanizmasına sokmadan doğrudan işlem yaptırıyorsa ekrana başarılı bir şekilde “Hacked” yazdırabileceğiz. Resimde görüldüğü üzere cenk yerine ekrana hacked uyarı vermesi için javascript kodu yazıyorum.

Bizim burada amacımız temel olarak saldırı türlerini tanımak ve log kayıtlarına nasıl yansıdığını anlatmaktır. Oysa ki bu zafiyet sayesinde hedef siteyi ziyaret eden kurbanın DVWA’ya ait çerez bilgisi çalınarak kurbanın adına oturum açılabilir. Bu konuyla ilgili senaryoyu http://www.includekarabuk.com/kategoriler/DVWAUygulamasi/Ders-19—Reflected-XSS-Low-Level.php URL adresinde bulabilirsiniz.

DVWA Reflected XSS – {Medium Level}

Bu zafiyetin orta seviyesinde önce kaynak kodları inceleyerek ne tarz önlemler aldıklarını inceleyelim.Burada aşağıdaki resimde görüldüğü üzere kullanıcıdan gelen veri kelimesini içeriyorsa str_replace() fonksiyonu sayesinde silinmektedir. Böylece küçük harfle script kodu yazıldığında çalışmayacak onun dışında yer alan veriler ekrana yansıyacaktır.

Bu güvenlik mekanizmasını atlamanın iki yolu bulunmaktadır. Sadece küçük harflerle yazımı engellendiği için büyük harflerle ilk düşük seviyedeki gibi yazarsak bypass etmiş olacağız.

İkinci olarak ise; aşağıdaki şekilde başladığımız takdirde ortadaki renkli kısım silinecek birleştiğinde ise yeniden kodumuz başarılı bir şekilde çalışacaktır.

DVWA Reflected XSS – {High Level}

Bu zafiyetin yüksek seviyesinde önce kaynak kodları inceleyerek ne tarz önlemler aldıklarını inceleyelim. Burada yazısının başında, ortasında, sonunda, herhangi bir yerinde başka karakter bulunursa silme işlemi gerçekleştirilmiştir.

Bizde bu aşamada script kullanmadan kodunu kullanarak yine bu durumu bypass edebiliriz.

DVWA Reflected XSS – {impossible Level}

Bu zafiyetin imkansız seviyesinde önce kaynak kodları inceleyerek ne tarz önlemler aldıklarını inceleyelim.

Burada özetle; başlangıçta anti-CSRF token güvenlik mekanizmasının uygulandığını görüyoruz, sonrasında ise htmlspecialchars ile özel karakterler html için normal karakterlere dönüştürülmektedir.

Reflected XSS Saldırı Sonrasında Oluşan Erişim Log Kayıtları

Görüldüğü üzere DVWA uygulaması üzerinde çalıştırılan javascript kodları accesslog kayıtlarına yansımıştır.

Faydalı ve Faydalanılan Kaynaklar

  • http://www.includekarabuk.com/dvwatutorial.php
  • http://www.hackingarticles.in/xss-exploitation-dvwa-bypass-security/
  • https://gurelahmet.com/xsscross-site-scripting-nedir-ve-xss-lab-uygulamas%C4%B1-web-for-pentester/

Site Footer