16 Mart 2015

CSRF Token Kullanan Uygulamalara Fuzzing Testi Nasıl Yapılır?

Sızma testleri sırasında uyguladığımız adımlardan bir tanesi olan Fuzzing testleri sırasında karşılaştığımız engellemelerden bir tanesi, CSRF açıklıklarına karşı bir önlem olarak uygulamalara eklenen CSRF Token’larıdır. Bu tokenlar, girdi noktalarına gönderdiğimiz XSS payload’u, SQL Injection payload’u gibi özel olarak hazırlanmış girdilerin, otomatize bir şekilde sunucuya gönderilmesi konusunda sizi zorlayabilir; tabi eğer bu makaleyi okumadıysanız.

Aşağıda bulunan adımlar izlenerek, açıklık barındırması muhtemel girdi noktalarına ilgili saldırı payloadları otomatik olarak gönderilebilir. Bunun için Burp Suite’in Intruder aracını kullanacağız.
Önce Fuzzing yapmak istediğimiz isteği Intruder’a gönderiyoruz. Daha sonra fuzzing yapılacak parametre ile CSRF token değerini işaretliyoruz. Burada fuzzing yapılacak olan parametre adı “first_name”, CSRF token parametre adı ise “hash”tir. Son olarak “Attack Type” kısmını Pitchfork olarak ayarlıyoruz.


Sonrasında Options sekmesine geçiyoruz. Burada biraz aşağı inip Grep – Extract bölümüne geliyoruz ve “Add” ikonuna tıklıyoruz.


Açılan pencerede bulunan “Refetch response” butonuna basıyoruz.


Refetch tuşuna bastıktan sonra yanıt geliyor. Gelen yanıtta CSRF token’ın yerini bulup işaretliyoruz. İşaretledikten sonra Ok tuşuna basıyoruz.


Grep – Extract bölümü aşağıdaki gibi güncellenmiş olmalı.


Yine Options sekmesinde en üste çıkıp Number of Threads parametresinin değerini “1” olarak güncelliyoruz.


Müteakiben Payloads Sekmesine geçiyoruz. Burada “Payload Set” kısmında iki değer var. İlki fuzzing yapacağımız “first_name” parametresinin index’i. Bunu seçip Payload Options bölümüne, SQL Injection, XSS payloadlarını vs. yüklüyoruz.


Sonrasında “Payload Set” 2’yi seçiyoruz. Bu bizim CSRF token değerimiz. Payload Type değerini “Recursive grep” olarak seçiyoruz. Seçtiğimiz zaman az önce Grep – Extract bölümünde belirlediğimiz değer geliyor.


İlk fuzzing payload’unun da başarılı bir şekilde çalışması için “Initial payload for first request” değerine sunucudan en son alınan CSRF Token değeri giriyoruz. Start Attack ile atağı başlatabiliriz. Yaptığımız işlemler doğruysa saldırı penceresinde bir önceki isteğe ait “hash_value” değerinin bir sonraki istekte “Payload 2” olarak eklendiğini görmeliyiz.