Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
ZERO BANK WEB APP SECURITY BULGULARI
1. ZERO BANK WEB APP SECURITY
BULGULARI
ONUR GÜRBÜZ
http://zero.webappsecurity.com/
2. Bulgu Adı: Zayıf Parola Kullanımı
Bulgu Seviyesi: Yüksek
Risk/Etki: Kullanıcı hesapları ele geçirilebilir.
Çözüm Önerisi: Brute Force saldırılarını engellemek için captcha kullanılabilir. Basit kullanıcı ve parola
kullanımı engellenebilir.
Sisteme giriş yapmaya çalıştım. Çok kullanılan kullanıcı adı ve parolaları
(admin,username,password,admin123,123456 vb.) denedim. Bunun sonucunda sisteme “username”
kullanıcı ve “password” parolası ile giriş yaptım.
Bulgu Adı: HTTP PUT/DELETE Metotları Dosya Erişimleri
Bulgu Seviyesi: Yüksek
Risk/Etki: Bu HTTP metotları ile sunucudan dosya silinip, dosya yüklenebilir.
Çözüm Önerisi: PUT/DELETE HTTP metotlarının erişimi kapatılmalıdır.
Nikto ile yaptığım tarama sonucunda DELETE VE PUT metotlarına izin verildiğini gördüm.
3. Bulgu Adı: Hassas Veri Erişimi
Bulgu Seviyesi:Yüksek
Risk/Etki: Bütün kullanıcı adları ve parolarına erişim sağlanabilir.
Çözüm Önerisi: admin/users sayfasındaki bilgiler kaldırılmalıdır.
Dosya ve dizinleri görebilmek için Wfuzz ve Dirb araçları kullanılabilir.
4. Bulgu Adı: Stored XSS
Bulgu Seviyesi:Yüksek
Risk/Etki:
Çözüm Önerisi: Zararlı karakterler encode edilmeli ya da whitelist oluşturulmalı.
Netsparker aracı ile siteyi tarattım. Bir adet Stored XSS keşfettim.
http://54.82.22.214/admin/currencies-add.html sayfasında Currencie eklerken Burp-Suite ile araya
girdim. POST edilen country parametresine aşağıdaki payloadı yazdım.
id=&country='"--></style></scRipt<svg onload=prompt(“ONURXSS”)>&name=
Bu payloadda veritabanı sorgusunu ve style blogunu kapat bizim javascript kodumuzu çalıştırıyor.
Currencies sayfasına tekrar girdiğimizde alerti alıyoruz.
5. Bulgu Adı: Remote File Inclusion
Bulgu Seviyesi:Yüksek
Risk/Etki: Kullanıcı erişememesi gereken dosya dizinlerine ulaşabilir. Shell yükleyebilir.
Çözüm Önerisi: Bazı zarar oluşturacak fonksiyonlar pasif yaparak zararlı scriptlerden korunabiliriz.
Yine Netsparker taramaları sonucunda bir tane RFI (Remote File Inclusion) keşfettim.
http://54.82.22.214/help.html?topic=http://www.google.com sayfasında topic parametresi aldığı
dosya yolunu direk çalıştırmakta.
6. Bulgu Adı: SQL Injection
Bulgu Seviyesi: Kritik
Risk/Etki: Tüm databaselere erişim sağlanabilir.
Çözüm Önerisi: Encoding işlemi yapılmalı, parametrelerde prepare işlemi yapılmalı, kullanıcı yetkileri
kısıtlanmalı.
Burp ile araya girip giden isteklere baktığımda sqli olabilecek istekleri sqlmap ile denedim ve
zero.webappsecurity.com/bank/pay-bills-get-payee-details.html adresine post edilen payeeId
parametresinde bir açık olduğunu farkettim. Aşağıdaki şekilde bu açığı manipüle edebiliriz.
python sqlmap.py -u "zero.webappsecurity.com/bank/pay-bills-get-payee-details.html" --data="payeeId=" --
cookie="JSESSIONID=7B1BD78A" –dbs
Geriye sqlmap bilgisi ile tabloları çekmek kalıyor.