MBContent Katmanı
MBProxy
kütüphanesi sayesinde mobil uygulama ile sunucu arasında gerçekleşen
HTTP/HTTPS istek ve cevaplarının yönledirmesini sağlanıyor. Bundan
sonraki adımda ise bu istek ve cevapların analizinin yapıldıkdan sonra
uygun fuzzing içeriklerinin bu istek ve cevaplara yerleştirilmesi işlemi
vardır. Bu hedef uygun, içeriklerin analizini ve parse işlemini yapan
MBContent kütüphanesi hazırladım.
MBContent
kütüphanesi başlangıç olarak gelen istek veya cevap içeriklerini XML
yapısında kabul edip ki bu tür içeriği basit bir koşul ifadesi ile
sağlanıyor. XML türündeki içeriği analyse_content metodu ile alıp kendi
içerisinde Content-Type içeriğin ne tür de olacağını belirtir,
Content-Length gelen içeriğin uzunuluğunu verir, vb. türdeki değişkenler
içerik hakkındaki temel özellikleri belirtmektedir. MBContent’in
analyse_content() metodu ile bu özellikleri içerik ile ilgili
değişiklik yaptığımızda uzunluğu değişecek ve bozuk bir içerik olmaması
sağlamak için Content-Length’de düzenleme yapmak gerekecektir. Bu
nedenle, analyse_content() metodu içerik özelliklerini parse ederek bir
yapı içerisine yerleştirir. İçeriğin temel özelliklerini belirten bu
tür bilgilerden sonra “\n\n” gerçek içeriğin başladığını belirtmektedir.
# içerik içerisinde xml türünün olup olmadığına bakar
# xml olan içeriği analiz etmeye başlar
if content =~ /Content-Type: text\/xml/
new_content = MBContent.new.analyse_content(content)
end
Şimdilik
XML içeriklerini ele aldığım için doğrudan XML içeriğini parse eden ve
bunu yaparken Ruby’nin XmlSimple kütüphanesini kullanan bir XMLParser
kütüphanesi hazırladım. Bu kütüphanenin şu anda xml içeriği hash map’e
ve hash map de bulunan içeriğide XML’e çeviren iki işlevi bulunmaktadır.
Bu özelliklerin iyileştirmesi üzerinde çalışmaktayım.
# xml kütüphanesi işlevelerinin kullanımı
hash_xml_content = XMLParser.new().parse(xml_content)
xml_content = XMLParser.new().convert_from_hash(hash_xml_content)
MBContent
kütüphanesi son olarak analiz ettiği içeriği tekrardan birleştire
görevi gören create_new_content() metoduna sahiptir. Bu metod ile mevcut
içerik özellikleri tekrardan içerik yapısına uygun şekilde
birleştirilir ve Content-Length’inde yeni XML içeriğinin uzunluğu
belirlenerek düzenlenir. Tabi ki şu anda fuzzing işlemi yapılmadığı için
XML içeriğinde bir değişme gözlenmemektedir.
0 yorum: