Broken Authentication

Broken Authentication Nedir?

Authentication, bir kullanıcının kimliğini doğrulama işlemidir. Kimlik doğrulama mekanizmalarındaki çoğu güvenlik açığı iki yoldan biriyle ortaya çıkar.

  • Kimlik doğrulama mekanizmaları brute-force saldırılarına karşı yeterince koruma sağlayamadığı için zayıftır.

  • Uygulamadaki mantık hataları veya kötü kodlama, kimlik doğrulama mekanizmalarının bir saldırgan tarafından tamamen atlanmasına izin verir. Buna "Broken Authentication" denir.

Yöntemler

Hydra Brute-Force

hydra -l admin -P /usr/share/wordlists/rockyou.txt example.com http-post-form "/login.php:username=^USER^&password=^PASS^:invalid credentials" -V -t 64

Username Enumeration via Length

Eğer doğru ve yanlış kullanıcı adı girişlerinde farklı yanıtlar dönüyorsa kullanıcı adları listelenebilir. Bu bir zafiyettir.

Username Enumeration via Delay

Parolaya çok uzun bir değer girerek kullanıcı adlarını listelemeyi deneyebiliriz. Eğer bir yanıt diğerlerinden daha geç geliyorsa o kullanıcı adı var olabilir.

Username Enumeration via Lock

Eğer başarısız girişler sonucunda hesap kilitlendi yanıtı alıyorsak fakat var olmayan hesaplarda bu yanıtı almıyorsak bu yöntemle kullanıcıları listeleyebiliriz.

IP Tabanlı Brute-Force Protection

Eğer brute-force koruması IP üzerinden yapıyorsak aşağıdaki başlıklar ile bu koruma atlatılabilir.

X-Forwarded-For: 127.0.0.1
X-Originating-IP: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-Client-IP: 127.0.0.1

Doğru Giriş ile Brute-Force Protection Bypass

Eğer doğru giriş yaptığımızda brute-force sayacı sıfırlanıyorsa her brute-force denemesinin arasına doğru girişler koyabiliriz.

Çoklu Parola ile Brute-Force Protection Bypass

Eğer login isteğinde json veri gönderiliyorsa ve parolanın bir liste olarak gönderilmesine izin veriliyorsa tek bir istek ile brute-force yapabiliriz.

Client-Side 2FA

Eğer 2FA kontrolü client-side yapılıyorsa sadece yönlendirme ile bu koruma sağlanıyor olabilir. Kullanıcının profil sayfasını 2FA girmeden ziyaret etmeyi deneyebiliriz.

Brute-Force 2FA

Eğer 2FA kodunda brute-force koruması yok ise ve bu kod kısa ise brute-force deneyebiliriz.

Parametre Kontrolü

Parola sıfırlama isteğindeki parametreleri kontrol edebiliriz.

Header ile Poisoning

Eğer parola sıfırlama linki aşağıdaki header kullanılarak üretiliyorsa, kurban linke tıkladığında istek bizim sunucumuza gönderilebilir.

X-Forwarded-Host: <COLLABORATOR>

Parola Sıfırlama ile Brute-Force

Eğer parola sıfırlama isteğinde username parametresi varsa diğer kullanıcılar için brute-force denemesi yapabiliriz.

Eğer kullanıcının session çerezi base64 gibi bir şifreleme kullanıyorsa bu çerez üzerinden brute-force denemeleri yapabiliriz. Login panelinde koruma olsa bile çerez için bir koruma yapılmamış olabilir.

Kaynaklar

Portswigger Academy: https://portswigger.net/web-security/authentication

Last updated