2. blog.btrisk.com @btrisk /btrisktv /btrisk
1
i. Web Uygulama Güvenliği Denetim
Yaklaşım Özeti
Takip eden bölümlerde web uygulamalarına yönelik uygulama
mantığını hedef alanlar dahil “tüm” tehdit türlerine karşı güvence
verebilmek için BTRisk tarafından uygulanan denetim adımları
bulunabilir.
Tüm tehditleri göz önüne almayı güvece altına alan adımların
izlenmesinde yoğunluk, tekrar ve sıralama konusunda şu prensipler
göz önüne alınmaktadır:
Uygulama fonksiyonalitesi, mimarisi ve teknolojisi’nin
anlaşılması: Yaklaşımımızın da ilk adımını oluşturan uygulamanın
anlaşılması ve haritalanması bize muhtemel hedef noktalarını
daha net görme imkanı sunmakta, dolayısıyla uygulamaya özgü
belli alanlara daha fazla odaklanmamıza izin vermektedir.
Denetim sırasında tespit edilen açıklıkların önceki adımlara ve
diğer açıklık türlerine etkisinin değerlendirilmesi: Denetim
sırasında tespit edilen her açıklık tamamlanmış olsa dahi daha
önceki adımların daha etkin gerçekleştirilmesine (örneğin bir
erişim kontrolü açıklığı nedeniyle kullanıcı adlarının öğrenilmesi
parola saldırısını etkinleştirebilir), veya bir açıklık tespitinin diğer
açıklıkların kullanılmasına katkı sağlamasına (örneğin girdi
filtrelemedeki bir açıklık uygulamanın geneline etki ediyorsa
diğer enjeksiyon saldırıları bu bilgi ile daha etkin
gerçekleştirilebilir) imkan tanıyabilir.
Yukarıda sayılan prensipler, ağ güvenlik denetiminde de olduğu
gibi seri adımlar olarak ifade edilen denetim yaklaşımının
denetlenen uygulamanın niteliklerine uygun olarak
özelleştirilmesine neden olabilecektir.
3. blog.btrisk.com @btrisk /btrisktv /btrisk
2
ii.Web Uygulama Güvenliği Denetim
Yaklaşım Detayı
Uygulama İçeriğinin Haritalanması
Link’lenmiş içeriğin tespiti
o Uygulamanın kendi içinde linklerle erişilebilen görünen
içeriğinin tespiti
o Arama motorlarının hizmetinden faydalanılarak siteye
başka sitelerden linklerin ve arama motoru tarafından
belirlenmiş linklerin tespiti
Diğer içeriğin tespiti
o Linklerle ulaşılamayan saklı içeriğin araştırılması
o Öntanımlı içeriğin araştırılması ve tespiti
Standart dışı erişim metodları ile içeriğe erişim araştırması
o URL içeriğinde veya POST verisi içinde fonksiyonaliteye
ve içeriğin sunulmasına ilişkin kontrol amacıyla kullanılan
parametrelerin değiştirilmesi yöntemi ile normalde
sunulmayan içerik ve fonksiyonalitenin araştırılması
o “Debug” parametrelerinin araştırılması ve bu
4. blog.btrisk.com @btrisk /btrisktv /btrisk
3
parametrelerin değiştirilmesi suretiyle “debug” içeriğine
erişilmeye çalışılması
Uygulama Fonksiyonalite ve Teknoloji Analizi
Uygulamanın tüm fonksiyonlarının gözden geçirilmesi suretiyle
kendisinin sağladığı ve diğer destek sistemlerinden temin ettiği
(e-posta, loglama, vb. Gibi) fonksiyonalitenin anlaşılması
Uygulamanın veri girdi noktalarının belirlenmesi
Kullanılan teknolojilerin tüm katmanlar (web sunucusu,
uygulama sunucusu, istemci betik ve uygulamaları, vd.) için
belirlenmesi
Tespit edilen fonksiyonalite, girdi noktaları ve teknolojilere
yönelik saldırı yüzeyinin haritalanması
İstemci Tarafı Kontrollerinin Testi
İstemci ile sunucu arasında kullanılan veri iletim yöntemlerinin
belirlenmesi
o Saklı alanlar (hidden fields)
o Çerezler (cookies)
o URL linklerinin içine gömülü önceden belirlenmiş
parametreler
o ASP.NET ViewState içeriği (ViewState alanına programcı
tarafından parametre eklenmesi mümkündür)
İstemci tarafında uygulanan girdi kontrollerinin tespiti, bu
kontrollerin sunucu tarafında da gerçekleştirilip
gerçekleştirilmediğinin kontrolü
o Uzunluk limit kontrollerinin testi
o JavaScript ile yapılan kontrollerin tespiti ve saldırı
proxy’leri aracılığıyla geçersiz kılınması
o Disable edilmiş form elemanlarının değiştirilerek
sunucuya gönderilmesi ve uygulama üzerindeki etkisinin
gözlenmesi
İstemci tarayıcısında çalışan mobil uygulamaların incelenmesi
o Java Applet kullanımının tespit edilmesi, bu bileşen
aracılığıyla yapılan kontrollerin geçersiz kılınması,
applet’in sunduğu metodlar kullanılarak istenilen
verilerin kodlanması, applet’in decompile edilerek
kaynak kodunun incelenmesi
o ActiveX kullanımının tespit edilmesi, metodlarının ve
5. blog.btrisk.com @btrisk /btrisktv /btrisk
4
kullanım amaçlarının analiz edilerek farklı amaçlarla
kullanılması, gerçekleştirdiği kontrollerin geçersiz
kılınması
o Flash nesnelerinin tespiti, ActionScript kaynak koduna
disassemble edilerek fonksiyonalitesinin anlaşılması,
flash nesnesi ile yapılan kontrollerini saldırı proxy’si ile
geçersiz kılınması
Kullanıcı Tanılama Testleri
Kullanıcı tanılama mekanizmalarının anlaşılması
Doğrudan saldırı testi
o Parola kalitesinin testi (yeni kullanıcı yaratma ve parola
değişikliği ile)
o Kullanıcı kodu tespit etme saldırıları (uygulamanın
mevcut ve mevcut olmayan kullanıcı kodlarına verdiği
yanıt farklılıklarından yola çıkarak)
o Sözlük ve kaba kuvvet saldırılarıyla parola tahmin
saldırıları
Özel kullanıcı hesap yönetim ve kullanıcı tanılama
fonksiyonalitesine yönelik testler
o Kilitlenme veya parola unutma durumunda hesap
kurtarma (reset) fonksiyonalitesinin açıklıklar açısından
testi
o “Beni hatırla” fonksiyonalitesinin istemci tarafında,
tahmin edilebilir veya log bilgilerinden dolayı ortaya
çıkabilecek riskler açısından incelenmesi
o Başka kullanıcı haklarıyla çalışan fonksiyonalitenin
araştırılması
o Kullanıcı kodlarının tekliğinin araştırılması
o Erişim bilgilerinin (kullanıcı kodu, parola, diğer) tahmin
edilebilirliğinin değerlendirilmesi
o Erişim bilgileri iletim yöntemlerinin güvenliğinin
denetlenmesi
o Kullanıcı erişim bilgilerinin kullanıcılara iletim
yöntemlerinin güvenliğinin denetlenmesi
Kullanıcı tanılama mantığına yönelik testler
o Uygulamaya çeşitli girdi manipülasyonlarıyla (kontrol
mantığını bozan, uygulamaya hafıza taşma hatası
6. blog.btrisk.com @btrisk /btrisktv /btrisk
5
yaşatan, vd.) hata aldırılması durumunda kullanıcı
tanılama adımının geçilip geçilemediğinin denetimi
o Çok aşamalı kullanıcı tanılama yöntemlerinde ara
aşamaların atlanıp atlanamayacağının denetimi. Aynı
zamanda ara aşamalarda oturum yönetim
parametrelerinin değiştirilip değiştirilmediğinin denetimi
Yukarıdaki adımlar neticesinde tespit edilen açıklıkların
kullanılması ve yetkisiz erişim gerçekleştirilmeye çalışılması
Oturum Yönetimi Testleri
Oturum yönetim mekanizmasının anlaşılması
“Token” üretim güvenliğinin denetlenmesi
o Token’ın içeriğinin anlamlandırılıp
anlamlandırılamadığının incelenmesi
o Token’ın tahmin edilebilirliğinin denetlenmesi
“Token” iletim ve kullanımındaki güvenlik açıklıklarının
denetlenmesi
o Token’ların iletim güvenliğinin incelenmesi
o Token’ların iz kayıtlarında (log kayıtlarında) görülüp
görülmeyeceğinin incelenmesi (örneğin URL içinde
iletilmesi sonucunda proxy, ISP ve web sunucusu iz
kayıtlarında görülmesi)
o Token’ların oturumlarla ilişkilendirilme yönteminin
incelenmesi (aynı token’ın aynı kullanıcıyla farklı
oturumlarda ilişkilendirilip ilişkilendirilmediğinin, aynı
anda 2 oturum açılması durumunda farklı oturum
token’ları üretilip üretilmediğinin denetimi)
o Oturum sonlandırmanın güvenli biçimde yapılıp
yapılmadığının denetimi
o “Session Fixation” açıklığının test edilmesi (tanılama
sonrası oturum token’ının tazelenmemesine karşın
denetlenmesi)
o “XSRF – Cross Site Request Forgery” açıklığının test
edilmesi (XSRF özellikle çok kullanıcılı ve bir kullanıcının
yüklediği içeriğe diğer kullanıcıların erişmesi durumunda
oturum yönetimi için sadece token’a güvenilmesi
durumunda ortaya çıkan bir açıklıktır)
o Çerez (cookie) kapsamlarının yeterli biçimde kısıtlanıp
kısıtlanmadığının incelenmesi
7. blog.btrisk.com @btrisk /btrisktv /btrisk
6
Erişim Kontrol Testleri
Uygulamanın erişim kontrol ihtiyaçlarının anlaşılması (yatay
olarak farklı kullanıcıların erişim kontrol ihtiyaçları ve dikey
olarak sistem yöneticisi ve kullanıcı erişim kontrol ihtiyaçlarının
anlaşılması)
Birden fazla farklı kullanıcı koduyla uygulamaya erişilerek erişim
kontrol yeterliliğinin denetlenmesi
Sistem yöneticisi haklarıyla erişilebilen fonksiyonalite ve içeriğe
kısıtlı haklara sahip kullanıcı olarak erişilip erişilemediğinin
denetlenmesi
Güvensiz erişim kontrol mekanizmalarının (örneğin saklı bir form
sahasında gönderilen bir parametreye veya HTTP referer
başlığındaki değere dayanarak yapılan kontrollerin)
denetlenmesi
Tüm Parametrelerin “Fuzz” Edilmesi
İstemciden sunucuya giden tüm istek parametrelerinin belli
saldırı tiplerine uygun olarak “fuzz” edilmesi, yani beklenmeyen
değerler gönderilerek hatalı bir yanıt gelip gelmediğinin
incelenmesi yöntemiyle açıklık tespiti yapılması
o SQL enjeksiyonuna yönelik girdilerin gönderilmesi
o XSS (Cross Site Scripting) saldırılarına yönelik girdilerin
gönderilmesi
o İşletim sistemi komut enjeksiyonuna yönelik girdilerin
gönderilmesi
o Dizin aşım saldırılarına yönelik girdilerin gönderilmesi
o Web sunucusunda çalışan (PHP, ASP.NET gibi) betik
enjeksiyonuna yönelik girdilerin gönderilmesi
o Dosya dahil etme (file inclusion) komut enjeksiyonuna
yönelik girdilerin gönderilmesi
Fonksiyonalite’ye Özgü Saldırı Testleri
Bilgi toplama ve fonksiyonalite analizi bölümündeki aktiviteler
sırasında tespit edilen aşağıdaki türde destek sistemlerine
ulaşarak ek fonksiyonalite sağlayan uygulama alanlarına yönelik
olarak aşağıdaki testlerin gerçekleştirilmesi
o SMTP enjeksiyonu (e-posta fonksiyonalitesi için arka
tarafta bir e-posta sunucusuna ulaşılıyorsa)
o Yine işletim sistemi veya veritabanı sunucuları üzerinde
8. blog.btrisk.com @btrisk /btrisktv /btrisk
7
çalışan yüksek fonksiyonalite sağlayan destek
uygulamalarında yer alabilecek hafıza taşma, “integer”,
“format string” açıklıklarının (fonksiyonelitenin tespit
edildiği alanlara odaklanılarak) denetlenmesi
o SOAP enjeksiyonu (ek fonksiyonalite için web servisi
kullanılıyorsa)
o LDAP enjeksiyonu (uygulama bir dizin sunucusundan
sorgulama yapıyorsa)
o XPATH enjeksiyonu (uygulama bir XML veri kaynağından
sorgulama yapıyorsa)
Mantık Hatalarının Testi
Uygulama mantık hataları testleri her uygulamaya özel bir
yaklaşım gerektirmekte, uygulama fonksiyonalitesi ve işlem
akışları anlaşıldıktan sonra uygulama geliştiricinin varsayımlarını
tahmin etme ve bu varsayımlardaki güvenlik açıklarını
değerlendirme şeklinde gerçekleştirilmektedir. Mantık
hatalarının aranacağı temel alanlar şunlardır:
o Çok aşamalı işlemler ve bu işlemlerin her aşamasında bir
önceki aşamadaki kontrollerin uygulandığı varsayımı
o İstemci tarafında yapılan kontroller sonrası tamlığı
sağlanan ancak saldırı proxy’si aracılığıyla bu kontrollerin
geçersiz kılındığı durumlarda uygulamanın beklediği
girdilerin tamamının gönderilmemesi durumunda
uygulama davranışındaki değişiklikler
o Güven sınırlarının oluşturulmasındaki hatalar, örneğin bir
kullanıcı belli bir kontrolü geçerek belli bir işlem için
güvenilir statüsüne geçebilir ve bu statü ile erişmemesi
gereken başka bir kaynağa da ulaşabilir
o İşlem mantığında bulunan hatalar, örneğin bir işlem için
üst limit konulan bir forma negatif girdi girerek uygulama
davranışının değiştirilmesi, veya aynı sonuca ulaşmak
üzere bir miktar limiti konmasına rağmen çok sayıda
işlemle aynı miktar için işlem yapılması gibi
Web Sunucusunun Testi
Web uygulama katmanını destekleyen HTTP sunucusuna yönelik
test adımları HTTP sunucusunun model ve versiyonunu tespit
etmeyi ve aşağıdaki aktiviteleri içerir:
o Öntanımlı kullanıcılar ve parolalarının denetimi
9. blog.btrisk.com @btrisk /btrisktv /btrisk
8
o Öntanımlı içeriğin tespiti
o Tehlikeli HTTP metodlarının desteklenip
desteklenmediğinin denetimi
o Proxy fonksiyonalitesinin varlığı ve ağdaki başka
kaynaklara yönelik saldırı amaçlı kullanıp
kullanılamayacağının tespiti
o Sanal makine (virtual host) ayarlarındaki açıklıkların
denetimi (Host HTTP başlık alanına doğru, hatalı ve IP
adresleri girilmesi yöntemleriyle)
o Web sunucu yazılımındaki açıklıkların denetlenmesi
(sunucu model ve versiyonuna yönelik bilinen açıklıkların
araştırılması ve denenmesi yoluyla)
Diğer Testler
Daha önce sayılanların dışında aşağıdaki testler de web uygulama
güvenlik denetiminin parçasıdır:
o Kullanılan tüm JavaScript betiklerinin Document Object
Model (DOM)’i hedef alan bir XSS saldırısına imkan
tanıyıp tanımayacakları açısından incelenmesi (JavaScript
kodu URL içinde yer alan bir parametreyi tehlikeli DOM
metodlarıyla işliyorsa DOM temelli bir XSS açıklığı
doğabilir)
o Çerezler (cookies) nedeniyle oluşabilecek lokal
mahremiyet açıklıklarının incelenmesi
o Denetim sırasında tespit edilecek bilgi sızmalarının
(örneğin çok detay içeren hata mesajları, uygulama kodu,
dizin listesi gibi) sağladığı bilgilerin değerlendirilmesi ve
diğer saldırılara girdi sağlaması
o Zayıf SSL kriptolama ve özet algoritmalarının desteklenip
desteklenmediğinin denetlenmesi
o İsimli “frame”ler kullanılıyorsa frame enjeksiyon
açıklığının test edilmesi
10. blog.btrisk.com @btrisk /btrisktv /btrisk
9
BTRİSK Hakkında
2009 yılında kurulmuş ve sadece bilgi güvenliği hizmetlerine
odaklanmış olan BTRisk Bilgi Güvenliği ve BT Yönetişim Hizmetleri
bilgi güvenliği problemine yönetim kurulu seviyesinden sistem odası
uygulamasına kadar uzanan alanda çözüm üretmektedir.
BTRisk bilgi güvenliği problemini görünür hale getirerek
algılanmasını, anlaşılmasını ve dolayısıyla ele alınmasını mümkün
hale getirmektedir.
BTRisk bilgi güvenliği problemine karşı geliştirdiği yaklaşımları gerçek
hayat koşullarında test etmiş ve uygulanabilir hale getirmiştir.
Bilgi güvenliği ve BT yönetişim hizmet alanlarımız aşağıdaki gibidir:
Pentest Hizmetleri
Bilgi Güvenliği ve BT Yönetişim Hizmetleri
Bilgi Güvenliği Operasyon Hizmetleri
Bilgi Güvenliği Eğitimleri
Özgün ürünlerimiz aşağıdaki gibidir:
BTRWATCH Bilgi Güvenliği Risk Analizi ve Denetim Uygulaması
BTRMON 5651 Uyumlu Wi-Fi ve Kablolu Ağ Hotspot Çözümü
BTROTP Tek Kullanımlık Parola Çözümü
Pentest & BT
Denetimi
ISO27001
Danışmanlık
Hizmetleri
BG Operasyon
Hizmetleri