BURP SUITE İLE WEB GÜVENLİK ANALİZİ
Proxy'den Repeater'a Uygulamalı Rehber
Merhaba sevgili Siberatay ailesi ben Mentalite foruma yeni üye oldum. Uzun süredir bu platformu takip ediyorum.
Forum açacağını duyunca katılıp hem bildiklerimi aktarmak hemde bilmediklerimi öğrenmek için katılmak istedim. Bu benim ilk konum hazırsanız başlayalım:
KONULARIM HAKKINDA:
Konularımda aktardığım tüm bilgiler eğitim amaçlıdır. Konularımdaki tüm yöntem ve araçları izinli test ortamlarında denemeniz şiddetle tavsiye edilir.
İllegal olarak kullanılmasında sorumluluk kabul etmiyorum. Kötüye kullanımda tamamen sizin kişisel sorumluluğunuzdadır.
Ayrıca konularımda görselleri yapay zeka ile tasarladığımı şimdiden bildiriyorum. Ama konularımın içerik kısmının tamamı özgündür.
Bir web sitesine girdiğimizde arka planda neler döndüğünü pek düşünmeyiz. Bir butona basarız sayfa açılır giriş yaparız veya form göndeririz.
Aslında bu işlemlerin her birinde tarayıcı ile sunucu arasında sürekli HTTP istekleri gidip gelir.
Peki bu isteklerin içinde ne var? Sunucuya hangi bilgiler gönderiliyor, hangi çerezler kullanılıyor, gönderdiğimiz bir parametreyi değiştirirsek uygulama nasıl tepki veriyor?
Burp Suite tam da bunları incelememizi sağlıyor.
Bu konuyu yalnızca Burp Suite'in araçlarını tanıtmak için hazırlamadım. Kurulumdan başlayarak bir HTTP isteğinin nasıl yakalandığını nasıl değiştirildiğini ve güvenlik açısından nasıl değerlendirileceğini de anlatacağım. Özellikle web pentest alanına yeni girenlerin konuyu bitirdiğinde Burp'ü açıp kendi başına temel analiz yapabilecek seviyeye gelmesini istiyorum.
Küçük bir hatırlatma: Burada anlattığım testleri kendi sistemlerinizde eğitim laboratuvarlarında veya test yapmaya izniniz bulunan uygulamalarda gerçekleştirin.
Önce Burp Suite'in Mantığını Anlayalım
Burp Suite Portswigger tarafından geliştirilen ve web uygulamalarının güvenlik testlerinde kullanılan bir araçtir.
Pentest ve Bug Bounty alanında çalışanların sıkça tercih etmesinin sebebi ise tarayıcıyla sunucu arasındaki iletişime doğrudan müdahale edebilmemiz.
Normalde tarayıcımız isteği gönderir ve sunucudan gelen yanıtı ekranda görürüz. Burp kullandığımızda ise araya bir proxy yerleştiriyoruz.
Burp üzerinden geçen istekleri okuyabilir düzenleyebilir yeniden gönderebilir ve dönen yanıtları karşılaştırabiliriz.
Mesela bir kullanıcı kendi profilini görüntülerken sunucuya kullanıcı numarasını içeren bir istek gönderiyorsa, bu numaranın değiştirilmesi durumunda uygulamanın nasıl davrandığını kontrol edebiliriz.
Tabii burada her değişen yanıt güvenlik açığı anlamına gelmez. Önemli olan uygulamanın erişim kontrolünü doğru yapıp yapmadığıdır.
Community mi Professional mı?
Burp Suite masaüstünde en çok kullanılan iki sürümü var.
Community Edition
Ücretsiz olan sürüm. Proxy, Repeater, Decoder, Comparer ve temel Intruder işlemlerini kullanabilirsiniz. Yalnız Intruder tarafında bazı sınırlamalar var ve otomatik zafiyet tarayıcısı bulunmuyor.
Ben başlangıç için Community sürümünü yeterli görüyorum. HTTP trafiğini anlamak, istekleri değiştirmek ve manuel test yapmak için ücretli sürüm şart değil.
Professional Edition
Burada otomatik zafiyet tarayıcısı, tam özellikli Intruder, Burp Collaborator ve daha gelişmiş test imkânları bulunuyor. Özellikle düzenli olarak web uygulama testi yapıyorsanız Professional sürümün sunduğu kolaylıklar ciddi anlamda zaman kazandırabilir.
Ama şunu unutmayın bir tarayıcının zafiyet raporlamasıyla zafiyeti gerçekten anlamak aynı şey değil. Manuel analiz yapmayı öğrenmeden otomatik araçlara fazla güvenmeyin.
Kurulum ve Proxy Ayarları
Burp Suite'i Windows, Linux ve macOS üzerinde kullanabiliyoruz.
Resmî indirme adresi:
Güncel kurulum paketleri gerekli Java çalışma ortamını da içeriyor. Yani standart kurulum yapıyorsanız ayrıca Java yüklemeniz gerekmiyor.
Programı açtıktan sonra geçici bir proje oluşturup varsayılan ayarlarla devam edebilirsiniz.
Burpunn kendi tarayıcısı bulunuyor. Proxy > Intercept > Open Browser üzerinden açtığınızda proxy ve sertifika ayarları hazır geliyor.
Fakat ben harici tarayıcı kullanımını da göstermek istiyorum. Firefox üzerinden ilerleyelim.
Firefox'u Burp'e Bağlamak
Öncelikle Burp içerisinde Proxy ayarlarını açıp dinleyicinin aktif oldugunu kontrol ediyoruz.
Varsayılan adresimiz şu:
Firefox'ta Ayarlar > Genel > Ağ Ayarları bölümüne gidin. Manuel proxy yapılandırmasını seçerek IP ve port bilgilerini girin. HTTPS trafiğinin de aynı proxy üzerinden geçmesini sağlayın.
İsterseniz FoxyProxy eklentisini kullanabilirsiniz. Ben bu yöntemi daha pratik buluyorum çünkü test sırasında proxy'yi tek tıklamayla açıp kapatabiliyorsunuz.
HTTPS Sertifikasını Yükleme
Proxy ayarını yaptık fakat HTTPS sitelerinde sertifika hatasıyla karşılaşabiliriz.
Sebebi şu: Burp https trafiğini inceleyebilmek için tarayıcıyla kendi arasında TLS bağlantısı kurar. Bunun için de kendi oluşturduğu CA sertifikasının tarayıcı tarafından güvenilir kabul edilmesi gerekiyor.
Burp açıkken Firefox üzerinden aşağıdaki adrese girin:
Açılan sayfadaki CA Certificate bağlantısından sertifikayı indirin.
Daha sonra Firefox'ta şu yolu izleyin:
Ayarlar bölümünü açın.
Gizlilik ve Güvenlik sekmesine girin.
Sertifikalar bölümünü bulun.
Sertifikaları görüntüle seçeneğine tıklayın.
Yetkililer sekmesini açıp İçe aktar deyin.
İndirdiğiniz Burp sertifikasını seçin.
Web sitelerini tanımlamak için bu sertifika otoritesine güvenilmesini onaylayın.
Bu işlemden sonra Burp üzerinden geçen HTTPS isteklerini de inceleyebilirsiniz.
Burada bir tavsiye vereyim.
Günlük kullandığınız tarayıcı yerine ayrı bir Firefox test profili oluşturun. Testiniz bittikten sonra eklediğiniz CA sertifikasına duyulan güveni kaldırın. Böylece günlük tarayıcı ortamınızla güvenlik testi ortamınızı birbirinden ayırmış olursunuz.
Target - Test Ettiğimiz Uygulamayı Tanımak
Kurulumu hallettik. Şimdi Burpun araçlarına geçebiliriz.
Ben bir web uygulamasını incelemeye başladığımda önce uygulamanın hangi sayfalara ve servislere istek gönderdiğini anlamaya çalışırım. Bunun için Target bölümü oldukça kullanışlı.
Buradaki Site Map, proxy üzerinden gözlemlenen yolları ve istekleri düzenli bir yapıda gösteriyor.
Örneğin şöyle bir yapı görebiliriz:
Bunların hepsi uygulamanın nasıl çalıştığı hakkında ipucu veriyor.
Özellikle API endpoint'lerini incelemek önemli çünkü uygulamanın arayüzünde doğrudan görmediğimiz birçok işlem arka planda API üzerinden gerçekleştiriliyor olabilir.
Bir de Scope konusu var.
Scope, hangi adreslerin test kapsamına girdiğini belirlediğimiz bölüm. Örneğin yalnızca test.example.com üzerinde çalışacaksak kapsamı buna göre ayarlayabiliriz.
Böylece alakasız isteklerle uğraşmayız ve izin verilen test sınırlarının dışına çıkma riskini azaltırız.
Proxy - İstekleri Yakalamaya Başlıyoruz
Proxy, Burp Suite'in temelini oluşturan araçlardan biri.
Burada iki bölüm bizim için özellikle önemli.
Intercept: Tarayıcıdan çıkan isteği sunucuya gitmeden önce durdurur.
HTTP History: Proxy üzerinden geçen isteklerin geçmişini gösterir.
Şöyle deneyebilirsiniz.
Burp'te Intercept'i açın ve tarayıcınızdan test uygulamasına giriş yapın. İstek Burp ekranında beklemeye başlayacaktır.
Karşınıza buna benzer bir HTTP isteği çıkabilir:
Burada GET, isteğin HTTP yöntemini gösteriyor. /profile erişmek istediğimiz yol, Cookie ise oturum bilgisini taşıyor olabilir.
İsteği değiştirmek istemiyorsanız Forward butonuna basarak sunucuya iletebilirsiniz. Drop ise yakalanan isteği göndermeden sonlandırır.
Intercept kapalıyken de HTTP History bölümünden geçmiş trafiği inceleyebilirsiniz.
Proxy kısmına biraz zaman ayırmanızı öneririm. HTTP yöntemlerini, header bilgilerini ve cookie yapısını burada ne kadar iyi anlarsanız sonraki testler de o kadar kolaylaşır.
Repeater - Burp'ün En Çok İşinize Yarayacak Araçlarından Biri
Gelelim benim özellikle üzerinde durmak istediğim kısma.
Repeater sayesinde yakaladığımız bir HTTP isteğini değiştirebiliyor ve aynı isteği tekrar tekrar gönderebiliyoruz.
Proxy geçmişinde bulunan bir isteğe sağ tıklayıp Send to Repeater demeniz yeterli.
Peki bunu neden yapıyoruz?
Örnekle anlatalım.
Kendi laboratuvarımızda bir sipariş uygulaması olduğunu düşünelim. Aşağıdaki istek, giriş yaptığımız hesaba ait bir siparişin detaylarını getiriyor olsun.
Repeater'a gönderdiğimiz istekte 1001 değerini değiştirerek farklı sipariş numaraları için uygulamanın verdiği yanıtı inceleyebiliriz.
Tabii bunu yalnızca test hesaplarımız ve bize ait laboratuvar verileriyle yapıyoruz.
Örneğin A hesabının sipariş numarasını B hesabıyla sorguladığımızda ne oluyor?
Sunucu erişimi reddediyor mu, yoksa B hesabına ait olmayan bir siparişin bilgilerini mi gösteriyor?
Eğer kullanıcı kendisine ait olmayan bir kaynağın bilgilerine yetkisiz şekilde erişebiliyorsa IDOR türünde bir güvenlik açığı söz konusu olabilir.
Ama yalnızca HTTP 200 dönmesine bakarak karar vermeyin. Yanıtın içeriğini ve gerçekten hangi verinin döndüğünü de kontrol edin.
Repeater yalnızca IDOR için kullanılmıyor.
POST verilerini değiştirmek, oturum davranışını incelemek, CSRF token kontrolü yapmak veya API'nin beklenmeyen parametrelere nasıl yanıt verdiğini görmek için de oldukça kullanışlı.
Kısacası manuel web güvenlik testlerinde Repeater'a sık sık döneceksiniz.
Intruder | Tekrarlayan Testleri Otomatikleştirmek
Repeater'da istekleri tek tek değiştirebiliyorduk. Intruder ise belirlediğimiz alanlara farklı test verileri göndererek bu işlemi otomatikleştirmemizi sağlıyor.
Örneğin laboratuvar uygulamamızın aşağıdaki parametreyi kullandığını düşünelim:
Buradaki books değerini Intruder üzerinde payload konumu olarak belirleyebiliriz.
Ardından uygulamanın beklediği farklı kategori değerlerini test ederek sunucudan dönen yanıtları karşılaştırabiliriz.
Intruder yalnızca kelime listesi göndermek için değil, parametre doğrulama ve rate-limit gibi kontroller için de kullanılabilir.
Sonuç ekranında özellikle HTTP durum koduna, yanıt uzunluğuna ve içerikteki farklılıklara bakın.
Community sürümünde Intruder'ın bazı hız sınırlamaları var. Resource Pool ayarlarıyla isteklerin kaynak kullanımını yönetebilirsiniz ancak bu ayarlar ücretsiz sürümün sınırlamalarını kaldırmaz.
Ayrıca Intruder kullanırken istek sayısını kontrol altında tutmak önemli. Özellikle yoğun testlerin sunucuda gereksiz yük oluşturabileceğini unutmayın.
Decoder ve Comparer
Bu iki aracı da biraz tanıyalım.
Decoder
Web uygulamalarında bazen URL encoded veya Base64 biçiminde verilerle karşılaşabiliyoruz.
Örneğin:
URL Decode yaptığımızda:
şeklinde okunabilir hale geliyor.
Aynı şekilde Base64 verilerini dönüştürebilir farklı kodlama işlemleri gerçekleştirebilir ve çeşitli algoritmalarla hash hesaplayabilirsiniz.
Yalnız Base64 ün şifreleme olmadığını da belirtelim. Sadece veriyi farklı bir biçimde temsil ediyor.
Comparer
Comparer ise iki istek veya yanıt arasındaki farkları görmemizi sağlıyor.
Özellikle yetki kontrolü testlerinde kullanışlı.
İki farklı test hesabından aynı sayfaya istek gönderdiğimizi düşünün. Yanıtlar birbirine benziyorsa gözden kaçan küçük farklılıkları Comparer üzerinden daha rahat görebiliriz.
Biraz Daha İleri Gidelim
Burp Suite'in temelini öğrendikten sonra yalnızca istek yakalamakla sınırlı kalmamak gerekiyor. Gerçek web uygulamalarında oturum yetki kontrolü ve güvenlik başlıkları gibi konularla da sıkça karşılaşıyoruz.
Cookie ve Oturum Kontrolleri
HTTP yanıtında Set cookie başlığına bakarak oturum çerezinin nasıl oluşturulduğunu inceleyebilirsiniz.
Burada üç önemli özellik var:
HttpOnly: JavaScript'in cookie ye erişmesini kısıtlar.
Secure: Cookie'nin HTTPS bağlantılarında gönderilmesini sağlar.
SameSite: Siteler arası isteklerde cookie gönderimini sınırlandırır.
Bunun dışında oturum kapatıldığında eski session bilgisinin geçersiz hale gelip gelmediği veya giriş sonrası oturum kimliğinin değişip değişmediği de kontrol edilebilir.
HTTP Güvenlik Başlıkları
Sunucudan dönen yanıtların header bölümüne de mutlaka göz atın.
Bu başlıklar farklı güvenlik mekanizmalarında görev alıyor. Örneğin CSP içerik kaynaklarını sınırlandırmaya yardımcı olurken HSTS, tarayıcının siteye HTTPS üzerinden bağlanmasını sağlar.
Başlığın mevcut olması kadar nasıl yapılandırıldığı da önemli.
Session Handling Rules ve Macros
Bazı uygulamalarda her istekte değişen CSRF token değerleriyle veya belirli bir sürenin ardından sona eren oturumlarla karşılaşabilirsiniz.
Session Handling Rules ve Macros sayesinde bazı oturum işlemlerini otomatikleştirmek mümkün.
Örneğin bir test isteği gönderilmeden önce belirli bir oturum işleminin tekrar çalıştırılması veya güncel token değerinin alınması gibi işlemlerde kullanılabilir.
Bunun için güncel Burp sürümlerinde Settings > Sessions bölümünü inceleyebilirsiniz.
BApp Store
Burp Suite'e farklı yetenekler kazandırmak için eklentiler de yükleyebilirsiniz.
İnceleyebileceğiniz birkaç eklenti:
Logger++: HTTP trafiğini daha ayrıntılı kaydetmek ve filtrelemek için.
Autorize: Kullanıcı yetkileri ve erişim kontrollerini incelemek için.
Turbo Intruder: Kontrollü, yüksek hacimli HTTP testleri için.
Active Scan++: Burp Scanner'ın tarama kontrollerini genişletmek için.
Eklentilerin sürüm gereksinimlerine de dikkat edin. Bazıları Professional sürümündeki özelliklere ihtiyaç duyabiliyor.
Burp Suite Kullanırken Karşılaşabileceğiniz Sorunlar
Proxy açık ama istekleri göremiyorum.
Tarayıcının doğru proxy adresine bağlandığını kontrol edin. Burp teki listener aktif mi bakın. Bir de HTTP History filtrelerini kontrol etmeyi unutmayın.
HTTPS sitelerinde sertifika hatası alıyorum.
Burp CA sertifikası yanlış yüklenmiş veya tarayıcı tarafından güvenilir kabul edilmiyor olabilir. Burp Browser ile de deneyerek sorunun harici tarayıcı ayarlarından kaynaklanıp kaynaklanmadığını kontrol edebilirsiniz.
Intercept açıkken sayfa yüklenmiyor.
İstek Burp üzerinde bekliyor olabilir. Forward ile devam ettirin veya Intercept i kapatın.
Repeater'da neden farklı yanıt alıyorum?
Oturum süresi dolmuş olabilir, CSRF token değişmiş olabilir veya uygulama bazı başlıkları kontrol ediyor olabilir. Önce orijinal istekle karşılaştırın.
API testlerinde de Burp kullanabilir miyim?
Evet. JSON gövdeli HTTP istekleri dahil olmak üzere pek çok REST API işlemini Proxy ve Repeater üzerinden inceleyebilirsiniz.
Küçük Bir Pratik Çalışması
Buraya kadar okuduklarınızı pekiştirmek için basit bir çalışma yapabilirsiniz.
Portswigger Web Security Academy üzerinde bir eğitim laboratuvarı açın:
Ardından şu sırayla ilerleyin:
Burp Browser üzerinden laboratuvarı açın.
Proxy ile bir HTTP isteğini yakalayın.
İsteğin yöntemini urlsini ve header bilgilerini inceleyin.
Target bölümünden ziyaret ettiğiniz yolları bulun.
İsteği Repeater a gönderin.
Laboratuvarın izin verdiği bir parametreyi değiştirin.
Dönen yanıtı orijinaliyle karşılaştırın.
Burada amacımız hemen zafiyet bulmak değil. Öncelikle uygulamanın hangi isteğe nasıl yanıt verdiğini öğrenmek.
Bir HTTP isteğini okuyabilmek, ne anlama geldiğini anlayabilmek ve değişiklik yaptığınızda ortaya çıkan sonucu yorumlayabilmek web pentest için oldukça önemli.
Son Olarak
Burp Suite i öğrenmeye çalışırken bütün modülleri aynı anda kullanmak zorunda değilsiniz. Hatta başlangıçta sadece Proxy ve Repeater üzerinde çalışmanız bile birçok şeyi anlamanızı sağlar.
Benim tavsiyem önce HTTP isteklerinin yapısını iyice öğrenmeniz. Sonra bunları Burp üzerinde yakalayıp inceleyin. Bir süre sonra hangi parametrenin önemli olduğunu hangi yanıtın normal görünmediğini ve nerede daha ayrıntılı test yapmak gerektiğini çok daha rahat fark etmeye başlayacaksınız.
Unutmayı aracı kullanmak ayrı elde ettiğiniz veriyi doğru yorumlamak ayrı bir beceri.
Burp Suite te önemli olan da bence tam olarak bu.
Konunun sonuna geldik. Birdahaki konumda görüşmek üzere..
Proxy'den Repeater'a Uygulamalı Rehber
Merhaba sevgili Siberatay ailesi ben Mentalite foruma yeni üye oldum. Uzun süredir bu platformu takip ediyorum.
Forum açacağını duyunca katılıp hem bildiklerimi aktarmak hemde bilmediklerimi öğrenmek için katılmak istedim. Bu benim ilk konum hazırsanız başlayalım:
KONULARIM HAKKINDA:
Konularımda aktardığım tüm bilgiler eğitim amaçlıdır. Konularımdaki tüm yöntem ve araçları izinli test ortamlarında denemeniz şiddetle tavsiye edilir.
İllegal olarak kullanılmasında sorumluluk kabul etmiyorum. Kötüye kullanımda tamamen sizin kişisel sorumluluğunuzdadır.
Ayrıca konularımda görselleri yapay zeka ile tasarladığımı şimdiden bildiriyorum. Ama konularımın içerik kısmının tamamı özgündür.
Bir web sitesine girdiğimizde arka planda neler döndüğünü pek düşünmeyiz. Bir butona basarız sayfa açılır giriş yaparız veya form göndeririz.
Aslında bu işlemlerin her birinde tarayıcı ile sunucu arasında sürekli HTTP istekleri gidip gelir.
Peki bu isteklerin içinde ne var? Sunucuya hangi bilgiler gönderiliyor, hangi çerezler kullanılıyor, gönderdiğimiz bir parametreyi değiştirirsek uygulama nasıl tepki veriyor?
Burp Suite tam da bunları incelememizi sağlıyor.
Bu konuyu yalnızca Burp Suite'in araçlarını tanıtmak için hazırlamadım. Kurulumdan başlayarak bir HTTP isteğinin nasıl yakalandığını nasıl değiştirildiğini ve güvenlik açısından nasıl değerlendirileceğini de anlatacağım. Özellikle web pentest alanına yeni girenlerin konuyu bitirdiğinde Burp'ü açıp kendi başına temel analiz yapabilecek seviyeye gelmesini istiyorum.
Küçük bir hatırlatma: Burada anlattığım testleri kendi sistemlerinizde eğitim laboratuvarlarında veya test yapmaya izniniz bulunan uygulamalarda gerçekleştirin.
Önce Burp Suite'in Mantığını Anlayalım
Burp Suite Portswigger tarafından geliştirilen ve web uygulamalarının güvenlik testlerinde kullanılan bir araçtir.
Pentest ve Bug Bounty alanında çalışanların sıkça tercih etmesinin sebebi ise tarayıcıyla sunucu arasındaki iletişime doğrudan müdahale edebilmemiz.
Normalde tarayıcımız isteği gönderir ve sunucudan gelen yanıtı ekranda görürüz. Burp kullandığımızda ise araya bir proxy yerleştiriyoruz.
Kod:
Tarayıcı
|
Burp Proxy
|
Web Sunucusu
|
Burp Proxy
|
Tarayıcı
Burp üzerinden geçen istekleri okuyabilir düzenleyebilir yeniden gönderebilir ve dönen yanıtları karşılaştırabiliriz.
Mesela bir kullanıcı kendi profilini görüntülerken sunucuya kullanıcı numarasını içeren bir istek gönderiyorsa, bu numaranın değiştirilmesi durumunda uygulamanın nasıl davrandığını kontrol edebiliriz.
Tabii burada her değişen yanıt güvenlik açığı anlamına gelmez. Önemli olan uygulamanın erişim kontrolünü doğru yapıp yapmadığıdır.
Community mi Professional mı?
Burp Suite masaüstünde en çok kullanılan iki sürümü var.
Community Edition
Ücretsiz olan sürüm. Proxy, Repeater, Decoder, Comparer ve temel Intruder işlemlerini kullanabilirsiniz. Yalnız Intruder tarafında bazı sınırlamalar var ve otomatik zafiyet tarayıcısı bulunmuyor.
Ben başlangıç için Community sürümünü yeterli görüyorum. HTTP trafiğini anlamak, istekleri değiştirmek ve manuel test yapmak için ücretli sürüm şart değil.
Professional Edition
Burada otomatik zafiyet tarayıcısı, tam özellikli Intruder, Burp Collaborator ve daha gelişmiş test imkânları bulunuyor. Özellikle düzenli olarak web uygulama testi yapıyorsanız Professional sürümün sunduğu kolaylıklar ciddi anlamda zaman kazandırabilir.
Ama şunu unutmayın bir tarayıcının zafiyet raporlamasıyla zafiyeti gerçekten anlamak aynı şey değil. Manuel analiz yapmayı öğrenmeden otomatik araçlara fazla güvenmeyin.
Kurulum ve Proxy Ayarları
Burp Suite'i Windows, Linux ve macOS üzerinde kullanabiliyoruz.
Resmî indirme adresi:
İçeriklerden Faydalanmak için Üye olmanız Gerekmektedir. Giriş yap veya üye ol.
Güncel kurulum paketleri gerekli Java çalışma ortamını da içeriyor. Yani standart kurulum yapıyorsanız ayrıca Java yüklemeniz gerekmiyor.
Programı açtıktan sonra geçici bir proje oluşturup varsayılan ayarlarla devam edebilirsiniz.
Burpunn kendi tarayıcısı bulunuyor. Proxy > Intercept > Open Browser üzerinden açtığınızda proxy ve sertifika ayarları hazır geliyor.
Fakat ben harici tarayıcı kullanımını da göstermek istiyorum. Firefox üzerinden ilerleyelim.
Firefox'u Burp'e Bağlamak
Öncelikle Burp içerisinde Proxy ayarlarını açıp dinleyicinin aktif oldugunu kontrol ediyoruz.
Varsayılan adresimiz şu:
Kod:
Proxy IP : 127.0.0.1
Port : 8080
Firefox'ta Ayarlar > Genel > Ağ Ayarları bölümüne gidin. Manuel proxy yapılandırmasını seçerek IP ve port bilgilerini girin. HTTPS trafiğinin de aynı proxy üzerinden geçmesini sağlayın.
İsterseniz FoxyProxy eklentisini kullanabilirsiniz. Ben bu yöntemi daha pratik buluyorum çünkü test sırasında proxy'yi tek tıklamayla açıp kapatabiliyorsunuz.
HTTPS Sertifikasını Yükleme
Proxy ayarını yaptık fakat HTTPS sitelerinde sertifika hatasıyla karşılaşabiliriz.
Sebebi şu: Burp https trafiğini inceleyebilmek için tarayıcıyla kendi arasında TLS bağlantısı kurar. Bunun için de kendi oluşturduğu CA sertifikasının tarayıcı tarafından güvenilir kabul edilmesi gerekiyor.
Burp açıkken Firefox üzerinden aşağıdaki adrese girin:
Kod:
http://burpsuite
Açılan sayfadaki CA Certificate bağlantısından sertifikayı indirin.
Daha sonra Firefox'ta şu yolu izleyin:
Ayarlar bölümünü açın.
Gizlilik ve Güvenlik sekmesine girin.
Sertifikalar bölümünü bulun.
Sertifikaları görüntüle seçeneğine tıklayın.
Yetkililer sekmesini açıp İçe aktar deyin.
İndirdiğiniz Burp sertifikasını seçin.
Web sitelerini tanımlamak için bu sertifika otoritesine güvenilmesini onaylayın.
Bu işlemden sonra Burp üzerinden geçen HTTPS isteklerini de inceleyebilirsiniz.
Burada bir tavsiye vereyim.
Günlük kullandığınız tarayıcı yerine ayrı bir Firefox test profili oluşturun. Testiniz bittikten sonra eklediğiniz CA sertifikasına duyulan güveni kaldırın. Böylece günlük tarayıcı ortamınızla güvenlik testi ortamınızı birbirinden ayırmış olursunuz.
Target - Test Ettiğimiz Uygulamayı Tanımak
Kurulumu hallettik. Şimdi Burpun araçlarına geçebiliriz.
Ben bir web uygulamasını incelemeye başladığımda önce uygulamanın hangi sayfalara ve servislere istek gönderdiğini anlamaya çalışırım. Bunun için Target bölümü oldukça kullanışlı.
Buradaki Site Map, proxy üzerinden gözlemlenen yolları ve istekleri düzenli bir yapıda gösteriyor.
Örneğin şöyle bir yapı görebiliriz:
Kod:
/
|-- login
|-- register
|-- profile
|-- account/settings
|-- api
|-- users
|-- orders
Bunların hepsi uygulamanın nasıl çalıştığı hakkında ipucu veriyor.
Özellikle API endpoint'lerini incelemek önemli çünkü uygulamanın arayüzünde doğrudan görmediğimiz birçok işlem arka planda API üzerinden gerçekleştiriliyor olabilir.
Bir de Scope konusu var.
Scope, hangi adreslerin test kapsamına girdiğini belirlediğimiz bölüm. Örneğin yalnızca test.example.com üzerinde çalışacaksak kapsamı buna göre ayarlayabiliriz.
Böylece alakasız isteklerle uğraşmayız ve izin verilen test sınırlarının dışına çıkma riskini azaltırız.
Proxy - İstekleri Yakalamaya Başlıyoruz
Proxy, Burp Suite'in temelini oluşturan araçlardan biri.
Burada iki bölüm bizim için özellikle önemli.
Intercept: Tarayıcıdan çıkan isteği sunucuya gitmeden önce durdurur.
HTTP History: Proxy üzerinden geçen isteklerin geçmişini gösterir.
Şöyle deneyebilirsiniz.
Burp'te Intercept'i açın ve tarayıcınızdan test uygulamasına giriş yapın. İstek Burp ekranında beklemeye başlayacaktır.
Karşınıza buna benzer bir HTTP isteği çıkabilir:
Kod:
GET /profile HTTP/1.1
Host: lab.example
Cookie: session=abc123
User-Agent: Mozilla/5.0
Burada GET, isteğin HTTP yöntemini gösteriyor. /profile erişmek istediğimiz yol, Cookie ise oturum bilgisini taşıyor olabilir.
İsteği değiştirmek istemiyorsanız Forward butonuna basarak sunucuya iletebilirsiniz. Drop ise yakalanan isteği göndermeden sonlandırır.
Intercept kapalıyken de HTTP History bölümünden geçmiş trafiği inceleyebilirsiniz.
Proxy kısmına biraz zaman ayırmanızı öneririm. HTTP yöntemlerini, header bilgilerini ve cookie yapısını burada ne kadar iyi anlarsanız sonraki testler de o kadar kolaylaşır.
Repeater - Burp'ün En Çok İşinize Yarayacak Araçlarından Biri
Gelelim benim özellikle üzerinde durmak istediğim kısma.
Repeater sayesinde yakaladığımız bir HTTP isteğini değiştirebiliyor ve aynı isteği tekrar tekrar gönderebiliyoruz.
Proxy geçmişinde bulunan bir isteğe sağ tıklayıp Send to Repeater demeniz yeterli.
Peki bunu neden yapıyoruz?
Örnekle anlatalım.
Kendi laboratuvarımızda bir sipariş uygulaması olduğunu düşünelim. Aşağıdaki istek, giriş yaptığımız hesaba ait bir siparişin detaylarını getiriyor olsun.
Kod:
GET /api/orders/1001 HTTP/1.1
Host: lab.example
Cookie: session=TEST_SESSION
Repeater'a gönderdiğimiz istekte 1001 değerini değiştirerek farklı sipariş numaraları için uygulamanın verdiği yanıtı inceleyebiliriz.
Tabii bunu yalnızca test hesaplarımız ve bize ait laboratuvar verileriyle yapıyoruz.
Örneğin A hesabının sipariş numarasını B hesabıyla sorguladığımızda ne oluyor?
Sunucu erişimi reddediyor mu, yoksa B hesabına ait olmayan bir siparişin bilgilerini mi gösteriyor?
Eğer kullanıcı kendisine ait olmayan bir kaynağın bilgilerine yetkisiz şekilde erişebiliyorsa IDOR türünde bir güvenlik açığı söz konusu olabilir.
Ama yalnızca HTTP 200 dönmesine bakarak karar vermeyin. Yanıtın içeriğini ve gerçekten hangi verinin döndüğünü de kontrol edin.
Repeater yalnızca IDOR için kullanılmıyor.
POST verilerini değiştirmek, oturum davranışını incelemek, CSRF token kontrolü yapmak veya API'nin beklenmeyen parametrelere nasıl yanıt verdiğini görmek için de oldukça kullanışlı.
Kısacası manuel web güvenlik testlerinde Repeater'a sık sık döneceksiniz.
Intruder | Tekrarlayan Testleri Otomatikleştirmek
Repeater'da istekleri tek tek değiştirebiliyorduk. Intruder ise belirlediğimiz alanlara farklı test verileri göndererek bu işlemi otomatikleştirmemizi sağlıyor.
Örneğin laboratuvar uygulamamızın aşağıdaki parametreyi kullandığını düşünelim:
Kod:
GET /search?category=books HTTP/1.1
Host: lab.example
Buradaki books değerini Intruder üzerinde payload konumu olarak belirleyebiliriz.
Ardından uygulamanın beklediği farklı kategori değerlerini test ederek sunucudan dönen yanıtları karşılaştırabiliriz.
Intruder yalnızca kelime listesi göndermek için değil, parametre doğrulama ve rate-limit gibi kontroller için de kullanılabilir.
Sonuç ekranında özellikle HTTP durum koduna, yanıt uzunluğuna ve içerikteki farklılıklara bakın.
Community sürümünde Intruder'ın bazı hız sınırlamaları var. Resource Pool ayarlarıyla isteklerin kaynak kullanımını yönetebilirsiniz ancak bu ayarlar ücretsiz sürümün sınırlamalarını kaldırmaz.
Ayrıca Intruder kullanırken istek sayısını kontrol altında tutmak önemli. Özellikle yoğun testlerin sunucuda gereksiz yük oluşturabileceğini unutmayın.
Decoder ve Comparer
Bu iki aracı da biraz tanıyalım.
Decoder
Web uygulamalarında bazen URL encoded veya Base64 biçiminde verilerle karşılaşabiliyoruz.
Örneğin:
Kod:
admin%40mentalite.com
URL Decode yaptığımızda:
Kod:
şeklinde okunabilir hale geliyor.
Aynı şekilde Base64 verilerini dönüştürebilir farklı kodlama işlemleri gerçekleştirebilir ve çeşitli algoritmalarla hash hesaplayabilirsiniz.
Yalnız Base64 ün şifreleme olmadığını da belirtelim. Sadece veriyi farklı bir biçimde temsil ediyor.
Comparer
Comparer ise iki istek veya yanıt arasındaki farkları görmemizi sağlıyor.
Özellikle yetki kontrolü testlerinde kullanışlı.
İki farklı test hesabından aynı sayfaya istek gönderdiğimizi düşünün. Yanıtlar birbirine benziyorsa gözden kaçan küçük farklılıkları Comparer üzerinden daha rahat görebiliriz.
Biraz Daha İleri Gidelim
Burp Suite'in temelini öğrendikten sonra yalnızca istek yakalamakla sınırlı kalmamak gerekiyor. Gerçek web uygulamalarında oturum yetki kontrolü ve güvenlik başlıkları gibi konularla da sıkça karşılaşıyoruz.
Cookie ve Oturum Kontrolleri
HTTP yanıtında Set cookie başlığına bakarak oturum çerezinin nasıl oluşturulduğunu inceleyebilirsiniz.
Burada üç önemli özellik var:
HttpOnly: JavaScript'in cookie ye erişmesini kısıtlar.
Secure: Cookie'nin HTTPS bağlantılarında gönderilmesini sağlar.
SameSite: Siteler arası isteklerde cookie gönderimini sınırlandırır.
Bunun dışında oturum kapatıldığında eski session bilgisinin geçersiz hale gelip gelmediği veya giriş sonrası oturum kimliğinin değişip değişmediği de kontrol edilebilir.
HTTP Güvenlik Başlıkları
Sunucudan dönen yanıtların header bölümüne de mutlaka göz atın.
Kod:
Content-Security-Policy
Strict-Transport-Security
X-Frame-Options
Referrer-Policy
X-Content-Type-Options
Bu başlıklar farklı güvenlik mekanizmalarında görev alıyor. Örneğin CSP içerik kaynaklarını sınırlandırmaya yardımcı olurken HSTS, tarayıcının siteye HTTPS üzerinden bağlanmasını sağlar.
Başlığın mevcut olması kadar nasıl yapılandırıldığı da önemli.
Session Handling Rules ve Macros
Bazı uygulamalarda her istekte değişen CSRF token değerleriyle veya belirli bir sürenin ardından sona eren oturumlarla karşılaşabilirsiniz.
Session Handling Rules ve Macros sayesinde bazı oturum işlemlerini otomatikleştirmek mümkün.
Örneğin bir test isteği gönderilmeden önce belirli bir oturum işleminin tekrar çalıştırılması veya güncel token değerinin alınması gibi işlemlerde kullanılabilir.
Bunun için güncel Burp sürümlerinde Settings > Sessions bölümünü inceleyebilirsiniz.
BApp Store
Burp Suite'e farklı yetenekler kazandırmak için eklentiler de yükleyebilirsiniz.
İçeriklerden Faydalanmak için Üye olmanız Gerekmektedir. Giriş yap veya üye ol.
İnceleyebileceğiniz birkaç eklenti:
Logger++: HTTP trafiğini daha ayrıntılı kaydetmek ve filtrelemek için.
Autorize: Kullanıcı yetkileri ve erişim kontrollerini incelemek için.
Turbo Intruder: Kontrollü, yüksek hacimli HTTP testleri için.
Active Scan++: Burp Scanner'ın tarama kontrollerini genişletmek için.
Eklentilerin sürüm gereksinimlerine de dikkat edin. Bazıları Professional sürümündeki özelliklere ihtiyaç duyabiliyor.
Burp Suite Kullanırken Karşılaşabileceğiniz Sorunlar
Proxy açık ama istekleri göremiyorum.
Tarayıcının doğru proxy adresine bağlandığını kontrol edin. Burp teki listener aktif mi bakın. Bir de HTTP History filtrelerini kontrol etmeyi unutmayın.
HTTPS sitelerinde sertifika hatası alıyorum.
Burp CA sertifikası yanlış yüklenmiş veya tarayıcı tarafından güvenilir kabul edilmiyor olabilir. Burp Browser ile de deneyerek sorunun harici tarayıcı ayarlarından kaynaklanıp kaynaklanmadığını kontrol edebilirsiniz.
Intercept açıkken sayfa yüklenmiyor.
İstek Burp üzerinde bekliyor olabilir. Forward ile devam ettirin veya Intercept i kapatın.
Repeater'da neden farklı yanıt alıyorum?
Oturum süresi dolmuş olabilir, CSRF token değişmiş olabilir veya uygulama bazı başlıkları kontrol ediyor olabilir. Önce orijinal istekle karşılaştırın.
API testlerinde de Burp kullanabilir miyim?
Evet. JSON gövdeli HTTP istekleri dahil olmak üzere pek çok REST API işlemini Proxy ve Repeater üzerinden inceleyebilirsiniz.
Küçük Bir Pratik Çalışması
Buraya kadar okuduklarınızı pekiştirmek için basit bir çalışma yapabilirsiniz.
Portswigger Web Security Academy üzerinde bir eğitim laboratuvarı açın:
İçeriklerden Faydalanmak için Üye olmanız Gerekmektedir. Giriş yap veya üye ol.
Ardından şu sırayla ilerleyin:
Burp Browser üzerinden laboratuvarı açın.
Proxy ile bir HTTP isteğini yakalayın.
İsteğin yöntemini urlsini ve header bilgilerini inceleyin.
Target bölümünden ziyaret ettiğiniz yolları bulun.
İsteği Repeater a gönderin.
Laboratuvarın izin verdiği bir parametreyi değiştirin.
Dönen yanıtı orijinaliyle karşılaştırın.
Burada amacımız hemen zafiyet bulmak değil. Öncelikle uygulamanın hangi isteğe nasıl yanıt verdiğini öğrenmek.
Bir HTTP isteğini okuyabilmek, ne anlama geldiğini anlayabilmek ve değişiklik yaptığınızda ortaya çıkan sonucu yorumlayabilmek web pentest için oldukça önemli.
Son Olarak
Burp Suite i öğrenmeye çalışırken bütün modülleri aynı anda kullanmak zorunda değilsiniz. Hatta başlangıçta sadece Proxy ve Repeater üzerinde çalışmanız bile birçok şeyi anlamanızı sağlar.
Benim tavsiyem önce HTTP isteklerinin yapısını iyice öğrenmeniz. Sonra bunları Burp üzerinde yakalayıp inceleyin. Bir süre sonra hangi parametrenin önemli olduğunu hangi yanıtın normal görünmediğini ve nerede daha ayrıntılı test yapmak gerektiğini çok daha rahat fark etmeye başlayacaksınız.
Unutmayı aracı kullanmak ayrı elde ettiğiniz veriyi doğru yorumlamak ayrı bir beceri.
Burp Suite te önemli olan da bence tam olarak bu.
Konunun sonuna geldik. Birdahaki konumda görüşmek üzere..