Username Enumeration

Username Enumeration Zafiyeti

  • Username Enumeration zafiyeti, uygulamanın kullanıcı adı doğrulama işlemi sırasında, var olan ve olmayan kullanıcı adlarına farklı tepkiler vererek saldırganlara kullanıcı adlarını tahmin etme imkânı tanıdığı bir güvenlik açığıdır.

  • Eğer rate-limit yoksa zafiyet daha etkili olur.

  • E-posta veya username için zafiyet denenebilir.

Olabileceği Alanlar

  • Login isteği

  • Register isteği

  • Parola sıfırlama isteği

  • API'ler

  • Email onaylama

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.

POST /login HTTP/2

username=john&password=pass123 -> Invalid username or password

POST /login HTTP/2

username=randomusername123123&password=pass123 -> Invalid username 

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.

POST /login HTTP/2

username=john&password=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-> 2000ms gecikme

POST /login HTTP/2

username=randomusername&password=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-> 20ms gecikme

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.

LOGIN 1 john -> Invalid username or password
LOGIN 2 john -> Invalid username or password
LOGIN 3 john -> Invalid username or password
LOGIN 4 john -> Account is locked

LOGIN 1 randomuser -> Invalid username or password
LOGIN 2 randomuser -> Invalid username or password
LOGIN 3 randomuser -> Invalid username or password
LOGIN 4 randomuser -> Invalid username or password

Kaynaklar

Last updated