考虑一个允许用户上传任意JS文件的网站example.com,这些文件随后存储在服务器上,并提供给具有JS内容类型的访问者。攻击者可以利用这个来对example.com执行XSS攻击吗?
起初,我认为答案是肯定的。但是想一想,一个人是怎么做到的还不清楚?如果您只是将受害者指向上传的JS文件的URL,浏览器将下载并显示代码,而不是执行它。除非存在其他漏洞,否则攻击者无法上载HTML文件或强制现有HTML文件包含脚本。将其包含在evil.com上不会有任何帮助,因为这样它就不会在example.com原点运行。
我知道文件上传存在很多安全问题,但这里我只对XSS的潜力感兴趣,如果您允许上传JS的话。
发布于 2020-01-23 09:50:04
这取决于网站是否允许通过URL包含文件,或者网站是否坚持某些JavaScript以后再运行。
关于远程文件包含的
假设该网站有一个功能,您可以链接到某个外部JavaScript文件并运行该功能。如果这可以通过链接(例如通过example.com?src=evil.com/mal.js )完成,那么这是一个反射的XSS漏洞。
应用程序交互加载远程JavaScript的能力是不够的。它需要通过一个URL来完成,所以受害者唯一要做的就是点击URL。
如果该网站允许用户运行其他人创建的JavaScript,那么您可能存在存储的XSS漏洞,但这取决于站点的结构。例如,如果您访问example.com/mallory/mal/,网站询问您是否确定要由Mallory运行mal.js,并警告运行不受信任的代码的风险,那么您应该没事。如果网站只是运行它,那么我会把它归类为存储XSS。
有人可能会说,这是一个自XSS的例子,攻击者可以通过社交工程让一个人下载恶意JS文件并在您的网站上运行它。虽然这是一个合理的关切,但我不认为这是一个巨大的脆弱性。您可以通过显示警告来在一定程度上降低此风险,尽管用户可以单击该警告。
https://security.stackexchange.com/questions/224695
复制相似问题