BGA Bank Müşteri Giriş Paneli Reflected XSS Zafiyeti ve İstismarı
BGA Bank “Müşteri Giriş Paneli” sayfasında “Reflected XSS Zafiyeti” bulunmaktadır. XSS zafiyetinin tespiti ve istismarı aşağıda adım adım anlatılmıştır.
Tablo 1. Giriş sayfası Reflected XSS zafiyet bilgileri
URL
|
|
HTTP Talep Türü
|
POST
|
Payload
|
<script>alert(document.cookie)</script>
|
Parametre
|
b_musterino
|
1) Giriş formu rastgele ve yanlış bilgilerle doldurulur, ardından “Giriş Yap” butonuna tıklanır.
Şekil 1. Müşteri Giriş Paneli
Yanlış girilen müşteri numarasının hata mesajında yer alması, XSS zafiyetinin olabileceğine işaret eder. 12345678 yerine yazılan herhangi bir HTML veya JavaScript kodu, sayfa kaynak kodları arasında yer alır. Eğer girdiler geliştirici tarafından filtrelenmemişse saldırgan zararlı kod parçacıklarını sayfa üzerinde çalıştırabilir.
2) Tarayıcı ile uygulama arasına girilerek, JavaScript filtrelemeri atlatılır ve payload çalıştırılır.
Müşteri numarası alanına direk tarayıcı üzerinden html kod girildiğinde, Şekil 2. de gösterilen hata veya türevleri zafiyetin istismarına engel olacaktır.
Şekil 2. Müşteri Giriş Paneli hata mesajı
Uygulama geliştirici, girdileri JavaScript ile kontrol etmektedir. JavaScript kodları sunucuda değil, son kullanıcının yani müşterinin tarayıcısında çalışır. Bu problem, tarayıcı ile sunucu arasına girilerek çözülebilir. Bunu gerçekleştirmek için de Proxy araçları kullanılır. Bu zafiyetin istismarında Proxy aracı olarak Burp Suite kullanılmıştır.
Müşteri numarası, geliştiricinin istediği formata uygun bir şekilde (12345678) girilir. “Giriş Yap” butonuna tıklandığı anda sunucuya gönderilen istek Proxy’ye düşer. Proxy’de bekletilen istek üzerinde bulunan, b_musterino parametresinin 12345678 olan değeri Tablo 1. deki payload ile değiştirilir. Bekletilen isteğe izin verilerek sunucuya ulaşması sağlanır. Böylece filtreleme başarılı bir şekilde atlatılmış olur.
Şekil 3. Burp Suite ile veri manipülasyonu
3) Sonuç, müşterinin cookie bilgileri başarılı bir şekilde alınır.
Şekil 4. Sonuç