SGE Blog Yayınları

Burpsuite ile Otomatik Login Olma Makrosu

Burpsuite ile Otomatik Login Olma Makrosu

yazan Hasan Fatih Şimşek -
Number of replies: 0

a. Açıklama

Burpsuite’te Intruder’da, Repeater’da,… faaliyetler yürütürken mevcut paketin sahip olduğu çerez zaman aşımına uğrayabilir, veya oturumdan atılmış olunabilir durumlarında gelen yanıt paketleri gönderdiğimiz paketlerin karşılığı olmaktan ziyade oturum aça yönlendiren (302) veya izinli değilsiniz (401) yanıt paketleri olacaktır. Örneğin Intruder’da oturum arkasındaki bir ekranda sözlük saldırısı veya çeşitli fuzzing işlemleri yapılırken oturum giderse fuzzing asıl hedefine yapılamayacaktır. Bu v.b. durumlarda otomatik login makrosu tanımlanarak oturum gittiğinde otomatik oturum yeniden açma ve yapılan fuzzing’de değiştirile değiştirile gönderilen istek paketinin Cookie başlığını yeni çerez ile güncelleme yapılabilir. Bu işlem için burpsuite’in makro tanımlama ekranı kullanılır. 

Burpsuite’te otomatik login olma kural tanımlamasında makro şöyle çalışır. Tanımlanan kurala oturumdan düşüldüğünde oturum arkasındaki sayfaya talep yapıldığında gelen hata yanıt paketindeki hata string’i verilir. Ardından hata string’i varsa session is invalid’tir işaretlemesi yapılır. Ardından hata string’i geldiğinde, yani Session is invalid olduğunda oturum açma sırasında arkada oluşturulan paketler tekrarlansın diye o paketler kaydedilir ve gösterilir (biri login sayfasını görüntüleme istek paketi, diğeri login sayfasını bilgilerle submit’leme istek paketi). Böylece burpsuite’te herhangi bir sekme altında (örn; Repeater’da, Intruder’da,...) yanıt paketi kuralda tanımlı şekilde hata string’i içerecek şekilde dönerse oturum açma paketleri çalıştırılacaktır ve elde edilen yeni Cookie başlığı ile gönderilmekte olan istek paketinin Cookie başlığı güncellenecektir. Cookie başlığındaki güncelleme görsel olarak değişiklikten de anlaşılabilecektir. Bu şekilde saldırı sürerken oturumdan düşüldüğünde otomatik oturum geri açılır ve mevcut gönderilecek paketlerin Cookie header’ı makro tarafından yeni çerez bilgileriyle güncellenir. Böylece saldırılar aksamadan login panel arkasındaki hedeflere devam edebilir olur.

Bu uygulama Intruder’da daha işlevseldir. Otomatik login olma makrosu ile oturum iptal olduğu durumlarda otomatik oturum kazanılacaktır ve mevcut değiştirile değiştirile gönderilen paketteki Cookie başlığı güncellenerek saldırı login sayfası arkasındaki sayfaya aksamadan devam edebilecektir.

b. Oturumdan Düşüldüğünde Otomatik Login Olma Adımları

1. Burpsuite’i başlat.

-> java -jar burpsuite_community_v1.7.36.jar

2. Burpsuite’in sekmelerinden Project options->Sessions sekmesine gel.

-> Session Handling Rules kısmındaki Add butonuna tıkla.

-> Ekrana gelen penceredeki Rule Description kısmına “OtomatikLogin” yazılabilir. Ardından Rule Actions kısmında yer alan Add butonuna tıkla ve Check Session is Valid seçeneğini seç.

-> Inspect response to determine session validity bölümünde oturumdan düşüldüğünde gelen yanıt paketlerindeki hata bilgisi verilir. Böylece burpsuite yanıt paketlerinde bu hata string’ini gördüğünde oturum açma işlemini başlatabilecektir. Bunun için oturumdan düşüldüğünde yanıt paketinin hangi bölümünde bu string’in olacağı önce seçilir. Örn; Http headers. Ardından oturumdan düşüldüğünde yanıt paketindeki hata string’i Look for expression metin kutusuna girilir. Örn; 302.

-> Ekranın aşağısında yer alan If session is invalid, perform the action below seçeneği tick işareti ile işaretlenir ve Select Macro kısmında Add butonuna tıklanır. Bu şekilde belirtilen hata kodu geldiğinde buradaki makroyu çalıştır denmiş olur. 

-> Gelen ekranda Intercept On kısmı Off yapılır ve web uygulamada login ekranını görüntüleme ve sonra login olma işlemi yapılır. Bu iki paket (örn; GET ile login sayfasını görüntüleme paketi ve POST ile login sayfasındaki form’u submit’leme paketi) gelen ekranda sırasıyla seçilir, OK denir. Böylece otomatik login olma için iki paket makroya kaydedilmiş olur. Ekrandaki Test Macro butonu ile kaydedilen iki paketin çalıştırılışı test edilebilir.

-> Session handling action editor ekranına OK denir.

-> Session handling rule editor ekranında Scope sekmesine gelinir ve otomatik login olma makrosunun (yani kaydedilen iki paket ve hata kodu ayarlarının) burpsuite’in hangi tool’larında aktif olacağı belirlenir. Örn; Intruder, Repeater gibi. Daha sonra URL Scope bölümüne gelinir ve hangi url’e giden paketlerde bu makronun çalışacağı belirlenir. Garanti olması adına Include all URLs seçilebilir veya farklı işlemler de burpsuite’te yürütülecekse o işlemlerde otomatik login karışmasın diye makronun sadece belirtilen url adreste çalışması adına ilgili url adresinin kök adresi Use custom Scope seçeneği işaretlenerek Add butonu ile eklenir. Sonuç olarak ekrana Ok denir.

-> Session Handling Rules bölümüne OtomatikLogin kuralı eklenmiş olur.

3. Ardından login iken burp’le araya girilir ve bir paket repeater’a örneğin gönderilir. Repeater’da paket gönderildiğinde yanıt 200 OK alınır, ama web tarayıcıda normalde logout elle yapılırsa repeater’da 302 ile login form’a yönlendirme yanıt paketi normalde alınacaktır. Tanımlanan otomatik login olma makrosu ile 302 yanıt paketi görüldüğü an kaydedilen iki paket arkaplanda çalışacaktır ve login olunacaktır. Gelen çerez mevcut repeater’daki Cookie başlığını güncelleyecektir ve arkaplanda olanlar sonrası yanıt paketi yine 200 OK olarak gelebilecektir. Yani otomatik login olma makrosu çalışacaktır.

Bu şekilde otomatik login makrosu tanımlanmaktadır.

Bilgi:

Örneğin repeater’daki Cookie başlığı komple silindiğinde ve paket gönder dendiğinde otomatik login makrosu arkaplanda çalışacaktır ve gönderilen pakete Cookie başlığı ilavesi olacaktır. Böylece paket gönderimi oturumdan düşmeden devam edebilecektir.

Örneğin Intruder’da oturum sonrası bir ekrandaki yere fuzzing yapılıyorsa oturumdan düşmek fuzzing’in hedefine ulaşamamasına sebep olacaktır. Ancak otomatik login olma makrosu tanımlanırsa oturumdan düşüldüğü an oturum aç paketleri çalışacaktır ve yeni Cookie başlık ve değeri mevcut paketlere konacaktır. Böylece login arkasındaki hedefe yapılan fuzzing devam edebilecektir.

c. Uygulama

Gereksinimler

Ubuntu 18.04 LTS          // Ana Makina

DVWA-master/                 // Yerel Apache Sunucudaki Dvwa Son Sürümü

Burpsuite                 // Ana Makina’daki Burpsuite Aracı

Web tarayıcıdan dvwa’ya gidelim.

http://localhost./DVWA-master/ // Not: localhost’un sonunda nokta var.

                        // Diğer türlü güncel linux firefox’larda 

                                                                        // burp localhost trafiğini kesememekte.

Ardından örneğin Brute Force ekranına gidelim.

burpsuiteileotomatikloginolma1

Burpsuite’i “Intercept On” yapalım ve bu ekrana rastgele kullanıcı adı ve parola girip submit diyelim.

burpsuiteileotomatikloginolma2

Http request paketini Repeater’a gönderelim.

burpsuiteileotomatikloginolma3

Repeater’da paketi gönder dediğimizde yanıt paketi 200 OK olarak gelecektir ve bu sayfa için kullanıcı bilgilerinin yanlış olduğuna dair bilgi gelecektir.

burpsuiteileotomatikloginolma4

Eğer web tarayıcıda logout olursak ve Repeater’da aynı paketi bir daha gönder dersek bu sefer çerez artık oturumdan düştüğü için 302 kodu ile login sayfasına yönlendirme yanıt paketi gelecektir.

burpsuiteileotomatikloginolma5

burpsuiteileotomatikloginolma6

burpsuiteileotomatikloginolma7

Şimdi repeater’da talep paketinde geçersiz olmuş Cookie için otomatikmen güncelleme yapacak ve paketin çalışırlığını sürdürecek otomatik login olma makrosu tanımlayalım. Öncelikle Project Options->Sessions->Session Handling Rules->Add butonuna tıklayalım.

burpsuiteileotomatikloginolma8

Rule Description’a OtomatikLogin yazılabilir, ve Rules Actions kısmında Add butonu ile Check Session is Valid kuralı ekleyelim.

burpsuiteileotomatikloginolma9

Gelen ekranda ne zaman otomatik login olma makromuzun çalışacağını belirleyelim. Bunun için oturumdan düştüğümüzde yanıt olarak gelen paketin içerisindeki spesifik bir hata string’ini belirleyelim. Örneğin bu örnekte yanıt paketi header bölümünde 302 ile bir yanıt dönüyor ve login ekrana yönlendiriyor. Bunu hata string’i seçelim ve Location(s) kısmında Http headers’ı seçip, metin kutusuna 302 yazalım. Böylece tanımlıyor olduğumuz makro yanıt paketi bu string’i header’da içerdiğinde çalışacaktır. Varsayılan tanımlamaya göre Match indicates bölümünde hata string’i session invalid’e eşlenmiştir. Bu şekilde tanıma devam edilir.

burpsuiteileotomatikloginolma10

Ardından if session is invalid, perform the action below seçeneği işaretlenir. Böylece hata string’i geldiğinde tanımımıza göre bu session invalid anlamına geldiğinden seçeneğin söylediği gibi aşağıdaki aksiyonu çalıştır deriz.

burpsuiteileotomatikloginolma11

Şimdi oturumdan düştüğümüzde (yani hata string’i geldiğinde) oturumu tekrar kazanabileceğimiz istek paketlerini makroya kaydedelim. Öncelikle Intercept is Off butonunu Off bırakalım ve web tarayıcıdan dvwa login ekranına gidelim. Ardından login ekranına bilgilerimizi girip login olalım.

burpsuiteileotomatikloginolma12


burpsuiteileotomatikloginolma13

burpsuiteileotomatikloginolma14

burpsuiteileotomatikloginolma15

Oturumu kazanmamızı sağlayan bu iki istek paketini seçelim ve OK butonu ile makromuza kaydedelim.

burpsuiteileotomatikloginolma16

Macro editor ekranında dilersek oturum kazanmayı Test Macro butonu ile test edebiliriz. Şimdi macro editor ekranına OK diyelim.

burpsuiteileotomatikloginolma17

Session handling action editor penceresine de işimiz bittiğinden OK diyelim.

burpsuiteileotomatikloginolma18

Son kalan pencerede Scope sekmesine gelelim. Tool scope bölümünde hata string’ine göre kaydedilen paketleri çalıştıracak (ve mevcut istek paketlerindeki Cookie başlığını kaydedilen paketlerin elde ettiği Cookie başlığı ile güncelleyecek) makromuzun hangi burpsuite sekmelerinde işlevselsel olarak çalışır olsun kararını vereceğiz. Buna Repeater’ı test amaçlı kullanıyor olduğumuz için Repeater diyelim.

burpsuiteileotomatikloginolma19

URL Scope bölümünde ise sadece bir web adreste makromuzun çalışır olmasını istiyorsak Use Custom Scope seçelim ve web adresinin url olarak kök halini ekleyelim. Eğer tüm web adreste makromuzun çalışır olmasını istiyorsak Include All URLs seçeneği işaretlenebilir. Şimdilik garanti olmasına adına Include All URLs seçeneğini işaretleyelim.

burpsuiteileotomatikloginolma20

Son pencereye de OK dedikten sonra Sessions Handling Rules kısmında kuralımız hazırdır.

burpsuiteileotomatikloginolma21

En son web tarayıcıdan logout olduğumuzda, yani oturum kapandığında repeater’daki paketimizin Cookie başlığı işlevsiz hale geldiğinden yanıt paketi 302 login sayfaya yönlendirme olmuştu.

burpsuiteileotomatikloginolma22

Şimdi tekrar işleviz Cookie başlıklı istek paketini gönderelim. Yanıt olarak oturum açık bir şekilde oturum arkasındaki sayfaya erişebilir yanıt paketi gelecektir.

burpsuiteileotomatikloginolma23

Çünkü otomatik login olma makromuz işlevsiz çerezli paketimize gelen 302 yanıtını gördüğü an devreye girmiştir ve kaydedilen oturum açma paketlerini çalıştırmıştır. Oturum açıldığında elde ettiği Cookie başlığı ve değerini mevcut repeater’daki Cookie başlığına dinamik olarak koymuştur ve görsel olarak Cookie başlığı değişmiştir (güncellenmiştir). Bu şekilde paket tekrar gönderilmiştir ve yanıt 200 OK ile oturum açıkken erişilebilen sayfa yanıtı gelebilmiştir.

Otomatik login olma makrosunun çalışırlığını gözlemlemek adına deneysel anlamda repeater’daki Cookie başlığı komple silinebilir.

burpsuiteileotomatikloginolma24

Ardından yine istek paketi gönderildiğinde oturum açık olmadığından (çünkü çerez yok) 302 yanıtı gelecektir ve makro çalışacaktır. Makro oturum açtığında çerezi mevcut istek paketimize ekleyecektir ve paketi öyle gönderecektir.

burpsuiteileotomatikloginolma25


burpsuiteileotomatikloginolma26

İstek paketimizde Cookie başlığını silmişken Go ile gönderdiğimizde otomatikmen Cookie başlığı eklenmiştir. Çünkü arkada otomatik login olma makrosu çalışmıştır ve Cookie başlığını olsaydı güncelleyecekti, olmadığından eklemiştir ve paketi o şekilde gönderilmesini sağlamıştır.

Sonuç

Otomatik login olma makrosu bir kural olarak tanımlanmıştır. Tanımlanan kurala oturumdan düşüldüğünde oturum arkasındaki sayfaya talep yapıldığında gelen hata yanıt paketindeki hata string’i verilmiştir. Ardından hata string’i varsa session is invalid’tir denmiştir. Ardından hata string’i geldiğinde, yani Session is invalid olduğunda oturum açma sırasında arkada oluşturulan paketler kaydedilip (biri login sayfasını görüntüleme istek paketi, diğeri login sayfasını bilgilerle submit’leme istek paketi) belirtilen paketleri çalıştır denmiştir. Böylece repeater’da yanıt paketi kuralda tanımlı şekilde hata string’i içerecek şekilde dönerse oturum açma paketleri çalıştırılacaktır ve elde edilen yeni Cookie başlığı ile örneğin repeater’daki istek paketi tarafında duran paketimizin Cookie başlığı güncellenecektir. Güncelleme görsel olarak değişiklikten de anlaşılabilir. Sonuç olarak her oturumdan düşüldüğünde otomatik oturum kazanılacaktır ve login sayfası arkasındaki testler sürdürülebilecektir. 

Bu uygulama Intruder’da daha kullanışlı olabilir. Örneğin login sayfası arkasında bir sayfaya sözlük saldırıları ve çeşitli fuzzing saldırıları yapılırken oturumdan düşülürse mevcut değiştirile değiştirile gönderilen paketteki Cookie geçersiz olacaktır ve paketler asıl hedefine gidemeyecektir. Otomatik login olma makrosu ile bu durumda otomatik oturum kazanılacaktır ve mevcut değiştirile değiştirile gönderilen paketteki Cookie başlığı güncellenerek saldırı login sayfası arkasındaki sayfaya aksamadan devam edebilecektir.

Kaynaklar

https://www.youtube.com/watch?v=Ba2EzXP4swE%EF%BB%BF

https://portswigger.net/burp/documentation/desktop/options/sessions




1580 kelime