EN
EN

Web For Pentester Çözümleri-I


Web For Pentester uygulaması, web sızma testi eğitimlerinde kullanılabilecek bir laboratuvar ortamıdır. Pentester Lab. tarafından geliştirilen bu platform web uygulamalarında bulunan aşağıda ki zafiyetleri barındırır. Kullanıcı bu aşamalı zafiyetleri tespit ederek alıştırmalar yapabilir.

Web For Pentester Çözümleri

XSS-Example 1

XSS (Cross site scripting), zafiyeti Türkçeye “Siteler Arası Betik Çalıştırma” olarak geçmiştir. Web uygulamalarında bulunan güvenlik açıklığıdır. (XSS), bir istemci tarafı kod enjeksiyon saldırısıdır. Saldırgan, meşru bir web sayfasına veya web uygulamasına kötü amaçlı kod enjekte ederek kurbanın web tarayıcısında kötü amaçlı komut dosyaları yürütmeyi hedefler.

İlk örnekte karşımızda resimdeki sayfa gelmektedir.

Sayfanın kaynak kodu incelendiğinde URL parametresi olarak aldığı hacker değerini direkt olarak sayfaya bastığı görülür.

Bu parametre üzerinden XSS için zararlı kod gönderildiğinde kod herhangi bir filtreden geçmeden işlem görür. Örneğimizde aşağıda verilen kod ile ekrana bir uyarı butonu gönderildi.

Payload:

<script>alert("Beyaz Net");</script>

XSS-Example 2

İkinci örneğimizde bir önceki payloadı gönderdiğimizde ekrana uyarı butonu vermiyor, Alert (Beyaz Net) yazısını basıyor. Kaynak kodu incelediğimizde yazılımcımızın script etiketini filtrelediğini anlıyoruz.  Payloadımızı çalıştırmak için script etiketinin çalışması için farklı yöntemler kullanarak ekrana uyarı butonunu basabiliriz.

Payload:

<SCRIPT>alert(0)</SCRIPT>                                                                                                                

<sCript>alert(0);</scriPt>

 

XSS-Example 3

Bu önreğimizde bir önceki denediğimiz payloadı çalışmıyor, anlaşılan yazılımcımız script etiketini büyük küçük karakter farketmeksizin filtrelemiş. Yine farklı yollar düşünerek filtreyi atlamayı denemeliyiz. Aşağıda verilen payloadımıı denediğimizde ekrana uyarı butonu bastığını görmekteyiz. Burada içerde bir bütün olarak görülen script etiketlerini siliyor fakat bunu ikinci defa yapmadığı için dış taraftaki kelimelerin birleşip script yazısını algılayamayıp silmiyor. Kaynak kodu incelediğimizde dışarıdaki harflerin birleşip script etiketini oluşturduğunu görmekteyiz. Burada filtreyi atlatmak için farklı ve geniş düşünerek farklı payloadlar üretebilirsiniz.

Payload:

<scr<script>ipt>alert("0");</scr</script>ipt>

XSS-Example 4

Bu aşamada önceden denediğimiz tüm payloadlarda hata almaktayız. Etiketi hiçbir şekilde kabul etmemekte. Bu da demek oluyor ki script etiketi tamamen engellenmiş. XSS’i göndermek için farklı html ve javascript etiketler kullanabiliriz. Burada farklı payloadlar üretmek sizin yeteneğinize bağlıdır.

Örneğin web sayfasında ekrana yansıtacaklarımız için kullandığımız “body” etiketinin, web sayfası yüklenirken çalıştırılacak javascript betiğini belirlediğimiz “onload”-web sayfasının tüm içeriği yüklendikten sonra bir komut dosyası çalıştırmak için kullanılır- bileşeninde bir fonksiyon çağırarak ekrana uyarı basabiliriz. Başka bir örnekte HTML5 etiketi olan svg etiketini kullanabiliriz.

Payload:

<body onload=alert("Beyaznet");>

<svg onload=alert(34)>

XSS-Example 5

Bu aşamada bir önceki örnekte denediğimiz payoadlarda hata aldığımızı görmekteyiz. Script kullandığımız payloadları deneyip kaynak koda baktığımızda script etiketini çalıştırıp alert etiketini engellediğini görüyoruz. Öyleyse başka bir script fonksiyonu kullanmayı denemeliyiz. Benzer işlevi gören promt fonksiyonunu kullandığımızda amacımıza ulaşmış oluyoruz.

Payload:

<script>prompt("Beyaz Net");</script>

<body onload= prompt("Beyaznet");>

<svg onload= prompt(34)>

XSS-Example 6

Bu aşamada önceden denediğimiz payloadımızı girdiğimizde bir hata yada ekrana bir uyarı butonu oluşmuyor. O zaman kaynak kodumuzu inceleyelim: ve görüyoruz ki girdiğimiz değişkeni bir değişkene atanmakta. Bu nedenle kodlarımız çalışmıyor. Fakat önce değişkeni kapatıp sonra diğer ” nığı kapatarak hata almadan alertimizi bastırabiliriz.

Payload:

“; alert(“Beyaz Net”);”

 

 

XSS-Example 7

Bir önceki örnekteki payloadımızı kullandığımızda uyarı butonu alamadığımızı görüyoruz. Hemen kaynak kodumuza bakıyoruz: Bu aşamada da yine bize script etiketinin içine yazabiliyoruz fakat değişkene atanırken tek tırnak kullanılmış. Bir önceki aşamadaki girdiğimiz payloadda yine önceki değişkeni kaptmak için aşağıdaki gibi bir değişiklik yapıyoruz

Payload:

‘; alert(‘BEYAZ NET’);’;

 

 

XSS ataklarından korunmak için ne yapmalıyız?

XSS ataklarından korunmak için yapılacak en basit önlem açık olan kısımda filtreleme uygulamaktır. Php dilini ele alırsak strip_tags fonksiyonu kullanılarak javascript ve html etiketleri filtrelenebilir.