Posted by: Fırat Celal Erdik 18 Nisan 2012
Bu yazımda burpsuite proxy kullanarak bir web uygulaması üzerinde login formu varsa buraya yönelik login denemeleri nasıl yapılabileceğini göstereceğim.Bu örnek üzerinden giderken burpsuite'in çalışma mantığını ve neler yapılabileceğine de ara ara değineceğim.Burada göstereceğim örnekteki aynı mantık kullanılarak input alan farklı bölümlere yönelik de çeşitli istekler gönderilebilir.Dönen cevaplara bakarak sql injection açıklığı bulma,databasedeki kullanıcı adları ve mail adresleri enumuration veya directory enumuration gibi çalışmalar yapılabilir.
Öncelikle browser'imiz üzerinden proxy ayarlarını burp'a uygun olarak girmeliyiz.Burp default olarak localde 8080 portunu dinler.Bunun için biz de browserimizin tüm internet trafiğini bu port üzerinden taşınmasını sağlamalıyız. Veya bu portu istediğiniz başka bir port ile de güncelleyebilirsiniz.
Mozilla firefox üzerinden proxy ayarlarını aşağıdaki gibi değiştirelim.
Bundan sonra firefox üzerinden ziyaret edilen tüm web uygulamalarında trafik localhost üzerinde 8080 portu üzerinden akacaktır.Burp uygulaması da bu portu dinleyip gelen giden tüm trafik üzerinde hakimiyet sağlamamıza yarayacaktır.
Bu yazımda burpsuit'in detaylı ayarlarına ve kullanımına girmeden web uygulamasındaki login formu kullanılarak bruteforce nasıl yapılabileceğine değineceğim. Belki daha sonra bir makaleyi detaylı burpsuite kullanımına ayırabilirim.
Şimdi burp uygulamamızı çalıştıralım.
Login bruteforce işlemi için ben gmail.com üzerinden örneğe devam etmek istiyorum.Intercept off konumdayken gmail sayfamızı açalım.Daha sonra aşağıdaki gibi username password girdiğimiz ekranda login demeden önce yukarıdaki burp üzerinde intercept is on deyip yapılan isteği yakalamasını sağlıyoruz.
Bu arada gmail'e bağlanırken alacağınız geçersiz sertfika uyarısını onaylamanız gerekecektir.Bu sertfika burp tarafından üretilen ve size httpS bir siteye bağlanmak istediğiniz için gönderilen bir sertfikadır.
Aşağıdaki ekranda Sign in demeden önce isteği yakalaması için burp üzerinden intercept is on yapıyoruz.Ve ardından Sign in diyoruz.Aşağıdaki ekranla karşılaşmış olmalısınız.
Burada gmail'e yapılan POST isteği henüz gmail serverlarına iletilmemiştir.İstek servera gitmeden araya biz girdik ve trafiği durdurduk.Biz forward dersek server tarafına istek gidecektir.Daha sonra serverdan bir cevap gelecektir tekrar forward dersek dönen cevap client browserında görüntülenecektir. Trafiği üzerimizden geçirdiğimizden dolayı trafik bizim hakimiyetimizde.
Servera doğru yapılan her türlü istek üzerinde oynanarak servera iletilmesi veya serverdan dönen cevaplarda hertürlü değişiklik yapılıp client browserina iletilmesi sağlanabilir.Ayrıca drop butonu ile yapılan request ve responslar hedefe ulaşılması engellenerek drop edilebilir.
Yukarıdaki ekranda sağ tıklayıp send to intruder diyelim ve intruder sekmesi altında aşağıdaki ekranla karşılaşacağız.Burada tüm text bölümünü seçerek sol taraftan clear dedikten sonra email ve password input değerlerini seçip add diyerek son halinin aşağıdaki gibi olmasını sağlıyoruz
Attack type olarak da cluster bomb seçip payload kısmına geçiyoruz.Cluster bomb ile birden fazla input verilebilir ve tüm kombinasyonların denenmesi sağlanabilir.
Burada cluster bomb dışındaki seçenekler ise;
Sniper:Tek değere input sağlanır.Örneğin; biz sadece kullanıcı adlarını import ederiz ve verilen kullanıcı adlarının mevcut kullanılan parolaya sahip olup olmadığını test için kullanılır.(admin/123456,celal/123456,test/123456 gibi)
Battering ram:Bu da tek iput değeri ister.Örneğin verilen kullanıcı adını denerken şifreyi de kullanıcı adı olarak seçer.(admin/admin,administrator/administrator gibi)
Pitchfork:Bu da cluster bomb gibi iki input değeri ister.Fakat kullanışsızdır.Çünkü değerler karşılıklı eşleştirilip denenir.Yani ikinci set edilen payload değerlerinin tümü 1. input ile eşleştirilip denenmez sadece satır sırasında 1. input değeri neyse onla birlikte login dener.kısaca tüm kombinasyonları denemediğinden çok kullanışlı değildir.
Şimdi gmail üzerinden denemek istediğimiz kullanıcı adlarını payload 1 kısmına giriyoruz aşağıdaki gibi.Textbox'a istediğimiz kullanıcı adlarını girip ekleyebileceğimiz gibi, load butonu ile bir dosyadan da kullanıcı adlarını import edebiliriz.
Şimdi de payload set değeri 2 olarak seçip bu kullanıcı adlarına denenecek parolaları girelim.
Şimdi atağı intruder menüsü altından start attack diyerek başlatalım ve sonuclarına bakalım.Burbsuite aracının lisanslı sürümünü kullanmadığımız için denemeler biraz yawaş olacaktır. Aşağıda response menüsü altındaki render submenüsün de web arayüzünde çıktısını da görebiliriz cevabın.
Backtrack, bilgi toplama, bruteforce, Database, enumuration, gaining access, hacking, http, Http flood, http security, information gathering, pentest, security articles, security tools, web security
İsmail S. 2 Mayıs 2012 12:21
"Belki daha sonra bir makaleyi detaylı burpsuite kullanımına ayırabilirim."
Kesinlikle bekliyoruz hocam :)
İbrahim Gündüz 16 Eylül 2012 21:56
burpsuite hakkında daha geniş bir makale bekliyoruz hocam. :)
Türk Kaan 17 Aralık 2013 18:08
öncelikle elinize sağlık hocam penetrasyona meraklı birisi olarak çok hoşuma gitti.fakat benim anlamadığım bir nokta var brute force yapıyoruz ve artık siteler 3-5 denemeden sonra ip ban atıyor ve brute force geçersiz oluyor ... bunu atlatıp site üzerinde işlemleri gerçekleştirebiliyor mu ?
Fırat Celal Erdik 20 Aralık 2013 16:37
öyle yerlerde yatay kaba kuvvet saldırıları yapılabilir.. parolayı sabitleyip kullanıcı adına kaba kuvvet yaparak geçerli bir kullanıcı hesabı bulabilirsiniz .:)