diff --git a/src/pentesting-web/xss-cross-site-scripting/README.md b/src/pentesting-web/xss-cross-site-scripting/README.md
index a096d7673..ae143b9df 100644
--- a/src/pentesting-web/xss-cross-site-scripting/README.md
+++ b/src/pentesting-web/xss-cross-site-scripting/README.md
@@ -4,64 +4,64 @@
## Metodologie
-1. Kontroleer of **enige waarde wat jy beheer** (_parameters_, _pad_, _koptekste_?, _koekies_?) in die HTML **reflekteer** of **gebruik** word deur **JS** kode.
-2. **Vind die konteks** waar dit reflekteer/gebruik word.
-3. As dit **reflekteer**
-1. Kontroleer **watter simbole jy kan gebruik** en berei die payload voor, afhangende daarvan:
-1. In **rauwe HTML**:
-1. Kan jy nuwe HTML-tags skep?
-2. Kan jy gebeurtenisse of eienskappe gebruik wat die `javascript:` protokol ondersteun?
-3. Kan jy beskermings omseil?
-4. Word die HTML-inhoud deur enige kliëntkant JS-enjin (_AngularJS_, _VueJS_, _Mavo_...) geïnterpreteer, jy kan 'n [**Kliëntkant Sjabloon Inspuiting**](../client-side-template-injection-csti.md) misbruik.
-5. As jy nie HTML-tags kan skep wat JS-kode uitvoer nie, kan jy 'n [**Hangende Merk - HTML scriptless inspuiting**](../dangling-markup-html-scriptless-injection/index.html) misbruik?
-2. Binne 'n **HTML-tag**:
-1. Kan jy na die rauwe HTML-konteks ontsnap?
-2. Kan jy nuwe gebeurtenisse/eienskappe skep om JS-kode uit te voer?
-3. Ondersteun die eienskap waar jy vasgevang is JS-uitvoering?
-4. Kan jy beskermings omseil?
-3. Binne **JavaScript-kode**:
-1. Kan jy die ``** etikette van 'n HTML-bladsy, binne 'n `.js`-lêer of binne 'n attribuut wat die **`javascript:`** protokol gebruik:
+In hierdie geval word jou insetsel weerspieël tussen **``** etikette van 'n HTML-bladsy, binne 'n `.js` lêer of binne 'n attribuut wat die **`javascript:`** protokol gebruik:
-- As dit weerspieël word tussen **``** etikette, selfs al is jou invoer binne enige soort aanhalings, kan jy probeer om `` in te voeg en uit hierdie konteks te ontsnap. Dit werk omdat die **blaaier eers die HTML-etikette sal ontleed** en dan die inhoud, daarom sal dit nie opgemerk dat jou ingeslote `` etiket binne die HTML-kode is nie.
-- As dit weerspieël word **binne 'n JS-string** en die laaste truuk werk nie, sal jy moet **uitgaan** van die string, **uitvoer** jou kode en **herbou** die JS-kode (as daar enige fout is, sal dit nie uitgevoer word nie):
+- As dit weerspieël word tussen **``** etikette, selfs al is jou insetsel binne enige tipe aanhaling, kan jy probeer om `` in te voeg en uit hierdie konteks te ontsnap. Dit werk omdat die **blaaier eers die HTML-etikette ontleed** en daarna die inhoud, daarom sal dit nie opmerk dat jou ingespuitte ``-etiket binne die HTML-kode is nie.
+- As dit weerspieël word **binne 'n JS-string** en die laaste truuk werk nie, sal jy die string moet **verlaat**, jou kode **uitvoer** en die JS-kode **herbou** (as daar enige fout is, sal dit nie uitgevoer word):
- `'-alert(1)-'`
- `';-alert(1)//`
- `\';alert(1)//`
-- As dit weerspieël word binne sjabloonletterlikhede, kan jy **JS-uitdrukkings insluit** met die `${ ... }` sintaksis: `` var greetings = `Hello, ${alert(1)}` ``
-- **Unicode-kodering** werk om **geldige javascript-kode** te skryf:
+- As dit weerspieël word binne template literals kan jy **embed JS expressions** gebruik met die `${ ... }` sintaksis: `` var greetings = `Hello, ${alert(1)}` ``
+- **Unicode encode** werk om **valid javascript code** te skryf:
```javascript
alert(1)
alert(1)
@@ -85,25 +85,25 @@ alert(1)
```
#### Javascript Hoisting
-Javascript Hoisting verwys na die geleentheid om **funksies, veranderlikes of klasse te verklaar nadat hulle gebruik is sodat jy scenario's kan misbruik waar 'n XSS onverklaarde veranderlikes of funksies gebruik.**\
-**Kyk na die volgende bladsy vir meer inligting:**
+Javascript Hoisting verwys na die moontlikheid om **funksies, veranderlikes of klasse te verklaar nadat hulle gebruik is, sodat jy scenario's kan misbruik waar 'n XSS nie-verklaarde veranderlikes of funksies gebruik.**\
+**Kyk na die volgende bladsy vir meer info:**
{{#ref}}
js-hoisting.md
{{#endref}}
-### Javascript Funksie
+### Javascript Function
-Verskeie webbladsye het eindpunte wat **die naam van die funksie om uit te voer as parameter aanvaar**. 'n Algemene voorbeeld wat in die natuur gesien kan word, is iets soos: `?callback=callbackFunc`.
+Verskeie webblaaie het endpoints wat **as parameter die naam van die uit te voer funksie aanvaar**. 'n Algemene voorbeeld wat jy in die veld sal sien is iets soos: `?callback=callbackFunc`.
-'n Goeie manier om uit te vind of iets wat direk deur die gebruiker gegee is, probeer om uitgevoer te word, is **om die param waarde te wysig** (byvoorbeeld na 'Vulnerable') en in die konsole te kyk vir foute soos:
+'n Goeie manier om uit te vind of iets wat direk deur die gebruiker gegee word probeer word uitgevoer, is deur die parameterwaarde te **wysig** (byvoorbeeld na 'Vulnerable') en in die console te kyk vir foute soos:
.png>)
-As dit kwesbaar is, kan jy dalk **'n waarskuwing aktiveer** deur net die waarde te stuur: **`?callback=alert(1)`**. Dit is egter baie algemeen dat hierdie eindpunte **die inhoud sal valideer** om slegs letters, syfers, punte en onderstrepings toe te laat (**`[\w\._]`**).
+Indien dit kwesbaar is, kan jy in staat wees om **'n alert te aktiveer** net deur die waarde te stuur: **`?callback=alert(1)`**. Dit is egter baie algemeen dat hierdie endpoints die inhoud sal **valideer** om slegs letters, syfers, punte en onderstreeptekens toe te laat (**`[\w\._]`**).
-Tog, selfs met daardie beperking is dit steeds moontlik om 'n paar aksies uit te voer. Dit is omdat jy daardie geldige karakters kan gebruik om **enige element in die DOM te benader**:
+Alhoewel dit 'n beperking is, is dit steeds moontlik om sekere aksies uit te voer. Dit is omdat jy daardie geldige karakters kan gebruik om **enige element in die DOM te bereik**:
.png>)
@@ -115,11 +115,12 @@ nextElementSibiling
lastElementSibiling
parentElement
```
-Jy kan ook probeer om **Javascript funksies** direk te **trigger**: `obj.sales.delOrders`.
+Jy kan ook probeer om **trigger Javascript functions** direk: `obj.sales.delOrders`.
-E however, gewoonlik is die eindpunte wat die aangeduide funksie uitvoer eindpunte sonder veel interessante DOM, **ander bladsye in die dieselfde oorsprong** sal 'n **meer interessante DOM** hê om meer aksies uit te voer.
+Ewenwel, gewoonlik is die endpoints wat die aangeduide funksie uitvoer endpoints sonder baie interessante DOM, **other pages in the same origin** sal 'n **more interesting DOM** hê om meer aksies uit te voer.
+
+Daarom, om hierdie **kwesbaarheid in 'n ander DOM te misbruik**, is die **Same Origin Method Execution (SOME)** uitbuiting ontwikkel:
-Daarom, om hierdie **kwesbaarheid in 'n ander DOM** te **misbruik**, is die **Same Origin Method Execution (SOME)** uitbuiting ontwikkel:
{{#ref}}
some-same-origin-method-execution.md
@@ -127,7 +128,8 @@ some-same-origin-method-execution.md
### DOM
-Daar is **JS kode** wat **onveilig** gebruik maak van **data wat deur 'n aanvaller beheer word** soos `location.href`. 'n Aanvaller kan dit misbruik om arbitrêre JS kode uit te voer.
+Daar is **JS code** wat **onveilig** sekere **data wat deur 'n aanvaller beheer word** gebruik, soos `location.href`. 'n Aanvaller kan dit misbruik om arbitrêre JS-kode uit te voer.
+
{{#ref}}
dom-xss.md
@@ -135,28 +137,30 @@ dom-xss.md
### **Universal XSS**
-Hierdie tipe XSS kan **oorals** gevind word. Hulle hang nie net af van die kliënt se uitbuiting van 'n webtoepassing nie, maar op **enige** **konteks**. Hierdie tipe **arbitrêre JavaScript uitvoering** kan selfs misbruik word om **RCE** te verkry, **arbitrêre** **lêers** in kliënte en bedieners te lees, en meer.\
+Hierdie tipe XSS kan **oral** gevind word. Hulle is nie net afhanklik van die kliëntuitbuiting van 'n webtoepassing nie maar van **enige** **konteks**. Hierdie soort **arbitrary JavaScript execution** kan selfs misbruik word om **RCE** te verkry, **lees** **arbitrêre** **lêers** op kliënte en bedieners, en meer.\
Sommige **voorbeelde**:
+
{{#ref}}
server-side-xss-dynamic-pdf.md
{{#endref}}
+
{{#ref}}
../../network-services-pentesting/pentesting-web/electron-desktop-apps/
{{#endref}}
-## WAF omseil kodering beeld
+## WAF bypass encoding image
.jpg>)
-## Invoeging binne ruwe HTML
+## Injecting inside raw HTML
-Wanneer jou invoer **binne die HTML bladsy** weerspieël word of jy kan ontsnap en HTML kode in hierdie konteks inspuit, is die **eerste** ding wat jy moet doen om te kyk of jy `<` kan misbruik om nuwe etikette te skep: Probeer net om daardie **karakter** te **weerspieël** en kyk of dit **HTML gekodeer** of **verwyder** is of as dit **weerspieël word sonder veranderinge**. **Slegs in die laaste geval sal jy in staat wees om hierdie geval te benut**.\
-Vir hierdie gevalle hou ook **in gedagte** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
-_**Let wel: 'n HTML kommentaar kan gesluit word met\*\***\***\*`-->`\*\***\***\*of \*\***`--!>`\*\*_
+Wanneer jou invoer **inside the HTML page** weerspieël word of jy kan ontsnap en HTML-kode in hierdie konteks in spuit, is die **first** ding wat jy moet doen om te kyk of jy `<` kan misbruik om nuwe tags te skep: Probeer net om daardie **char** te **reflect** en kyk of dit **HTML encoded** of **deleted** word of as dit **reflected without changes**. **Slegs in laasgenoemde geval sal jy hierdie geval kan uitbuit**.\
+Vir hierdie gevalle, **hou ook in gedagte** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
+_**Nota: A HTML comment can be closed using\*\***\***\*`-->`\*\***\***\*or \*\***`--!>`\*\*_
-In hierdie geval en as daar geen swart/whitelisting gebruik word nie, kan jy payloads soos gebruik:
+In hierdie geval en as geen black/whitelisting gebruik word nie, kan jy payloads soos die volgende gebruik:
```html
` etikette of tussen HTML gebeurtenisse wat JS kode kan uitvoer of tussen eienskappe wat die `javascript:` protokol aanvaar.
+In hierdie geval sal jou **input** weerspieël word binne die JS code van 'n `.js` file of tussen `` tags of tussen HTML events wat JS code kan uitvoer of tussen attribuutte wat die `javascript:` protocol aanvaar.
-### Ontsnapping van \` ingevoeg word, kan jy maklik die `` ingesit is, kan jy maklik die sluiting van die `
```
-Let wel dat ons in hierdie voorbeeld **selfs nie die enkele aanhalingsteken gesluit het nie**. Dit is omdat **HTML-parsing eers deur die blaaier uitgevoer word**, wat behels dat bladsy-elemente geïdentifiseer word, insluitend blokke van skrip. Die parsing van JavaScript om die ingebedde skrips te verstaan en uit te voer, word slegs daarna uitgevoer.
+Let daarop dat ons in hierdie voorbeeld **nie eens die enkele aanhalingsteken gesluit het nie**. Dit is omdat **HTML-ontleding eers deur die blaaier uitgevoer word**, wat behels dat bladsyelemente geïdentifiseer word, insluitend blokke van script. Die ontleding van JavaScript om die ingeslote scripts te verstaan en uit te voer, word eers daarna uitgevoer.
-### Binne JS-kode
+### Binne JS code
-As `<>` gesanitiseer word, kan jy steeds die **string ontsnap** waar jou invoer **geleë** is en **arbitraire JS uitvoer**. Dit is belangrik om **JS-sintaksis reg te stel**, want as daar enige foute is, sal die JS-kode nie uitgevoer word nie:
+If `<>` are being sanitised you can still **ontsnap die string** waar jou inset **geplaas is** en **voer arbitrêre JS uit**. Dit is belangrik om die **JS-sintaksis reg te stel**, want as daar enige foute is, sal die JS code nie uitgevoer word nie:
```
'-alert(document.domain)-'
';alert(document.domain)//
\';alert(document.domain)//
```
-### Template literals \`\`
+#### JS-in-JS string break → inject → repair pattern
-Om **strings** te konstrueer, behalwe vir enkel- en dubbel aanhalings, aanvaar JS ook **backticks** **` `` `**. Dit staan bekend as template literals aangesien dit toelaat om **ingebedde JS-uitdrukkings** te gebruik met `${ ... }` sintaksis.\
-As jy dus vind dat jou invoer **reflected** word binne 'n JS-string wat backticks gebruik, kan jy die sintaksis `${ ... }` misbruik om **arbitrary JS code** uit te voer:
+Wanneer gebruikersinvoer binne 'n aangehaalde JavaScript-string beland (bv. server-side echo in 'n inline script), kan jy die string beëindig, inject code, en repair die syntax om parsing geldig te hou. Generiese geraamte:
+```
+" // end original string
+; // safely terminate the statement
+ // attacker-controlled JS
+; a = " // repair and resume expected string/statement
+```
+Voorbeeld URL-patroon wanneer die kwesbare parameter in 'n JS-string weerspieël word:
+```
+?param=test";;a="
+```
+Dit voer aanvaller JS uit sonder om die HTML-konteks te hoef aan te raak (pure JS-in-JS). Kombineer met blacklist bypasses hieronder wanneer filters sleutelwoorde blokkeer.
+
+### Template literals ``
+
+Om **strings** te konstrueer, benewens enkele en dubbele aanhalingstekens, aanvaar JS ook **backticks** **` `` `**. Dit staan bekend as template literals aangesien hulle toelaat om **ingeslote JS-uitdrukkings** te gebruik met `${ ... }` sintaksis.\
+Dus, as jy vind dat jou invoer **reflected** word binne 'n JS-string wat backticks gebruik, kan jy die sintaksis `${ ... }` misbruik om **arbitrary JS code** uit te voer:
Dit kan **abused** word met:
```javascript
@@ -506,20 +526,35 @@ return loop
}
loop``
```
-### Gecodeerde kode-uitvoering
+### Encoded code execution
```html
This is a 1 line comment, but "-->" must to be at the beggining of the first line
```
-**JavaScript nuwe lyne (van** [**JavaScript nuwe lyn**](#javascript-new-lines) **trik)**
+**JavaScript new lines (van** [**JavaScript new line**](#javascript-new-lines) **truuk)**
```javascript
//Javascript interpret as new line these chars:
String.fromCharCode(10)
@@ -577,7 +612,7 @@ alert("//\u2028alert(1)") //0xe2 0x80 0xa8
String.fromCharCode(8233)
alert("//\u2029alert(1)") //0xe2 0x80 0xa9
```
-**JavaScript spasie**
+**JavaScript spasiekarakters**
```javascript
log=[];
function funct(){}
@@ -594,7 +629,7 @@ console.log(log)
//Either the raw characters can be used or you can HTML encode them if they appear in SVG or HTML attributes:
```
-**Javascript binne 'n opmerking**
+**Javascript binne 'n kommentaar**
```javascript
//If you can only inject inside a JS comment, you can still leak something
//If the user opens DevTools request to the indicated sourceMappingURL will be send
@@ -680,7 +715,7 @@ try{throw onerror=alert}catch{throw 1}
- [https://github.com/RenwaX23/XSS-Payloads/blob/master/Without-Parentheses.md](https://github.com/RenwaX23/XSS-Payloads/blob/master/Without-Parentheses.md)
- [https://portswigger.net/research/javascript-without-parentheses-using-dommatrix](https://portswigger.net/research/javascript-without-parentheses-using-dommatrix)
-**Arbitraire funksie (alert) oproep**
+**Arbitrêre funksie (alert) oproep**
```javascript
//Eval like functions
eval('ale'+'rt(1)')
@@ -740,56 +775,54 @@ top['al\x65rt'](1)
top[8680439..toString(30)](1)
```
-## **DOM kwesbaarhede**
+## **DOM vulnerabilities**
-Daar is **JS kode** wat **onveilige data wat deur 'n aanvaller beheer word** soos `location.href` gebruik. 'n Aanvaller kan dit misbruik om arbitrêre JS kode uit te voer.\
-**As gevolg van die uitbreiding van die verduideliking van** [**DOM kwesbaarhede is dit na hierdie bladsy verskuif**](dom-xss.md)**:**
+Daar is **JS code** wat **onveilige data gebruik wat deur 'n attacker beheer word** soos `location.href`. 'n attacker kan dit misbruik om arbitrary JS code uit te voer.\
+**Weens die uitbreiding van die verduideliking van** [**DOM vulnerabilities it was moved to this page**](dom-xss.md)**:**
{{#ref}}
dom-xss.md
{{#endref}}
-Daar sal jy 'n gedetailleerde **verduideliking vind van wat DOM kwesbaarhede is, hoe dit veroorsaak word, en hoe om dit te benut**.\
-Moet ook nie vergeet nie dat **aan die einde van die genoemde pos** jy 'n verduideliking kan vind oor [**DOM Clobbering aanvalle**](dom-xss.md#dom-clobbering).
+Daar sal jy 'n gedetailleerde **verduideliking van wat DOM vulnerabilities is, hoe dit veroorsaak word, en hoe om dit te exploiteer** vind.\
+Ook, moenie vergeet dat **by die einde van die genoemde post** jy 'n verduideliking oor [**DOM Clobbering attacks**](dom-xss.md#dom-clobbering) kan vind.
-### Opgradering van Self-XSS
+### Upgrading Self-XSS
-### Koekie XSS
+### Cookie XSS
-As jy 'n XSS kan ontketen deur die payload binne 'n koekie te stuur, is dit gewoonlik 'n self-XSS. As jy egter 'n **kwesbare subdomein vir XSS** vind, kan jy hierdie XSS misbruik om 'n koekie in die hele domein in te voeg en sodoende die koekie XSS in die hoofdomein of ander subdomeine (diegene wat kwesbaar is vir koekie XSS) te ontketen. Hiervoor kan jy die koekie tossing aanval gebruik:
+As jy 'n XSS kan trigger deur die payload in 'n cookie te stuur, is dit gewoonlik 'n self-XSS. As jy egter 'n **vulnerable subdomain to XSS** vind, kan jy hierdie XSS misbruik om 'n cookie in die hele domain te inject en sodoende die cookie XSS in die main domain of ander subdomains (diegene vatbaar vir cookie XSS) te trigger. Hiervoor kan jy die cookie tossing attack gebruik:
{{#ref}}
../hacking-with-cookies/cookie-tossing.md
{{#endref}}
-Jy kan 'n groot misbruik van hierdie tegniek vind in [**hierdie blogpos**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html).
+You can find a great abuse of this technique in [**this blog post**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html).
-### Stuur jou sessie na die admin
+### Stuur jou session na die admin
-Miskien kan 'n gebruiker sy profiel met die admin deel en as die self XSS binne die profiel van die gebruiker is en die admin dit toegang, sal hy die kwesbaarheid ontketen.
+Miskien kan 'n user sy profile met die admin deel, en as die self XSS in die profile van die user is en die admin dit besoek, sal hy die vulnerabiliteit trigger.
-### Sessiemirrow
+### Session Mirroring
-As jy 'n paar self XSS vind en die webblad het 'n **sessiemirrow vir administrateurs**, byvoorbeeld, wat kliënte toelaat om hulp te vra, sal die admin sien wat jy in jou sessie sien, maar vanuit sy sessie.
-
-Jy kan die **administrateur jou self XSS laat ontketen** en sy koekies/sessie steel.
+Indien jy 'n self XSS vind en die webblad het 'n **session mirroring for administrators**, byvoorbeeld wat clients toelaat om hulp te vra en sodat die admin sien wat jy in jou session sien maar vanuit sy session, kan jy die **administrator laat trigger jou self XSS** en sy cookies/session steel.
## Ander Bypasses
-### Genormaliseerde Unicode
+### Normalised Unicode
-Jy kan kyk of die **reflekteerde waardes** **unicode genormaliseer** word op die bediener (of aan die kliëntkant) en hierdie funksionaliteit misbruik om beskermings te omseil. [**Vind 'n voorbeeld hier**](../unicode-injection/index.html#xss-cross-site-scripting).
+Jy kan kyk of die **reflected values** op die server (of aan die client side) **unicode normalized** word en hierdie funksionaliteit misbruik om protections te bypass. [**Find an example here**](../unicode-injection/index.html#xss-cross-site-scripting).
-### PHP FILTER_VALIDATE_EMAIL vlag Bypass
+### PHP FILTER_VALIDATE_EMAIL flag Bypass
```javascript
">