AuthMatrix

1 Proxy / Reverse Proxy Nedir?

Burp Suite’in AuthMatrix eklentisinden bahsetmeden evvel birkaç konuya açıklık getirmekte fayda var diye düşünüyorum. Proxy (Vekil) sunucu bir web adresine erişmeden önce gelen/giden istekleri (trafiği) kendi üzerinden aktaran sunucudur.

AuthMatrix

Görselde de görülebileceği üzere web adresi üzerine doğrudan kendimiz bağlanmıyoruz. Bunun yerine bizim için isteklerimizi taşıyan bir vekile veriyoruz. Ve yine bu vekil bizim için web adresinden dönen istekleri alıyor ve bizlere iletiyor. Burp Suite, ZAProxy, Fiddler en bilinen Proxy sunuculardır.

Reverse Proxy esasında Proxy ile aynı işlevi görür. Aralarındaki tek fark konumlandırıldığı yerdir.

AuthMatrix

Eğer vekilimiz Client’in önünde değil de Server’ın önünde konumlandırılmış ise buna Reverse Proxy deriz. En bilinen Reverse Proxy, CloudFlare‘dır.

2 Authentication / Authorization Nedir?

AuthMatrix eklentisinin kullanımından bahsetmeden önce bir diğer açıklık getirmek istediğim konu ise birbirleri ile sıkça karıştırılan Authentication (Yetkilendirme) ve Authorization (Doğrulama) kavramları. Esasında Türkçe karşılıklarına baktıktan sonra yeterince açıklayıcı ve esasında birbirleri ile benzerlikleri olsa dahi aynı manaya gelmeyen kavramlar olduğunu anlıyoruz.

AuthMatrix

Görüldüğü üzere Authentication “Sen Kimsin?“, Authorization ise “Ne yapmak istiyorsun?” sorusunun cevabıdır esasında. Authentication esasında her gün, her an istemsiz bir şekilde cevabını verdiğimiz bir sorudur. Örneğin Facebook sitesine giriş yaparken kimlik bilgilerimizi gireriz ve sisteme kim olduğumuzu belirtmiş oluruz. Kullandığımız sistemlere göre farklı Authentication metotları vardır. Bunlar en temelde Single Factor, Two Factor ve Multi Factor Authentication olmak üzere üçe ayrılmaktadır. Esas konumuzdan fazla uzaklaşmamak adına her birine uzun uzun bu dokümanda değinmeyeceğim.

Authorization ise Facebook sitesine giriş yaptıktan sonra hangi yetkilere sahip olacağımız anlamına gelmektedir. Bir Admin kullanıcısının yetkileri ile standart bir kullanıcının yetkileri takdir edersiniz ki bir olmamaktadır. Bu noktada kullanıcılara vermiş olduğumuz yetkilerin literatürde ki karşılığı çoğunlukla Permission olarak geçmektedir.

3 False Positive Nedir?

Web uygulama güvenliğine meraklı bireyler olarak False Positive kavramını muhakkak duymuşuzdur. Aracımızı anlatmadan önce bu kavrama da bir açıklık getirmek gerekmektedir. False Positive, yanlış alarm olarak düşünülebilir. Film sahnelerinde sıkça karşılaştığımız, bir acil durum olduğunu sanılan durumlarda devreye sokulan fakat esasında herhangi bir acil durum olmayan zamanlarda çalan o alarm tam olarak False Positive durumudur.

4 AuthMatrix Nedir?

AuthMatrix bir Burp Suite eklentisidir. Bu eklenti web servislerindeki yetkilendirmeleri test etme noktasında işimizi bir hayli kolaylaştırır. Eklenti, Security Innovation ekibi tarafından geliştirilmiştir ve en güncel sürümü 0.8 sürümüdür. Açık kaynak kodlu olan AuthMatrix eklentisine kendi GitHub Repo’sundan ulaşabilirsiniz. AuthMatrix’in yapabildiklerinin listesi şu şekildedir;

  1. Rolleri listeleyebilir.
  2. Tüm uygulamanın bir işlevsellik haritasını çıkartabilir.
  3. Kullanıcıların Authentication testlerini gerçekleştirebilir.
  4. Kullanıcı/istek kombinasyonlarını test edebilir.
  5. İstek çalıştırabilir.
  6. Geri dönen yanıtları gözlemleyebilir.
  7. Gözlemlenen davranışın ilgili kullanıcı için doğru olup olmadığını gözetebilir.
  8. Sonuçları kaydedebilir.
  9. Farklı kullanıcı profilleri oluşturabilir.
  10. Testten geçirilen her bir kullanıcı için farklı oturum token’ları atanabilir ve testler bu şekilde gerçekleştirilebilir.
  11. Kendi durum filtrelerimizi oluşturabilir ve teste tabi tutabiliriz.
  12. Tüm bunları kullanıcı dostu bir arayüz ile yapar. Buda aracımızın kullanımını bir hayli kolaylaştırır.
4.1 Kurulum

AuthMatrix aracımızın kurulumu bir hayli basittir. AuthMatrix bir Burp Suite eklentisi olduğundan dolayı haliyle Burp Suite’in yüklü olması gerekmektedir. Burp Suite menülerinde Extender menüsünün altında BApp Store sekmesine geliyoruz. Eklentiler arasında AuthMatrix’i buluyoruz.

AuthMatrix

Eklentimiz Jython paketine bağımlılık duymaktadır. Bu noktada aracımızı kullanabilmek adına ilk olarak Jython paketini kurmamız gerekmekte. Jython’ın resmi web adresinden paketi indirebilir ve klasik “Next Next Next” mantığı ile paketi kurabilirsiniz. Kurulum tamamlandıktan sonra Burp Suite üzerinde Jython JAR dosyasının konumunu tanıtmanız gerekecektir. Bunun için yine Extender menüsünün altındaki Options sekmesine geliyoruz. Python Enviroment’ın altında JAR dosyamızın konumuzu belirtiyoruz. Eklentimizin tam kararlılıkla çalışması adına kurduğumuz Jython sürümünün 2.7.0 veya üstü bir sürüm olduğuna dikkat edin.

AuthMatrix

Bu noktadan sonra artık eklentimizi kurabiliriz. Extender menüsünün altındaki BApp Store sekmesinde AuthMatrix’i bulduktan sonra Intall dememiz yeterli olacaktır. Kurulum tamamlandıktan sonra menüler arasına AuthMatrix menüsü eklenecektir ve eklentimiz artık kullanımımıza hazır haldedir.

4.1.1 Manuel Kurulum

Eklentimizi Manuel olarak kurmamız da mümkün. Bunun için öncelikle eklentinin AuthMatrix.py dosyasını indirmemiz gerekmekte. Ardından Burp Suite içerisindeki Extender menüsünün altındaki Extensions sekmesine geliyoruz. Ardından Add butonuna tıklıyoruz Extension Type’ı Python olarak seçiyoruz ve indirdiğimiz Python dosyasının yolunu belirtiyoruz.

AuthMatrix

Ardından Next butonuna tıkladığımız takdirde eklentimiz kullanımımıza hazır bir şekilde kurulmuş olacaktır. Aşağıdaki görselde gördüğünüz üzere menülerimiz arasına AuthMatrix eklenmiş. Bu noktadan sonra aracımızın kullanımına doğrudan başlayabiliriz.

AuthMatrix

5 Aracın Temel Kullanımı

Aracımız grafiksel ara yüzü sayesinde bizlere bir hayli kullanım kolaylığı sunmaktadır. Bir demo üzerinden gidelim. Demo için kendime bir WordPress sistem kurdum ve iki adet kullanıcı oluşturdum.

AuthMatrix

Gördüğünüz üzere adminUser kullanıcı adına sahip bir adet Administrator kullanıcımız, subUser kullanıcı adına sahip bir adet Subscriber kullanıcımız bulunmakta. Takdir edersiniz ki adminUser’ımız subUser’ımıza göre çok daha fazla yetkiye (permission) sahip. Bu senaryo için aracımdan 2 adet kullanıcı ve 2 adet yetki belirteceğim. Bunun için Burp Suite’in AuthMatrix menüsüne geliyorum. İlk olarak New User butonuna tıklıyorum. Karşıma açılan pencereye adminUser yazıyorum ve OK diyorum.

AuthMatrix

Aynı işlemi subUser’ım için de gerçekleştiriyorum. Aşağıdaki görselde gördüğünüz üzere kullanıcılarım tanımlandı.

AuthMatrix

Hemen ardından yetkilendirmeleri tanımlayacağım. Bunun için New Role butonuna tıklıyorum. Karşıma gelen ekrana Administrator yazıyorum ve OK diyorum. Buradaki isimlendirmeler sembolik fakat programı daha efektif kullanmak adına mantıklı isimlendirmeler yapmak önemli.

AuthMatrix

Aynı işlemi şimdi de Subscriber rolü için yapıyorum. Aşağıdaki görselde gördüğünüz üzere rollerim de tanımlandı.

AuthMatrix

adminUser için hem Adminstrator hem de Subscriber rolünü tanımlayacağım. Takdir edersiniz ki adminUser’ım subUser’ımın da yetkilerine ve fazlasına sahip. subUser için ise yalnızca Subscriber rolünü tanımlayacağım. Bunun için ilgili yerleri tiklemem yeterli olacaktır. Bu tanımlamayı aşağıdaki görselde görüyorsunuz.

AuthMatrix

Tam olarak bu noktada şunu belirtmeliyim ki eğer benim gibi test ortamınızı localhost‘ta çalıştırıyorsanız Burp Suite istekleri yakalamayacaktır. Ben bu sorunu Firefox için; abot:config‘teki network.proxy.allow_hijacking_localhost ayarının değerini true yaparak çözdüm.

Kullanıcılarımızı tanımladık, rollerimizi tanımladık ve atadık fakat halen bir eksiğimiz var. Cookie! İlgili kullanıcıların cookie değerlerini de tanımlıyoruz. Aracımın son görüntüsü aşağıdaki gibi olmalı.

AuthMatrix

Artık testimizi yapmaya hazırız. Testimizi hangi sayfa veya sayfalar için uygulamak istiyorsak örnek isteği de aracımıza göndermemiz lazım. Ben önceden yakaladığım istekleri Proxy menüsü altındaki HTTP History sekmesinden aracıma gönderiyorum. Bunun için ilgili isteğin üzerine sağ tıklıyorum. Karşıma aşağıdaki gibi bir ekran gelmeli.

AuthMatrix

Gördüğünüz üzere AuthMatrix ile ilgili seçenekler de karşıma geldi. İlgili isteği aracıma göndermek için “Send request(s) to AuthMatrix” diyorum. Gönderdiğim istekler aşağıdaki görselde gördüğünüz üzere AuthMatrix menüsüne gelmeli.

AuthMatrix

Response Regex sekmesi ilginizi çekmiş olmalı. Eylemin başarılı olup olmadığını test etmek için aracımız Response Regex’i kullanmaktadır. Ben burayı kendime göre düzenliyorum. Aşağıdaki görseli inceleyelim.

AuthMatrix

Response Regex’e dikkat edin. upload.php sayfasında Ortam, plugins.php sayfasında ise Eklentiler kelimesi geçmekte. Doğal olarak dönen istek sonucunda eğer Ortam veya Eklentiler kelimesi geçmekte ise aracımız bu durumlara göre farklı sonuç verecektir. Gönderdiğimiz isteklerde hangi rolün veya kullanıcının hangi sayfaya erişebileceğini ayarlıyoruz. Bunun için ilgili ekrandaki tikleri kullanıyoruz. Aşağıdaki görseli inceleyelim.

AuthMatrix

Seçtiğimiz tikli sayfalar ilgili sayfaya ulaşabilir anlamına gelmekte. Testimizi başlatmadan önce AuthMatrix menümüzdeki istekleri inceleyebileceğimiz sayfadan da kısaca bahsedelim. Aşağıdaki görseli inceleyelim.

AuthMatrix

Kullanımı açısından Burp Suite’ten alışık olduğumuz kullanımdan ekstra bir durum yok. Request sekmesinde karşı tarafa giden ilgili isteği, Response sekmesinde ise karşı taraftan dönen ilgili cevabı görebilmekteyiz. Testimizi başlatmak için sol altta bulunan Run butonuna tıklamamız yeterli olacaktır. Aldığım sonuç aşağıdaki şekilde.

AuthMatrix

Peki bu renkler neyi ifade ediyor? Mavi rengimiz False Positive, yeşil rengimiz başarılı (herhangi bir sıkıntı yok) anlamına gelmekte. Bu ekranda olmayan birde kırmızı rengimiz var. Kırmızı rengimiz ise başarısız (sömürülebilir) anlamına gelmekte. Görüldüğü üzere aracımızın kullanımı basit ara yüzü sayesinde oldukça kolaylaştırılmış durumda. Bu noktada şunu da belirtmeliyim eğer test sonucumuz False Positive çıkmış ise muhtemelen ilgili kullanıcıya yanlış bir token/cookie atamış olabilirsiniz.

6 Aracın Diğer Özellikleri

Aracımızın temel kullanımını öğrenmiş olduk. Senaryolara göre oluşturacağınız kullanıcı profilleri, roller elbette değişecektir. Aracımızın diğer özelliklerine de kuş bakışı bir göz atalım.

6.1 Chains

Zincirler genellikle farklı istekler arasında veri taşımak için kullanılır. Zincirlerin kullanılmasının genellikle üç sebebi vardır. Bunlar;

  1. İstekleri geçerli CSRF tokenlarına göre doldurmak.
  2. Yeni oluşturulan ID’lerin kullanıcılar arası yetkilendirmelerde test edilmesi için.
  3. Kimlik doğrulama işlemini otomatikleştirmek için.

Yeni bir zincir tanımlamak için altta bulunun New Chain butonuna tıklamamız yeterli olacaktır. Yeni oluşturulan zincirler aşağıdaki şekilde gözükecektir.

AuthMatrix

Bu alanları sırasıyla tanıtmakta fayda var. Chain Name adı üstünde zincire vereceğimi sembolik isim. Source kısmından kullanılacak isteği seçiyoruz. Regex – Extract kısmı kaynaktan dönen isteğin yanıtından bir anlam çıkarmak istediğimizi alan. Destination(s) kısmı kaynak değerin değiştirileceği isteği belirttiğimiz alan. Regex – Replace kısmı kaynaktan gelen değerin nereye ekleneceğini belirttiğimiz alan. Use Values From kısmı seçilen kullanıcıdan elde edilen değerin kullanılıp kullanılmayacağını belirttiğimiz alandır. Son olarak Transformers alanı ise verileri belirtilen formatta değiştirmek için kullanılır. Transformers sekmesi aşağıdaki şekildedir.

AuthMatrix
6.2 State File

Aracımız tarafından üretilen durum dosyaları bulunmaktadır. Bu durum dosyaları JSON formatında kaydedilmektedir. Bu durum dosyaları üzerinde müdahalede bulunarak görevleri otomatikleştirebilmekteyiz. State dosyalarının kullanımı ile ilgili detaylı bilgi için resmi GitHub Repo’sunu ziyaret edebilirsiniz.

6.3 Projeyi Kaydetmek ve İçe Aktarmak

Çalışma alanımızı kaydetmemiz, önceden kaydettiğimiz bir çalışmaya içe aktarmamız ve çalışma alanımızı temizlememiz mümkün. AuthMatrix menüsünün sağ altında bulunan Save butonu ile çalışma alanımızı kaydedebilir, Load butonu ile önceden kaydettiğimiz bir çalışmayı aracımıza yükleyebilir ve Clear butonu ile çalışma alanını sıfırlayabiliriz. Kaydettiğimiz dosyanın Beautify edilmiş içeriği aşağıdaki gibi olacaktır.

AuthMatrix

Blog postu ile ilgili bir sorunuz varsa bizimle iletişime geçebilirsiniz.

Mehmet Ayberk ANNADINÇ

Size nasıl yardımcı olalım?

İhtiyacınız olan her an Prisma danışmanları yanı başınızda. Bizimle 7/24 iletişime geçebilirsiniz.


    Sızma testi hizmetlerimizi incelediniz mi?