Reset/Forgotten Password Bypass
Reading time: 7 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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
- HackerOne Report 272379
- Članak o Curčenju Tokena za Resetovanje Lozinke
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
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://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
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
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
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:
- Koraci za ublažavanje:
- Koristiti GUID verziju 4 za nasumičnost ili implementirati dodatne bezbednosne mere za druge verzije.
- Alati: Koristiti 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
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
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.