Web güvenliğinde bir diğer kritik konu da Broken Authentication (Kimlik Doğrulama Açıkları). Bu açıklar, saldırganların bir web uygulamasına kimlik doğrulama mekanizmalarındaki zayıflıklar üzerinden sızmasına veya yetkilendirme açıklarını suiistimal etmesine olanak tanır. Sonuç: Yanlış kişilerin admin paneline giriş yapması, kullanıcı hesaplarının ele geçirilmesi ve hatta sistemin tam kontrolünün elde edilmesi.
Hadi bu konuyu detaylıca ele alalım.
Broken Authentication, kullanıcıların kimlik doğrulama süreçlerinde yapılan yanlışlar veya eksiklikler nedeniyle oluşur. Bu, zayıf parola politikaları, güvenli olmayan oturum yönetimi veya parola sıfırlama fonksiyonlarının kötü uygulanması gibi birçok nedenle gerçekleşebilir.
Bir saldırganın amacı basittir:
- Kullanıcıların (özellikle admin yetkili hesapların) oturum bilgilerini çalmak,
- Kimlik doğrulama aşamalarını atlayıp doğrudan sisteme sızmak,
- Yetkisi olmadığı sayfalara, veri tabanına veya API uç noktalarına erişmek.
1. Zayıf Parola Politikaları:
- Varsayılan şifrelerin değiştirilmemesi (örn:
admin/admin). - Kullanıcıları karmaşık şifre oluşturmaya zorlamamak (örn:
123456ya dapassword).
2. Session Fixation:
- Oturum kimlik bilgilerinin (Session ID) yeni oturum açıldığında yenilenmemesi.
- Saldırgan, kullanıcının oturum açma öncesi tahmin edilebilir bir ID atadığında, kullanıcı giriş yaptığında bu ID üzerinden kullanıcının oturumunu çalabilir.
3. Oturum Çerezlerinin Güvenliği:
HttpOnly,Secure,SameSitegibi bayrakların kullanılmaması.- Çerezlerin açıkta HTTP üzerinden gönderilmesi, saldırganın “Man-in-the-Middle” saldırılarıyla çerezleri ele geçirmesine neden olabilir.
4. Parola Sıfırlama Mekanizmaları:
- Süresi dolmayan parola sıfırlama linkleri.
- Kötü korunan güvenlik soruları (örn: “Evcil hayvanının adı?” gibi kolay tahmin edilebilir cevaplar).
DVWA ya da benzeri bir test ortamında, kimlik doğrulama mekanizmasını incele. Varsayılan admin/admin gibi hesaplar var mı?
- Oturum açtıktan sonra, tarayıcı çerezlerini incele.
- Çerezlerin
HttpOnlyveyaSecurebayraklarının eksik olduğunu görürsen, bu bir zayıflık. - Aynı oturumu başka bir tarayıcıda çerez değerini kopyalayarak test et. Eğer doğrudan giriş yapıyorsan, bu bir açık demektir.
- Parola sıfırlama linkleri ne kadar süre geçerli?
- Linki kullandıktan sonra bile geçerliliği devam ediyor mu?
- Güvenlik soruları tahmin edilebilir mi?
Bu testlerle gerçek hayatta da çok sık karşılaşırsın. Bounty platformlarında özellikle “Password Reset” fonksiyonları altın madendir. Çünkü yanlış yapılandırılmış bir password reset mekanizmasıyla tüm sistem tepetaklak edilebilir.
1. Güçlü Parola Politikaları:
- Minimum uzunluk, özel karakter zorunluluğu.
- İki faktörlü kimlik doğrulama (2FA) entegrasyonu.
2. Oturum Yönetimi İyileştirmeleri:
- Oturum açıldığında session ID yenilenmeli.
- Çerezlere
HttpOnly,Secure,SameSitebayrakları eklenmeli. - Oturumların belirli bir süre sonunda otomatik zaman aşımına uğraması sağlanmalı.
3. Parola Sıfırlama Süreçlerini Güçlendirmek:
- Sıfırlama linkleri kısa süreli geçerliliğe sahip olmalı (örn: 15 dakika).
- Kullanıcının mevcut oturumlarını sıfırlama sonrası otomatik olarak sonlandır.
4. İkinci Bir Kimlik Doğrulama Katmanı Ekle:
- Şüpheli etkinlik tespit edildiğinde ek doğrulama istemek.
- Captcha veya SMS doğrulaması.
Broken Authentication, saldırganlar için devasa bir oyun alanı sunar. Doğru yönetilmezse, yetkisiz kişilerin sistemde at koşturmasına izin verir. Ama önceden planlanan sıkı parola politikaları, sağlam session yönetimi ve doğru konfigüre edilmiş parola sıfırlama süreçleriyle bu açıklar kolaylıkla engellenebilir.
Bir bug bounty avcısı veya bir güvenlik mühendisi olarak, kimlik doğrulama mekanizmalarına her zaman şüpheyle yaklaşmalısın. “Acaba bu oturum ID’si tahmin edilebilir mi?” ya da “Şu parola sıfırlama linki ne kadar süre geçerli?” gibi soruları sormak, büyük fark yaratır.
Sıradaki adımda güvenlik mimarisine bir göz atacağız. Yani, güvenli bir web uygulaması tasarlarken nelere dikkat ederiz? Yakında oraya da geçeceğiz. Ancak önce, Broken Authentication konusunu iyice sindirdiğinden emin ol. 😊