Burp Suite Nedir? Nasıl kullanılır?

Burp Suite kullanımına geçmeden önce web uygulamalarının çalışma mantığından kısaca bahsedelim. Web uygulamalarının, istemcinin(client) tarayıcı(browser) kullanarak yaptığı isteklerin sunucu tarafından yanıtlanması ile, yani istemcinin tarayıcısı ile sunucu arasındaki iletişim ile sağlanan bir çalışma mantığı vardır. Bundan dolayı HTTP istekleri web uygulamalarının bir temel taşıdır. Biz de bu seri boyunca çoğunlukla HTTP isteklerini inceleyecek, onları manipüle ederek eğer varsa zafiyetlerden yararlanmaya çalışacağız.

Öncelikle web uygulama analizlerini gerçekleştirmek için yardımcı olacak programları tanıyalım. Bunların ilki ‘Burp Suite’. İstemci – sunucu arasındaki istekleri bu program vasıtasıyla görüntüleyecek, isteklerin üzerinde gerekli değişikleri yine bu program vasıtasıyla yapacağız. Burp şu şekilde çalışır: Program çalışmaya başladığı anda lokalimizde (127.0.0.1) vekil sunucu ayağa kalkar. Tarayıcıdan da bu vekil sunucuyu dinleriz. Artık tarayıcıdan sunucuya giden istekler bu vekil sunucu üzerinden gidecektir. Burp vasıtasıyla, istekler sunucuya gitmeden görüntülenebilecektir.

Bu yazıda Burp Suite programını Kali Linux üzerinde kullanacağız fakat Burp her işletim sisteminde çalışmaktadır. O nedenle Windows, Ubuntu&Linux veya MacOS kullanıyor oluşunuz hiç önemli değil, Burp sorunsuz çalışacaktır.

Burp Suite’in pro versiyonu da mevcuttur ve ücretlidir. Bu yazıda Burp Suite Community Edition kullanılacaktır. Anlatacağımız işlemler için, ücretsiz olan bu versiyon yeterli olacaktır.

Burp, Kali Linux’ta varsayılan olarak yüklü bulunmaktadır. Programı çalıştıralım.

Program ana ekranı yukarıdaki gibi açıldı. Burada en sık kullanacağımız kısımlar ‘Proxy’, ‘Intruder’ ve ‘Repeater’ olacak. Bu kısımları detaylı bir şekilde inceleyeceğiz.

Bir sonraki aşama olarak ise tarayıcıda Burp’un ayağa kaldırdığı vekil sunucuyu dinleyeceğiz. Tarayıcıdan vekil sunucu ayarlarını açalım ve aşağıdaki gibi ayarlayalım.

Şimdi tarayıcımızı açalım ve sibertalimhane.com’u tıklayalım. Burp Suite’te HTTP isteklerini durduma ayarı varsayılan olarak seçili olduğu için sayfa yüklenmeyecektir. Intercept sekmesinden bu ayarı ‘off’ yapmamız gerekir.

Tekrar tarayıcıya geldiğimizde gizlilik hatası aldık. Bunun sebebi, tarayıcımızın Burp Suite’in sertifikasını tanımaması. Bu problemi çözmek için Burp sertifikasını tarayıcıya tanıtmamız gerekiyor. Tarayıcı adres çubuğuna http://burp yazalım. Karşımıza Burp sertifika ekranı gelecek. Sağ üst tarafta CA Certificate kısmından Burp’un sertifikasını indirelim.

Bir sonraki aşama olarak, indirdiğimiz sertifikayı tarayıcının güvendiği sertifikaların arasına ekleyelim.

Görüldüğü gibi, tarayıcı artık SSL hatası vermiyor.

Not: Kali Linux kullanıyorsanız ve işletim sisteminizi güncellediyseniz, sayfalar SSL_ERROR_RX_RECORD_TOO_LONG hatası verebilir. Bu problem Java versiyonundan kaynaklanıyor. Bunun için terminalde şu komutu çalıştıralım: update-alternatives --config java

Seçenekler arasında Java 8-jre yazan seçeneği seçelim. Hata çözülecektir.

Yukarıdaki işlemler sonucu Burp Suite’i başarılı bir şekilde kurduk ve kullanıma hazır hale getirdik. Şimdi içeriğini inceleyelim.

Target -> Site map sekmesi tarayıcımızın istek göndermiş olduğu siteleri gösteriyor.

Sadece sibertalimhane.com ve google.com’a istek yapmış olmama rağmen tarayıcının istekte bulunduğu birçok site görünüyor. Bu durum tarayıcıların arka planda yapmış olduğu birçok istekten kaynaklanıyor. Google’a ulaşmadan önce reklam servisleri, istatistik&analiz servisleri gibi birçok kaynağa istek gönderiliyor. Ayrıca eriştiğimiz sitede CDN kütüphaneleri de kullanılıyor olabilir. Yazı kapsamına girmeyen bu konu hakkında bu şekilde kısa bir bilgi verip geçiyorum.

Proxy -> Intecept kısmı sunuculara giden istekleri durdurup görebildiğimiz kısım. Forward ile paket gönderilir, Drop ile ise droplanır. Giden isteklerin durdurulabilmesi için ‘Intercept on’ seçilmiş olmalıdır.

Sibertalimhane.com’a yapmış olduğumuz isteği durdurup inceleyelim. Raw sekmesinde Siber Talimhane sunucusuna yapılan HTTP GET isteğini görüntülüyoruz.

Params kısmında ise istek gövdesinde giden parametreleri görüyoruz. Site tarafından bize birtakım çerezler atanmış.

Headers kısmında ise isteğin başlıklarını görüyoruz.

Son olarak, Hex kısmında ise giden isteğin byte olarak on altılık basamaktaki halini(hexadecimal) görüyoruz.

Proxy -> HTTP history sekmesinde, Burp’un açılışından itibaren yapmış olduğumuz istek geçmişini görüyoruz. İsteğin yapıldığı adres, istek türü (POST, GET, vs), istek durum kodu (HTTP request status code), istek uzunluğu,vs gibi bilgileri de görüntüleyebiliyoruz.

Decoder sekmesinde ise string olarak verdiğimiz girdileri encoding&decoding işlemlerine sokabiliyoruz.

Yazının devamı için Metasploitable 2 makinesindeki zafiyetli uygulamaları kullanacağım. İlgili makineye buradan ulaşabilirsiniz.

Burp’te istek durdurmayı aktif edip(Intercept on) Metasploitable 2 makinesindeki uygulamalardan Damn Vulnerable Web Application (DVWA) uygulamasına giriş yapmaya çalışalım.

/dvwa/login.php adresine POST isteği yaptık. POST isteği olduğu için parametreler istek gövdesinde ‘username=test&password=test&Login=Login’ şeklinde iletiliyor.

Bu pencerede parametreleri istediğimiz gibi değiştirebilir, ardından hedef sunucuya gönderebiliriz. Kullanıcı adını ‘abc’ olarak, parolayı ise ‘deneme’ olarak değiştirip isteği gönderelim.

Görüldüğü gibi hedef sunucuda abc kullanıcı adlı ve deneme parolasına sahip herhangi bir kullanıcı mevcut değil.

İstek gönderildikten sonra Intercept kısmında kayboldu. Biz bu şekilde farklı kullanıcı adları ve parolaları denemek istiyorduk fakat istek kayboldu. Az önceki işlemleri her seferinde tekrar mı yapmak lazım? Tabi ki hayır. Burp’te ‘Repeater’ modülü tam da bu işe yarıyor. İstek üzerinde değişiklikler yapma ve bunları tekrar tekrar gönderme imkanı sağlıyor.

İlk olarak HTTP history’de, DVWA uygulamasına girmek için gönderdiğimiz isteği bulalım ve bunu Repeater’a gönderelim.

Sonrasında ise admin:123456, admin:123456789 ve admin:pass kullanıcı adı-parola çiftleri ile giriş yapmaya çalışalım ve sayfanın verdiği cevapları inceleyelim. Burp bizim için sunucudan gelen cevabı render ederek sunuyor.

Follow redirections ile sunucudan gelen sayfa yönlendirmelerini takip ediyoruz, tekrar denemek için isteğe geri dönüyor ve parametreleri istediğimiz gibi değiştirerek isteği yeniden gönderiyoruz.

Elimizde kullanıcı adı/mail adresi listesi olduğunu düşünelim. Bu hesaplara ait parolaları deneme-yanılma yöntemi ile(kaba kuvvet, sözlük saldırıları) bulmak istiyoruz. Parolaları Repeater’da tek tek yazıp göndererek mi deneyeceğiz? Ya da şirketimizde/okulumuzda kolaya kaçıp parolasını 123456 yapmış kişileri bulmak istiyoruz. Bu sefer de parola kısmını değiştirmeden sürekli mail adresi/kullanıcı adı mı deneyeceğiz?

Tabi ki hayır. Bunun için ‘Intruder’ adlı bir modül bulunmakta. Bu modül parametreler için çeşitli payload seti deneme işlemini otomatik olarak bizim için yapıyor.

Intruder modülü ile admin kullanıcısına sözlük saldırısı gerçekleştirerek bu modülü uygulamalı olarak görelim.

Önce isteği Intruder modülüne gönderiyoruz.

Target sekmesinde bulunan alanlar otomatik olarak doluyor. O nedenle orayı geçiyoruz. Positions kısmına geliyoruz. Burada farklı saldırı tipleri mevcut fakat en çok kullandığımız türler Sniper ve Cluster bomb. Eğer parametrelerden birini biliyor diğerini deneme yanılma ile bulmak istiyorsak, yani tek payload seti kullanacaksak Sniper’ı, ikisi için de deneme yanılma yapmak istiyorsak, yani iki payload seti kullanacaksak Cluster bomb’u kullanıyoruz.

Burp, burada manipüle edilebilecek parametrelerin hepsini göstererek başına ve sonuna § işareti koyuyor.

Biz hangi parametreyi değiştirmek istiyorsak sadece onun başında ve sonunda § işareti olmalı. İlk olarak ‘Clear §’ diyerek seçimlerin hepsini temizliyor, daha sonrasında ise değiştirmek istediğimiz parametreleri ‘Add §’ butonunu kullanarak işaretliyoruz.

Payloads sekmesini inceleyim.

Gelen ayarlar varsayılan olarak sözlük saldırısı yapmak için ayarlıdır. Eğer kaba kuvvet saldırısı yapılmak istenirse Payload sets kısmından ‘Brute forcer’ seçeneği seçilmelidir.

Parola üretmek için karakter setinde olması istenen karakterler girilir, ardından minimum ve maksimum parola boyutları girilir. Burp, bizim için olası bütün ihtimaller ile kelimeler üretecektir. Biz de bunu kaba kuvvet saldırısı için kullanabiliriz. Varsayılan karakter setinde küçük harfler ve rakamlar bulunmaktadır. İstenirse özel karakterler(noktalama işaretleri, vs) ve büyük harfler de karakter setine eklenerek parola uzayı büyütülebilir.

Biz bu saldırıyı sözlük kullanarak yapacağız. Bunun için Payload type olarak Simple list seçelim. Alt tarafta Payload Options [Simple List] adlı bir kısım var. Deneyeceğimiz kelimeleri istersek tek tek buradan Add butonu ile ekleyebilir, istersek Load… butonu ile Kali Linux’ta mevcut olan birçok sözlükten birini kullanabiliriz.

Saldırdığımız sistem UNIX bir sistem olduğu için için Kali Linux’ta ‘/usr/share/wordlists/metasploit’ dizininde bulunan unix_passwords.txt kelime listesini kullanalım. Load… butonu ile unix_passwords.txt dosyasını yükleyelim.

Options sekmesinde en altta bulunan Redirections kısmından Follow redirections seçeneğini Always olarak seçelim çünkü daha önce Repeater modülünde gördüğümüz gibi, sunucuya istek yapıldığı zaman sayfa yönlendirmesi yapılıyordu. Sonuçları görebilmek için gidebildiğimiz yere kadar gidelim.

Şimdi izleyeceğimiz yol şu şekilde: Burp bize denediği parolaları ve dönen cevabın boyutunu söylüyor. Cevap boyutu en büyük olan parola admin parolasıdır diyebiliriz çünkü diğer parolalarda Login Failed uyarısı verip giriş ekranında kalacak fakat gerçek parolada sisteme giriş yapıp yeni bir sayfa açacak. O nedenle cevapların boyutlarını takip ediyor ve diğerlerine göre büyük olan var mı diye gözlemleyeceğiz.

Artık saldırı için her şey hazır. Sağ üstteki Start attack butonu ile saldırıyı başlatalım.

Gözlemlerimiz sonucu en yüksek cevap boyutunu ‘password’ parolası ile aldık. Bu parola cidden gerçek parola mı? Hemen deneyelim.

Evet, bulduğumuz parola doğruymuş. Başarılı bir şekilde sisteme giriş yaptık.

Ahmet Selim Kaya

Ofansif Güvenlik Araştırmacısı, TOBB ETU Siber Güvenlik Yüksek Lisans öğrencisi. Bilmediklerinin öğrencisi, bildiklerinin öğretmeni.