diff --git a/src/pentesting-web/csrf-cross-site-request-forgery.md b/src/pentesting-web/csrf-cross-site-request-forgery.md
index 13f127040..a2e043baa 100644
--- a/src/pentesting-web/csrf-cross-site-request-forgery.md
+++ b/src/pentesting-web/csrf-cross-site-request-forgery.md
@@ -2,21 +2,21 @@
{{#include ../banners/hacktricks-training.md}}
-## Cross-Site Request Forgery (CSRF) verduidelik
+## Cross-Site Request Forgery (CSRF) Verduidelik
-**Cross-Site Request Forgery (CSRF)** is 'n tipe sekuriteitskwesbaarheid wat in webtoepassings voorkom. Dit stel aanvallers in staat om aksies namens onbewuste gebruikers uit te voer deur hul geverifieerde sessies te benut. Die aanval word uitgevoer wanneer 'n gebruiker, wat in 'n slagoffer se platform aangemeld is, 'n kwaadwillige webwerf besoek. Hierdie webwerf aktiveer dan versoeke na die slagoffer se rekening deur metodes soos die uitvoering van JavaScript, indien van vorms, of die verkryging van beelde.
+**Cross-Site Request Forgery (CSRF)** is 'n tipe sekuriteitskwetsbaarheid wat in webtoepassings voorkom. Dit stel aanvallers in staat om aksies namens onbewuste gebruikers uit te voer deur hul geauthentiseerde sessies uit te buit. Die aanval word uitgevoer wanneer 'n gebruiker wat by die slagoffer se platform aangemeld is, 'n kwaadwillige webwerf besoek. Hierdie webwerf stuur dan versoeke na die slagoffer se rekening deur metodes soos die uitvoering van JavaScript, die indiening van forms, of die laai van images.
### Voorvereistes vir 'n CSRF-aanval
-Om 'n CSRF-kwesbaarheid te benut, moet verskeie voorwaardes nagekom word:
+Om 'n CSRF-kwetsbaarheid uit te buit, moet verskeie voorwaardes gevul wees:
-1. **Identifiseer 'n Waardevolle Aksie**: Die aanvaller moet 'n aksie vind wat die moeite werd is om te benut, soos om die gebruiker se wagwoord, e-pos of bevoegdhede te verander.
-2. **Sessiebestuur**: Die gebruiker se sessie moet slegs deur koekies of die HTTP Basic Authentication-koptekst bestuur word, aangesien ander koptekste nie vir hierdie doel gemanipuleer kan word nie.
-3. **Afwesigheid van Onvoorspelbare Parameters**: Die versoek moet nie onvoorspelbare parameters bevat nie, aangesien dit die aanval kan voorkom.
+1. **Identify a Valuable Action**: Die aanvaller moet 'n aksie vind wat die moeite werd is om uit te buit, soos om die gebruiker se wagwoord, e-pos te verander, of om voorregte te verhoog.
+2. **Session Management**: Die gebruiker se sessie moet slegs deur cookies of die HTTP Basic Authentication header bestuur word, aangesien ander headers nie vir hierdie doel gemanipuleer kan word nie.
+3. **Absence of Unpredictable Parameters**: Die versoek moet nie onvoorspelbare parameters bevat nie, aangesien dit die aanval kan voorkom.
-### Vinning Kontrole
+### Vinnige Kontrole
-Jy kan **die versoek in Burp vasvang** en CSRF-beskermings nagaan en om van die blaaier te toets kan jy op **Kopieer as fetch** klik en die versoek nagaan:
+Jy kan die versoek in Burp vasvang en CSRF-beskermings nagaan; om dit vanaf die blaaier te toets kan jy op **Copy as fetch** klik en die versoek nagaan:
","widgetType":"URL"}]
+```
-Hier is hoe aanvallers dit benut:
+- Bypass by switching to GET (no token):
-1. **Verifieer** met hul eie rekening.
-2. **Verkry 'n geldige CSRF-token** uit die globale poel.
-3. **Gebruik hierdie token** in 'n CSRF-aanval teen 'n slagoffer.
+```http
+GET /index.php?module=Home&action=HomeAjax&file=HomeWidgetBlockList&widgetInfoList=[{"widgetId":"https://attacker
","widgetType":"URL"}] HTTP/1.1
+```
-Hierdie kwesbaarheid stel aanvallers in staat om ongeoorloofde versoeke namens die slagoffer te maak, wat die toepassing se **onvoldoende token validasiemechanisme** benut.
+Notes:
+- Hierdie patroon kom dikwels saam met reflected XSS voor waar responses verkeerdelik as text/html bedien word in plaas van application/json.
+- Om dit met XSS te kombineer verlaag die uitbuitingshindernisse aansienlik omdat jy 'n enkele GET-skakel kan lewer wat beide die kwesbare kodepaadjie aktiveer en CSRF kontroles heeltemal omseil.
-### Metode omseiling
+### Geen token
-As die versoek 'n "**vreemde**" **metode** gebruik, kontroleer of die **metode** **oorskry funksionaliteit** werk. Byvoorbeeld, as dit **'n PUT** metode gebruik, kan jy probeer om **'n POST** metode te **gebruik** en **stuur**: _https://example.com/my/dear/api/val/num?**\_method=PUT**_
+Aansoeke mag 'n meganisme implementeer om tokens te valideer wanneer dit teenwoordig is. 'n Kwesbaarheid ontstaan egter as die validasie heeltemal oorgeslaan word wanneer die token afwesig is. Aanvallers kan dit uitbuit deur die parameter wat die token dra te verwyder, nie net die waarde daarvan nie. Dit laat hulle toe om die validasieproses te omseil en effektief 'n Cross-Site Request Forgery (CSRF) aanval uit te voer.
-Dit kan ook werk deur die **\_method parameter binne 'n POST versoek** te stuur of deur die **koptekste** te gebruik:
+### CSRF token is nie aan die gebruiker se sessie gekoppel nie
-- _X-HTTP-Method_
-- _X-HTTP-Method-Override_
-- _X-Method-Override_
+Aansoeke wat CSRF tokens nie aan gebruiker sessies koppel nie, vorm 'n beduidende veiligheidsrisiko. Sulke stelsels verifieer tokens teen 'n globale pool eerder as om te verseker dat elke token aan die inisierende sessie gebind is.
-### Aangepaste koptekst token omseiling
+Hoe aanvallers dit uitbuit:
-As die versoek 'n **aangepaste koptekst** met 'n **token** aan die versoek voeg as **CSRF beskermingsmetode**, dan:
+1. Authenticate met hul eie rekening.
+2. Verkry 'n geldige CSRF token uit die globale pool.
+3. Gebruik hierdie token in 'n CSRF aanval teen 'n slagoffer.
-- Toets die versoek sonder die **Aangepaste Token en ook koptekst.**
-- Toets die versoek met presies **dieselfde lengte maar 'n ander token**.
+Hierdie kwesbaarheid maak dit moontlik vir aanvallers om ongemagtigde versoeke namens die slagoffer te maak deur die toepassing se ondoeltreffende token-validasiemeganisme uit te buit.
-### CSRF-token word deur 'n koekie geverifieer
+### Metode bypass
-Toepassings mag CSRF-beskerming implementeer deur die token in beide 'n koekie en 'n versoekparameter te dupliceer of deur 'n CSRF-koekie in te stel en te verifieer of die token wat in die agtergrond gestuur word ooreenstem met die koekie. Die toepassing valideer versoeke deur te kontroleer of die token in die versoekparameter ooreenstem met die waarde in die koekie.
+As die versoek 'n "wierd" method gebruik, kyk of die method override-funksionaliteit werk. Byvoorbeeld, as dit 'n PUT method gebruik, kan jy probeer om 'n POST te gebruik en te stuur: https://example.com/my/dear/api/val/num?_method=PUT
-Hierdie metode is egter kwesbaar vir CSRF-aanvalle as die webwerf gebreke het wat 'n aanvaller in staat stel om 'n CSRF-koekie in die slagoffer se blaaier in te stel, soos 'n CRLF-kwesbaarheid. Die aanvaller kan dit benut deur 'n misleidende beeld te laai wat die koekie stel, gevolg deur die inisiëring van die CSRF-aanval.
+Dit kan ook werk deur die _method parameter binne 'n POST versoek te stuur of deur die headers te gebruik:
-Hieronder is 'n voorbeeld van hoe 'n aanval gestruktureer kan word:
+- X-HTTP-Method
+- X-HTTP-Method-Override
+- X-Method-Override
+
+### Custom header token bypass
+
+As die versoek 'n custom header met 'n token byvoeg as CSRF protection-metode, dan:
+
+- Toets die versoek sonder die Customized Token en ook sonder die header.
+- Toets die versoek met presies dieselfde lengte maar 'n ander token.
+
+### CSRF token is verified by a cookie
+
+Aansoeke kan CSRF beskerming implementeer deur die token in beide 'n cookie en 'n versoekparameter te dupliseer of deur 'n CSRF cookie te stel en te verifieer of die token wat in die backend gestuur word ooreenstem met die cookie. Die toepassing valideer versoeke deur te kontroleer of die token in die versoekparameter ooreenstem met die waarde in die cookie.
+
+Hierdie metode is egter vatbaar vir CSRF-aanvalle as die webwerf foutspasies het wat 'n aanvaller toelaat om 'n CSRF cookie in die slagoffer se blaaier te stel, soos 'n CRLF-kwesbaarheid. Die aanvaller kan dit uitbuit deur 'n misleidende beeld te laai wat die cookie stel, gevolg deur die inisiering van die CSRF-aanval.
+
+Below is an example of how an attack could be structured:
```html
@@ -103,19 +131,19 @@ onerror="document.forms[0].submit();" />
```
> [!TIP]
-> Let daarop dat as die **csrf token verband hou met die sessie koekie, sal hierdie aanval nie werk nie** omdat jy die slagoffer jou sessie moet stel, en daarom sal jy jouself aanval.
+> Let wel: as die **csrf token verband hou met die session cookie sal hierdie attack nie werk nie** omdat jy die slagoffer se session aan jou moet koppel, en dus jouself sal aanval.
-### Inhouds tipe verandering
+### Content-Type change
-Volgens [**hierdie**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests), om **preflight** versoeke met die **POST** metode te **vermy**, is hierdie die toegelate Inhouds tipe waardes:
+Volgens [**this**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests), om **preflight** versoeke met die **POST**-metode te **voorkom** is die volgende Content-Type-waardes toegelaat:
- **`application/x-www-form-urlencoded`**
- **`multipart/form-data`**
- **`text/plain`**
-Let egter daarop dat die **bediener se logika kan verskil** afhangende van die **Inhouds tipe** wat gebruik word, so jy moet die genoemde waardes en ander soos **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._ probeer.
+However, note that the **bedienerlogika kan verskil** depending on the **Content-Type** used so you should try the values mentioned and others like **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._
-Voorbeeld (van [hier](https://brycec.me/posts/corctf_2021_challenges)) van die stuur van JSON data as text/plain:
+Example (from [here](https://brycec.me/posts/corctf_2021_challenges)) of sending JSON data as text/plain:
```html