# 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}}