Günümüzde herkesin yaygın olarak kullandığı hatta bazılarının daha da geliştirdiği giriş panellerinde güvenlik amacıyla kullanılan “token”lerin aslında nasıl bypass edilebileceğini konuşacağız.

Web sayfalarında bulunan giriş panellerinde sadece kullanıcı adı ve parola bilgileri ile doğrulama yaparak giriş yapılması brute-force (kaba kuvvet) saldırılarına olanak sağlar. Böylelikle saldırganlar rahatlıkla bulunan giriş paneline ellerinde bulunan kullanıcı adı ve parola dizileri ile sürekli deneme yaparak giriş yapmayı başarabilir. (Diğer kritik zafiyetlerin olmadığını kabul ediyoruz.)

Buna istinaden geliştiriciler, bu gibi formların güvenliğini sağlamak amacıyla birçok teknik denemişlerdir. Bu tekniklerden biri ise token kullanımıdır. Fakat bu token kullanımı brute-force atakları tamamen engelliyor diyemeyiz. Bu kısımda sizlere Authentication tokeni bulunan bir giriş paneline nasıl brute-force yapılacağını anlatacağız.

Token’i olan sayfalara brute-force saldırıları düzenlemek için iki farklı yöntem inceleyeceğiz.
İlkinde Burp Suite aracını, diğerinde ise bir Python Script’i kullanacağız.

Öncelikle Login sayfamıza gidiyoruz.

Sayfaya erişim sağladıktan sonra örnek test bilgileri ile istek atıyoruz. Tabi bu isteği incelemek için Burp Suite aracımızı kullanıyoruz.

 

Görüldüğü gibi isteğimiz POST request olarak gitmekte ve Body’de token, user, pass, submit bilgileri mevcut. Ayrıca Cookie’de de CSRF Token kullanımı mevcut.

Bu durumda sayfaya normal bir şekilde brute-force atak düzenlediğimiz zaman şu şekilde çıktı alıyoruz.

Bu durumda Burp Suite’in muazzam yeteneklerini kullanmamız gerekmektedir. Adım adım ilerleyelim.

Öncelikle Intercept’i off yapalım.

Sonrasında tekrardan login sayfamıza giriş yapalım. Böylelikle, “http_history” kısmında isteğimizi görebilmemiz gerekmektedir.

Gördüğümüz üzere isteğimiz gelmiş. Devamında üst sekmelerde bulunan Project Options sekmesine tıklayıp Sessions alt sekmesinden yeni bir rule ekleyelim.

Rule Actions kısmından yeni bir action eklemek için Add butonuna bastıktan sonra “run a macro” seçeneğini seçmemiz gerekmektedir.

Select Macro seçeneğine girdiğimizde, karşımıza http historymizde bulunan isteklerimiz geliyor. Burada login sayfamıza atmış olduğumuz isteği seçiyoruz ve “configure item” butonuna basarak macromuzun ayarlarını yapmaya başlıyoruz.

Karşımıza gelen sayfa üzerinde add butonuna bastığımızda, macromuzun hangi değişken için çalışacağını göstermemiz için bulunan bir sayfa kaynak kodu paneli çıkıyor.


Bu Panel üzerinde, öncelikle sayfada bulunan tokenin değişken ismini “parameter” kısmına yazıyoruz. Daha sonrasında token değerini seçiyoruz. Böylelikle value kısmına gelmiş oluyor.

En son işlemlerimizi tamamlayıp pencereleri kapatırken 2 pencere öncesinde bulunan “Tolerate URL” checkbox’ını da işaretlemeyi unutmuyoruz.

“OK” butonuna bastıktan sonra karşımıza gelen penceredeki “scope” sekmesine geçiyoruz ve burada da brute-force atakları düzenleyeceğimiz için sadece “intruder” checkbox’ını işaretli bir şekilde bırakıyoruz. Ayrıca URL Scope kısmında da tabi ki tanımlanmış “Target” checkbox’ını işaretliyoruz.

Sonrasında “OK” butonuna bastığımızda artık işlemlerimiz tamamlanmış oluyor.

Bu macro ile brute force gerçekleştirebiliyor muyuz görelim. Login sayfamıza geri dönüp giriş yapıyoruz ve isteğimizin HTTP history sekmesine gelmesini sağlıyoruz. İstek geldikten sonra “send to intruder” diyerek isteğimizi “Intruder” sekmesine yönlendiriyoruz.

Klasik bir biçimde “cluster bomb” seçeneğine gelip user ve pass değişkenlerini seçiyoruz ve payloadlarımızı girmek için “payload” sekmesine geçiyoruz.

Burada 1 numaralı payload anlaşıldığı üzere kullanıcı adı bilgisi için 2 numaralı payload ise parola bilgisi içindir. Payloadları set ettikten sonra aşağı iniyoruz ve oradan da sadece ilk iki checkbox’ın işaretli olduğundan emin olup aşağıdaki “grep match” sekmesine incorrect kelimesini yazıyoruz. Bu kelimeyi yazmamızın nedeni login sayfamızda yanlış bir giriş olduğu zaman bize mesaj olarak incorrect vermesi. Bu şekilde doğru isteği rahat bir şekilde görebiliyoruz.

Sonrasında “Start Attack” diyerek saldırımızı başlatıyoruz.

Gördüğümüz gibi saldırı sonucumuzu başarılı bir şekilde geliyor.

Şimdi ise bu saldırı tekniğini Python programlama dili ile nasıl yapabiliriz onu göreceğiz.

Öncelikle adım adım yazmış olduğumuz python kodunu incelemek için buraya bir ekran görüntüsü ekleyelim.

Öncelikle ilk 3 satırda kütüphanelerimizi tanımlıyoruz.

  • Requests kütüphanesi http üzerinden yapacağımız istekler için yazılmış bir kütüphanedir. BeautifulSoup kütüphanesi ise html ve xml kodlarını parse etmek için hazırlanmış güçlü bir kütüphanedir. OS kütüphanesi ise tahmin edeceğiniz üzere işletim sistemi bağımlılıklarında işlevselliği arttırmak için taşınabilir bir yol sunmaktadır.
  • URL değişkenimize hedef sitemizin adresini yazıyoruz.
  • Request değişkenine request kütüphanesindeki session fonksiyonunu atıyoruz. Böylelikle isteklerimizi yollarken bu değişkeni kullanabiliriz.
  • Sonrasında parola için kullanacağımız değerleri içeren “wordlist.txt” adlı dosyamızı açıyoruz.
  • For döngüsü bloklarında wordlist.txt’nin içerisinde bulunan değerleri satır satır okumaya başlıyoruz.
  • Yine döngü içerisinde sayfamıza get isteği atıyoruz. İstek sonucunda gelen tüm html içeriğini text olarak html_content değişkenine atıyoruz.
  • BeautifulSoup kütüphanesi ile bunu düzenliyoruz ve soup değişkenine atıyoruz.
  • Html içerisinde bulunan authentication tokeni, token değişkenine atıyoruz.
  • Sonrasında atacağımız post isteği için gerek body’i oluşturuyoruz. Bunun ismi de kodumuzda login_request değişkeni oluyor.
  • post ile post isteğimizi atıyoruz ve login_request değişkenine atıyoruz.
  • İsteğimizin sonucunda bize dönen değeri text olarak çekip içeriğinde “incorrect” var mı yok mu diye kontrol ediyoruz.
  • Eğer ki içeriğinde yoksa, scriptimiz başarılı olmuş oluyor.

Bu adımları tamamlayıp scriptimizi çalıştırdığımız takdirde karşımıza aşağıdaki şekilde bir sonuç gelmesini bekliyoruz.

Görüldüğü üzere scriptimiz başarıyla çalıştı. Böylelikle authentication tokeni bulunmasına rağmen bir giriş paneline brute-force atakları düzenlenebildiğini öğrenmiş olduk.