MBContent Katmanı

18:22 Mehmet Kılıç 0 Comments

     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: