Portswigger Authentication vulnerabilities 46 of 55
Portswigger Authentication vulnerabilities Kullanıcı parolalarını değiştirme
Genelde bir şifreni değiştirmek istediğinde, önce mevcut şifreni girersin, sonra da yeni şifreni iki kez yazarsın. Aslında bu sayfaların çalışma mantığı, normal bir login sayfasıyla tamamen aynı: kullanıcı adı ve mevcut şifre doğru mu diye kontrol ediyor. Bu yüzden, login sayfalarında gördüğümüz birçok zafiyet burada da karşımıza çıkabiliyor.
Parola değiştirme özelliği, saldırganın bu sayfaya kurbanın hesabına giriş yapmadan doğrudan erişebilmesine izin veriyorsa daha da tehlikeli hale geliyor. Mesela bazı uygulamalarda kullanıcı adı gizli bir alan (hidden field) olarak formda yer alıyor. Bir saldırgan bu değeri kolayca düzenleyip istediği kullanıcıyı hedefleyebiliyor. Bu da kullanıcı adı enumerasyonuna ve hatta parola brute‑force saldırılarına kapı açıyor.
Lab: Password brute-force via password change
Bu labdaki parola değiştirme özelliği brute‑force saldırılarına karşı zayıf. Labı çözmek için verilen aday parola listesini kullanarak Carlos’un hesabına brute‑force yapman ve “My account” sayfasına erişmen gerekiyor.
giriş bilgileri: wiener:peter hedef kullanıcı: carlos
Önce kendi hesabımla giriş yaptım ve password change kısmını biraz kurcaladım. Şunu fark ettim:
current-password yanlış + new password’ler farklı → “Current password is incorrect”
current-password yanlış + new password’ler aynı →hesap kilitleniyor
current-password doğru + new password’ler farklı → “New passwords do not match”

Buradaki en kritik nokta:Buradaki en kritik nokta: New passwords do not match” sadece current password doğruyken geliyor. Password change isteğini Burp Intruder’a gönderdim. username kısmını carlos yaptım. current-password kısmına payload pozisyonu koydum.

Yeni şifreleri özellikle farklı bıraktım ki doğru current password geldiğinde “New passwords do not match” mesajı gelsin. Payload olarak Carlos’un şifre listesini ekledim. Grep-match’e de şu kelimeyi koydum:

New passwords do not match
Sonra saldırıyı başlattım.
Intruder sonuçlarında sadece bir istek bu mesajı içeriyordu. O da Carlos’un doğru şifresi.
Benim çıkan şifre: 121212

Bu şekilde direkt Carlos’un hesabına giriş yaptım ve lab çözüldü.
Kendi Kimlik Doğrulama Mekanizmalarınızı Güvende Tutmak
Web güvenliği çalışırken en sık gördüğüm şeylerden biri, sitelerin aslında doğru tasarlanmış görünen ama ufak mantık hataları yüzünden tamamen kırılabilir hale gelen kimlik doğrulama mekanizmaları. Bu yüzden kendi uygulamalarımızda dikkat etmemiz gereken bazı temel noktaları şöyle özetlemek istedim.
Kullanıcı Bilgilerini Ciddiye Alın
En sağlam login mekanizması bile, kullanıcı adı–şifre ikilisi yanlış bir yerde açığa çıkıyorsa hiçbir işe yaramaz.
Giriş verilerini asla HTTPS dışında göndermeyin.
HTTP isteklerini otomatik olarak HTTPS’e yönlendirin.
Sitede kullanıcı adı veya e-posta bilgileri istemeden sızıyor mu? Profil sayfaları, HTTP header’ları veya error mesajlarında görünmemesine dikkat edin.
Güvenliği Kullanıcıya Bırakmayın
Kullanıcılar, işleri kolaylaştırmak için şifrelerini hep tahmin edilebilir bir kalıba oturtuyor. Bu yüzden:
Sadece uzunluk/özel karakter zorunluluğu koymak yerine, gerçek zamanlı çalışan şifre güçlendirici kullanmak çok daha iyi sonuç veriyor.
Örneğin Dropbox’ın geliştirdiği zxcvbn kütüphanesi bu iş için harika bir seçenek.
Kullanıcı Adı Enum Edilemesin
Bir kullanıcının var olup olmadığını belli eden hata mesajları, saldırganın işini inanılmaz kolaylaştırır. Bunu önlemek için:
Hatalar her zaman aynı mesajı dönmeli.
HTTP status kodu her senaryoda aynı olmalı.
Yanıt süreleri birbirinden ayırt edilemeyecek kadar benzer olmalı.
Brute‑Force’u Zorlaştırın
Brute‑force yapmak düşündüğünüzden daha kolay. O yüzden bunu zorlaştıracak önlemler almak şart:
IP bazlı rate limit koyun.
IP spoofing’i zorlaştıracak ek kontroller ekleyin.
Belirli sayıda denemeden sonra kullanıcıya CAPTCHA gösterin.
Bunlar tamamen çözüm değil, ama saldırganı yıldırmak için ideal.
Doğrulama Mantığını İyi Test Edin
PortSwigger lablarında da sıkça gördüğümüz gibi, küçük mantık hataları tüm sistemi çökertiyor. Bu yüzden:
Tüm doğrulama ve validasyon kontrollerinizi defalarca gözden geçirin.
Atlanabilir bir kontrol, aslında hiç kontrol yok demektir.
Sadece Login Sayfasına Odaklanmayın
Unutmayın: Parola değiştirme, parola sıfırlama, kayıt olma, oturum açık tutma… Bunların hepsi saldırı yüzeyidir.
Hatta çoğu saldırı, şifremi unuttum veya şifre değişikliği gibi “ikincil” noktalardan geliyor.
Gerçek Bir MFA Kullanın
MFA her site için mecburi olmayabilir ama gerçekten güçlüdür. Birkaç önemli nokta:
Aynı faktörün iki kere doğrulanması MFA değildir.
E‑posta kodu → Tek faktörün uzatılmış hali.
SMS → İki faktör gibi görünür ama SIM swap yüzünden riskli.
En güvenlisi: Doğrulama kodunu üreten özel uygulamalar veya cihazlar.
Ve tabii ki MFA kontrol mantığının da bypass edilemeyecek şekilde tasarlanması gerekiyor.
Bu maddelerin hepsi aslında aynı yere çıkıyor: Kimlik doğrulama tek bir noktadan ibaret değil; bütün bir ekosistem. Her aşamasının titizlikle test edilmesi gerekiyor.







