- Katılım
- 2 Ocak 2026
- Mesajlar
- 19
- Tepkime puanı
- 22
- Puan
- 3
BAC - Broken Access Control
Sunucu tarafında yeterli yetkilendirme/erişim kontrolü yapılmaması sonucu yetkisiz erişim veya işlem yapılabilmesine sebep olan güvenlik açığı sınıfı.Metodoloji
Kimin hangi kaynağa veya işleve erişebileceğini belirleyen sunucu tarafı kontrollerinin eksik veya hatalı uygulanması. Client-side sadece görünürlük engellemeleri güvenlik sağlamaz — tüm hassas kontroller sunucuda olmalıdır.HTTP metodu, parametre veya header değişikliği ile yetki atlatma denenebilir → GET, POST, PUT, DELETE vb. Ayrıca role/owner kontrollerinin nesne seviyesinde (object-level) doğrulandığından emin olun.
Örnek akış: kullanıcı hesabı ile giriş yapılır → belirli bir kaynağa erişim istenir → sunucu owner/role kontrolü yapıyor mu gözlemlenir.
Örnekler
Admin-only endpoint'ine normal kullanıcı token'ı ile istek gönderildiğinde işlem gerçekleşiyor (sunucu role check yapmıyor)./invoices/1000/download gibi doğrudan dosya path'leri kimlik doğrulama veya owner kontrolü olmadan sunuluyor.
UI'da gizlenen admin butonu client-side ile etkinleştirilebiliyor ve sunucu bunu kontrol etmiyor.
Nerede Bulunur?
URL / Path / Query parametrelerinde → /orders/{id}, ?user_id=AJAX / API endpointlerinde → /api/v1/admin/*, /api/v1/invoices/*
Dosya depolama / doğrudan erişim yollarında → /uploads/... veya S3 benzeri path'lerde
Client-side feature flags veya role parametrelerinde → is_admin, debug, role gibi parametreler
Test Adımları
Keşfet: Proxy ve tarayıcı devtools ile tüm endpoint'leri ve istekleri topla.Roller/hesaplar: En az iki hesap oluştur (normal user + ikinci user). Mümkünse ayrı privilege rollerini de test et.
Parametre, metod ve header manipülasyonu: ID, owner, role parametrelerini değiştir; GET↔POST gibi metod değişiklikleri dene.
Nesne seviyesinde doğrulama: Her obje isteğinde server-side owner/role kontrolü yapılıyor mu kontrol et.
Metot Manipülasyonu (Örnek Senaryo)
Senaryo:Kritik bir silme işlemi sadece POST ile yapılmaya izin verirken, DELETE metodunu kontrol etmiyor.// Başarısız İstek (Yetki Hatası)
GET /admin/delete?user=1 (403 Forbidden)
// Başarılı PoC (Metot Atlatma)
DELETE /admin/delete?user=1
Sunucu tarafı yetki kontrolü (auth/role check) eksikse, metod değişikliği ile kısıtlama atlanır.