top of page

Kimlik Doğrulama Zafiyetlerine Giriş: Modern Web Uygulamalarında Görülen Yaygın Hatalar

Yazarın fotoğrafı: Songül ÖZÜGÜRLER
Songül ÖZÜGÜRLER
28 Nis
3 dakikada okunur

Portswigger : Kimlik Doğrulama Zafiyetlerine Giriş: Modern Web Uygulamalarında Görülen Yaygın Hatalar

Kimlik Doğrulama Zafiyetlerine Giriş: Modern Web Uygulamalarında Görülen Yaygın Hatalar

Web uygulamalarının güvenliğinde kimlik doğrulama (authentication) kritik bir rol oynar. İnternete bağlı herkesin erişebileceği sistemlerde, kullanıcıların gerçekten iddia ettiği kişi olup olmadığını doğrulamak büyük önem taşır.

Kimlik Doğrulama Türleri

Kimlik doğrulama genellikle üç temel faktöre dayanır:

Bilgi (Knowledge): Parola veya güvenlik sorusu gibi kullanıcının bildiği bilgiler.

Sahiplik (Possession): Telefon, güvenlik anahtarı gibi fiziksel cihazlar.

Öz/İnharens (Inherence): Parmak izi, yüz tanıma veya davranışsal kalıplar gibi kullanıcıya özgü veriler.

Modern sistemler, bu faktörlerden bir veya birkaçını doğrulayarak kullanıcıyı tanımlar.

Authentication vs Authorization

Bu iki kavram sıkça karıştırılıyor:

Authentication: Kullanıcının kim olduğunu doğrular.

Authorization: Doğrulanan kullanıcının hangi işlemleri yapmaya yetkili olduğunu belirler.

Yani önce “Bu kişi gerçekten Carlos mu?” sorusu yanıtlanır, ardından “Carlos ne yapabilir?” aşamasına geçilir.

Kimlik Doğrulama Zafiyetleri Nasıl Ortaya Çıkar?

Kimlik doğrulama açıklarının büyük çoğunluğu iki ana nedene dayanır:

Zayıf korumalar: Brute-force (tahmin) saldırılarına karşı yetersiz önlemler.

Mantık hataları / kötü implementasyon: Saldırganın kimlik doğrulamayı tamamen atlamasına yol açan “broken authentication” durumları.

Kimlik doğrulama süreçlerinde yapılan küçük bir hata bile, sistemin tamamen ele geçirilmesine kadar gidebilir.

Zafiyetlerin Etkisi Neden Bu Kadar Büyük?

Bir saldırgan herhangi bir hesabı ele geçirdiğinde:

Hesabın tüm verilerine erişebilir.

Kullanıcının tüm yetkilerini kullanabilir.

Eğer hesap yüksek yetkiliyse (ör. admin), tüm uygulamayı ele geçirebilir.

Bu nedenle en düşük yetkili hesap bile kritik bir saldırı yüzeyi oluşturabilir.

Parola Tabanlı Sistemlerde Görülen Yaygın Açıklar

Parolaya dayalı giriş mekanizmalarında güvenlik, kullanıcı adının ve parolanın gizli kalmasına bağlıdır. Bu bilgiler ele geçirildiğinde veya tahmin edildiğinde sistem tamamen tehlikeye girer.

Brute-Force Saldırıları

Brute‑force, saldırganın otomatik araçlarla binlerce kullanıcı adı/parola denemesi yapmasıdır. Bu saldırılar:

Wordlist’lerle hızlandırılır,

Kamuya açık bilgilerle daha “akıllı” hâle getirilebilir.

Yeterli bruteforce koruması olmayan sistemler dakikalar içinde ele geçirilebilir.

Kullanıcı Adı Tahmini (Username Enumeration)

Saldırganlar, sitenin verdiği farklı tepkilerden kullanıcı adının geçerli olup olmadığını anlayabilir. Örneğin:

“Bu kullanıcı adı yok” vs. “Parola yanlış” gibi farklı hata mesajları

Kayıt formunda “Bu kullanıcı adı alınmış” uyarısı

Farklı HTTP durum kodları

Bu bilgiler saldırganın işini inanılmaz derecede kolaylaştırır.

Parola Tahmini

Sitelerin parola politikaları çoğu zaman teoride güçlüdür; fakat kullanıcı davranışları saldırganların işini kolaylaştırır.

Örnek tahmin edilebilir kalıplar:

“mypassword” → Mypassword1!, Myp4$$w0rd

Parola yenileme zorunluluğu: Mypassword1! → Mypassword1? → Mypassword2!

Saldırganlar bu insan davranışlarını hesaba katarak çok daha etkili brute-force saldırıları yapabilir.

Lab: Username enumeration via different responses

Bu laboratuvar, kullanıcı adı ve password brute force saldırılarına karşı savunmasızdır. Tahmin edilebilir bir kullanıcı adı ve parolaya sahip bir hesaba sahiptir; bunlar aşağıdaki kelime listelerinde bulunabilir:

labı başlatıyorum karşıma bir blog çıkıyor .

Login sayfasına ilk olarak manuel bir istek gönderdim.

Kimlik Doğrulama Zafiyetlerine Giriş: Modern Web Uygulamalarında Görülen Yaygın Hatalar

/login endpoint’ine yaptığım POST isteğinde username=abc&password=abc gönderdiğimde uygulamanın “Invalid username” hatası döndürdüğünü gördüm.

Kimlik Doğrulama Zafiyetlerine Giriş: Modern Web Uygulamalarında Görülen Yaygın Hatalar

Bu da bana, uygulamanın önce username doğrulaması yaptığını , username geçersizse password kontrolüne hiç geçmediğini gösterdi. Ardından, bu davranışı doğrulamak için Intruder üzerinden username wordlist’iyle brute-force başlattım.

Kimlik Doğrulama Zafiyetlerine Giriş: Modern Web Uygulamalarında Görülen Yaygın Hatalar

Bu aşamada /login adresine gönderdiğim istekte username parametresini wordlist’ten çektim ( username=albuquerque gibi), password parametresini ise sabit bırakarak farklı response davranışlarını izledim ve böylece valid username’i tespit ettim yani invalid username tespit etmedi response da.

Valid username’i bulduktan sonra bu kez PortSwigger’ın verdiği password wordlist’ini kullanarak brute-force işlemine geçtim.

Kimlik Doğrulama Zafiyetlerine Giriş: Modern Web Uygulamalarında Görülen Yaygın Hatalar

/login endpoint’ine bu sefer username’i sabit bırakarak ( username=albuquerque ), sadece password parametresini wordlist’ten gelecek şekilde Intruder ile istek gönderdim. Wordlist’teki çoğu denemede uygulama “Incorrect password” hatası döndürdü. Ancak password=thunder denemesinde hata mesajı gelmedi ve farklı bir response döndüğünü gördüm.

Kimlik Doğrulama Zafiyetlerine Giriş: Modern Web Uygulamalarında Görülen Yaygın Hatalar

Bu da şifrenin doğru olduğunu gösteriyordu. Ardından albuquerque : thunder bilgileriyle giriş yaparak kullanıcı paneline ulaştım ve labı başarıyla tamamladım.

Kimlik Doğrulama Zafiyetlerine Giriş: Modern Web Uygulamalarında Görülen Yaygın Hatalar
 
 
bottom of page