By Can Demirel

Burp Extension: BurpValueEncoder

BurpSuite, web uygulama kontrollerinde gerekli pek çok kontrolün oldukça rahat bir şekilde gerçekleştirilmesine olanak tanıyan yardımcı bir araçtır. Test edilen uygulamanın teknolojisinden bağımsız olarak istekleri işlemeye ve oluşan çıktıları çeşitli şekillerde incelemeye izin vermesi ek olarak ihtiyaca özel uygulamalar yazmasına olanak tanıması en önemli avantajları arasındadır.

Güncel web uygulamalarında bazı verilerin kullanıcı tarafında encode edilerek sunucuya gönderildiği, sunucu tarafında ise gelen verinin öncelikle decode edilip, sonrasında işleme alındığı görülmektedir. Özellikle dosya yükleme uygulamalarında böyle durumlar ile oldukça sık bir şekilde karşılaşılmakta olup bu tip uygulamalarda otomatik tarama gerçekleştirirken, gönderilen her payload için encoding işlemi de yapılması gerekmektedir. Aksi takdirde gönderilen değer işleme alınmadan önce sunucu üzerinde decoding aşamasından geçeceği için Sizin gönderdiğiniz değer sunucuda işleme alındığında değiştirilmiş olacaktır.

Web uygulamalarında yüklenilen dosyalar sonrasında işleme alınıyor ise her kolondaki veri Sizin için ayrı bir parametre alanı olarak düşünülmelidir. Fakat bu parametre alanlarını test etmek her zaman kolay olmayabiliyor. Kullanıcı tarafında encode edilen dosyanın testi için, her parametre denemenizde tekrar excel dosyasına müdahale etmeniz gerekecek ve normal bir taramaya oranla daha az payload deneme şansınız olacaktır. Bu sorunun önüne geçmek ve daha yüksek kaliteli testler ortaya çıkarmak için geliştirdiğimiz burpsuite extenssion ile bu tip uygulamaları da artık kolaylıkla tarama şansı elde edebilirsiniz.

“Value Encoder” isimli extension ile burpsuite üzerindeki bütün isteklerinizde encoding işlemini kolaylıkla gerçekleştirebilirsiniz. Encode etmek istenilen parametrenin başına ve sonuna aşağıdaki gibi encoding değerlerini ekleyerek, girilen değerleri karşı tarafa encode edilmiş halde iletebilirsiniz.

Kullanılabilir encoding değerleri aşağıdaki gibidir.

  • _base64’Payload’_base64
  • _url’Payload’_url
  • _asciiHex’Payload’_asciiHex

“Value Encoder” aktif durumdayken, taramak istediğiniz parametreyi yukarıdaki değerler ile düzenleyerek,  burpsuite üzerinde aktif tarama da gerçekleştirebilirsiniz. Buna dair örnek bir kullanım şekli aşağıda görseller ile anlatılmaktadır.

Örnek olarak yüklenilecek extension.csv dosyası aşağıdaki gibidir.

Buradaki her virgül arası ayrı bir değer olmakta olup, hepsini ayrı ayrı burpsuite ile aktif taramadan geçirebiliriz.

Normalde dosya yüklenmek istenildiğinde oluşan örnek request ise aşağıdaki gibidir.

Yukarıdaki istekte işaretli alanda da görülebileceği gibi, dosya içeriği base64 ile kullanıcı tarafında encode edilmiş ve sonrasında sunucuya gönderilmiştir. İşaretli kısmı base64 decode ettiğimizde aşağıdaki gibi dosya içeriği görülmektedir.

 

Şimdi ilgili isteği Intruder’a göndererek aşağıdaki gibi düzenliyoruz. Intruder’da öncelikle encode edilmiş, “Value Encoder” için aşağıdaki gibi düzenliyoruz.

Sonrasındaki işlemler ise normal kullanımdaki gibi ilerlemektedir. Öncelikle taramak istediğimiz bölümü seçiyoruz, sonrasında ise aktif taramayı başlatıyoruz. Örnek olarak ‘biznet’ yazılı olan kısım aktif taramaya verilecektir.

Tarama başlatıldığında giden istekler incelendiği zaman, hepsinin encode edilerek gönderildiği görülmektedir.

Yukarıdaki ekran alıntısında verilen değer decode edildiğinde, taramak istediğimiz alanı hem burpsuite üzerinden aktif tarama ile hemde encode edilmiş şekilde payload göndererek tarama yapabildiğimiz görülmektedir.

Detaylara aşağıdaki bağlantıdan erişebilirsiniz.

https://github.com/BiznetLab/BurpValueEncoder