🖥️
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 Access Control Nedir?
  • Yöntemler
  • Admin Panelinde Yetki Kontrolü
  • Cookie ile Yetki Kontrolü
  • Gönderilen Verilerde Yetki Yükseltme
  • Parametre olarak Gönderilen Kullanıcı
  • Parametre Leak
  • IDOR
  • URL-Tabanlı Kontrol
  • Method Tabanlı Koruma
  • Çok Adımlı İşlemlerde Doğrulama
  • Referer Header ile Doğrulama
  • Önlemler
  • Kaynaklar

Was this helpful?

  1. Web Application Pentesting

Broken Access Control

PreviousBroken AuthenticationNextBusiness Logic

Last updated 19 days ago

Was this helpful?

Broken Access Control Nedir?

  • Erişim kontrolü, eylemleri gerçekleştirmek veya kaynaklara erişmek için kimin yetkili olduğuna ilişkin kısıtlamaların uygulanmasıdır.

  • Kimlik doğrulama, kullanıcının söylediği kişi olduğunu onaylar.

  • Oturum yönetimi, aynı kullanıcı tarafından hangi HTTP isteklerinin yapıldığını tanımlar.

  • Erişim kontrolü, kullanıcının gerçekleştirmeye çalıştığı eylemi gerçekleştirmesine izin verilip verilmediğini belirler.

  • Bozuk erişim kontrolleri yaygındır ve genellikle kritik bir güvenlik açığı oluşturur. Erişim kontrolü tasarım kararlarının insanlar tarafından verilmesi gerekir, bu nedenle hata potansiyeli yüksektir.

Yöntemler

Admin Panelinde Yetki Kontrolü

Bazen admin paneli gibi kritik bölümlerde yetki kontrolü yapılmıyor olabilir. Yetkisiz bir kullanıcı ile bu paneli ziyaret etmeyi deneyebiliriz.

Cookie ile Yetki Kontrolü

Eğer yetkilendirme bir cookie ile yapılıyorsa cookie'yi manipüle ederek yetkimizi yükseltmeyi deneyebiliriz.

Gönderilen Verilerde Yetki Yükseltme

E-mail veya username değiştirme gibi isteklerde yetkimiz bir parametre olarak gönderiliyor olabilir. Bu parametreyi değiştirmeyi deneyebiliriz.

Parametre olarak Gönderilen Kullanıcı

Eğer bir isteğin parametresinde kullanıcı adı veya ID gibi bir değişken gönderiliyorsa bu parametreleri manipüle etmeyi deneyebiliriz.

Parametre Leak

Eğer kullanıcı ID'si tahmin edilemez bir değer ise yine de bu değer uygulamanın bir bölümünde leak oluyor olabilir. Mesela yorum bölümü veya kullanıcının public profilinde bu değer yazılmış olabilir.

IDOR

Eğer kullanıcı ID'si gibi bir parametre düzenli artan bir sıra ile gidiyorsa başka kullanıcıların verilerine erişebiliyor olabiliriz.

İlk bakışta rastgele gibi görünen değerler olsa bile bir Hashing veya Encoding ile şifrelenmiş olabilir.

URL-Tabanlı Kontrol

Eğer erişim kontrolü URL tabanlı yapılıyorsa aşağıdaki header ile bu korumayı atlatabiliriz.

GET /admin -> 403

GET / -> 200
X-Original-URL: /admin

Method Tabanlı Koruma

Bazı durumlarda POST isteği ile gönderdiğimiz bir istek reddiliyor olsa bile aynı isteği GET ile gönderdiğimizde yetki kontrolü yapılmıyor olabilir. Veya tam tersi.

POST /admin -> 401
GET /admin -> 200

Çok Adımlı İşlemlerde Doğrulama

Yetki yükseltme veya parola değiştirme gibi işlemler eğer çok adımlı şekilde yapılıyorsa sadece ilk adımda yetki kontrolü yapılıyor olabilir. Doğrudan son isteği atarak bu koruma atlatılabilir.

Referer Header ile Doğrulama

Referer header isteği attığımız URL'yi gösteren bir başlıktır. Eğer yetki kontrolü bu header ile yapılıyorsa manipüle etmeyi deneyebiliriz.

POST /deleteUser -> 401
Referer: https://example.com/

POST /deleteUser -> 200
Referer: https://example.com/admin

Önlemler

  • Erişim kontrolü için asla tek başına obfuscation'a güvenmeyin.

  • Bir kaynağın herkes tarafından erişilebilir olması amaçlanmadığı sürece, varsayılan olarak erişimi reddedin.

  • Mümkün olan her yerde, erişim kontrollerini uygulamak için uygulama genelinde tek bir mekanizma kullanın.

  • Kod düzeyinde, geliştiricilerin her kaynak için izin verilen erişimi beyan etmesini zorunlu hale getirin ve varsayılan olarak erişimi reddedin.

  • Tasarlandıkları gibi çalıştıklarından emin olmak için erişim kontrollerini kapsamlı bir şekilde denetleyin ve test edin.

Kaynaklar

Portswigger Academy:

🕸️
https://portswigger.net/web-security/access-control