🖥️
Siber Güvenlik Notları
  • WHOAMI
    • 👨‍💻Who Am I?
  • 🔭Information Gathering
    • Pentest VM Setup
    • Passive Information Gathering
    • Subdomain Enumeration
    • Host Discovery
    • Port Scanning
    • Email Enumeration
    • Leaked Passwords
    • Zafiyet Araştırma
  • 🪟Windows Pentesting
    • Windows Privilege Escalation
    • Windows Persistence
    • Windows Lateral Movement
    • AV Evasion
  • 🐧Linux Pentesting
    • Linux Privilege Escalation
    • Linux Persistence
    • Linux Lateral Movement
  • 🕸️Web Application Pentesting
    • Web Pentest Checklist
    • SQL Injection
    • NoSQL Injection
    • OS Command Injection
    • XXE Injection
    • SSTI
    • XSS
    • CSRF
    • SSRF
    • LFI/RFI
    • Insecure Deserialization
    • CORS Misconfiguration
    • Directory Traversal
    • File Upload
    • Broken Authentication
    • Broken Access Control
    • Business Logic
    • Race Conditions
    • Web Cache Deception
    • AWS Testing
    • Web Cache Poisoning
    • Clickjacking
    • API Testing
    • Broken Link Hijacking
    • HTTP Request Smuggling
    • LLM
    • HTTP Host Header Attack
    • OAuth Zafiyetleri
    • GraphQL API
    • HTTP Parameter Pollution
    • Configuration and Deployment Management Testing
    • Information Disclosure
    • Prototype pollution
    • JWT
  • 🖲️Network Service Pentesting
    • 📘Active Directory Services
      • Bleeding Edge Vulns
      • Misconfigs
      • Domain Trust
      • DNS (53)
      • Kerberos (88)
      • LDAP (389,636)
      • RPC WMI (135)
      • SMB (445)
      • WinRM - 5985
    • 📂FTP - 21
    • 🔐SSH - 22
    • 🤣Telnet - 23
    • SMTP - 25
    • TFTP - 69 UDP
    • HTTP - 80,443
      • Apache
      • Joomla
      • Drupal
      • Wordpress
      • WEBDAV
      • PHP
      • Laravel
    • IMAP/POP3 - 110,143,993,995
    • SNMP - 161
    • Rservices - 512
    • IPMI - 623
    • Rsync - 873
    • MSSQL - 1433
    • Oracle TNS - 1521
    • NFS - 2049
    • Docker
    • Grafana - 3000
    • MySQL - 3306
    • RDP - 3389
    • Postgresql - 5432
    • Redis - 6379
    • JDWP - 8000
    • MongoDB - 27017
  • 🕸️Network Pentesting
    • ARP Poisoning
  • 📞Android Pentesting
    • Android Derleme Süreci
    • Reversing
    • Rooting
    • Burp Suite Sertifikası
    • SSL Pinning Bypass
    • Patching
    • MobSF Kurulumu
    • Flutter Pentesting
  • 📰Teori
    • Güvenlik Ürünleri
    • OSI
    • Security Principles
  • Diger
    • Hacking Gadgets
      • Wifi Pineapple
      • Pwnagotchi
    • Stego
    • Buffer Overflow
    • Phishing
    • Nessus
    • DDOS Attacks
    • MSFConsole
  • ⏪Reverse
    • GCC Reverse
    • Python Reverse
    • Flare VM
    • Remnux
  • 🛜Wireless Pentesting
    • Wireless Pentest
    • Wireless V2
Powered by GitBook
On this page
  • Broken Authentication Nedir?
  • Yöntemler
  • Hydra Brute-Force
  • Username Enumeration via Length
  • Username Enumeration via Delay
  • Username Enumeration via Lock
  • IP Tabanlı Brute-Force Protection
  • Doğru Giriş ile Brute-Force Protection Bypass
  • Çoklu Parola ile Brute-Force Protection Bypass
  • Client-Side 2FA
  • Brute-Force 2FA
  • Parametre Kontrolü
  • Header ile Poisoning
  • Parola Sıfırlama ile Brute-Force
  • Brute-Force Cookie
  • Şifrelenmiş Bir Kanal Üzerinden Taşınan Kimlik Bilgilerinin Test Edilmesi
  • Varsayılan Credential Testi
  • Zayıf Parolalar
  • Captcha Mekanizması
  • Önlemler
  • Kaynaklar

Was this helpful?

  1. Web Application Pentesting

Broken Authentication

PreviousFile UploadNextBroken Access Control

Last updated 21 days ago

Was this helpful?

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.

Yöntemler

Hydra Brute-Force

# Post Auth
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

# Basic Auth
hydra -L /usr/share/seclists/Usernames/top-usernames-shortlist.txt  -P /usr/share/seclists/Passwords/2023-200_most_used_passwords.txt 94.237.62.111 http-get / -s 33607

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.

Brute-Force Cookie

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.

Şifrelenmiş Bir Kanal Üzerinden Taşınan Kimlik Bilgilerinin Test Edilmesi

Aşağıdaki gibi hassas veriler içeren hiçbir isteğin HTTP tarifiği üzerinden gönderilmemesi gerekir.

  • Parolalar veya şifreler

  • Body kısmındaki Tokenler

  • Çerezlerin içinde Hesap veya şifre sıfırlama kodları

Sunucu bir session tokeni için çerez bilgisi döndürürse, istemcinin çerezi daha sonra şifrelenmemiş kanallar üzerinden ifşa etmesini önlemek için çerez Secure flag de içermelidir.

Varsayılan Credential Testi

Eğer uygulama giriş paneli içeriyorsa varsayılan kullanıcı bilgileri ile giriş yapmayı deneyebiliriz. Ayrıca aşağıdaki gibi çok kullanılar bilgileri deneyebiliriz.

creds search mysql

+---------------------+-------------------+----------+
| Product             |      username     | password |
+---------------------+-------------------+----------+
| mysql               | admin@example.com |  admin   |
| mysql               |        root       | <blank>  |
| mysql (ssh)         |        root       |   root   |
| mysql               |      superdba     |  admin   |
| scrutinizer (mysql) |    scrutremote    |  admin   |
+---------------------+-------------------+----------+

Zayıf Parolalar

admin:password
admin:admin
root:root
root:password
admin:admin1
admin:password1
root:password1

Captcha Mekanizması

  • Challange aritmetik veya tahmin edilebilir olmamalı.

  • HTTP Response code ile kontrol yapılmamalı.

  • Sunucu tarafı mantığı varsayılan olarak başarılı bir çözüme sahiptir.

  • CAPTCHA meydan okuma sonucu hiçbir zaman sunucu tarafında doğrulanmaz.

  • CAPTCHA giriş alanı veya parametresi manuel olarak işlenir ve yanlış bir şekilde doğrulanır veya kaçar.

  • CAPTCHA'yı çözmeden istek göndermeyi deneyin.

  • Yanlış Captcha ile göndermeyi deneyin.

  • Captcha değeri client-side tutuluyor olabilir.

  • Zaten kullanılmış bir kodu deneyin.

  • Cookie olmadan isteği gönderin belki cookie olmadığında kontrol edilmiyordur.

  • Çok adımlı captca varsa direkt son adımı göndermeyi deneyin.

  • Belki başka endpointte captcha koruması yoktur. (Örneğin aynı isteğin mobil apisi)

Önlemler

  • Giriş bilgileri her zaman https üzerinden gönderilmeli.

  • Giriş bilgileri hiçbir zaman get parametreleri ile gönderilmemeli.

  • Güçlü bir parola politikası uygulayın.

  • Username enumeration zafiyetini engellemek için yanlış girişlerde her zaman aynı yanıtın döndüğüne emin olun.

  • Brute-force saldırılarını engellemek için IP tabanlı rate-limit veya captcha koruması eklenmeli.

  • Daha güçlü bir giriş için 2FA mekanizması ekleyin.

Kaynaklar

🕸️
https://owasp.org/www-project-web-security-testing-guide/stable/4-Web_Application_Security_Testing/04-Authentication_Testing/
https://portswigger.net/web-security/authentication