大家好,这篇文章将展示我最近发现的一个很酷的漏洞,让我们开始吧!
前不久,我对hackerone上的某个悬赏目标进行了一番研究,发现了一个Self-XSS漏洞(AngularJS模板注入)和一个OAuth的配置错误漏洞。这两个漏洞本身都是低危漏洞,不会造成很大的影响,但如果结合在一起,就会生成一个高危的存储型XSS漏洞!
出于安全等原因,我称这个目标网站为redacted.com
。
这个网站主要提供网路存储服务,就像Google Drive或DropBox一样。用户可以在这个网站上传、下载、共享他们的文件。
我经过一番摸索在上传文件的文件名处找到了一个XSS。只要你上传一个文件名如{{constructor.constructor(『alert(1)』)()}}.jpg
这样的文件,那么你就会在上载文件的管理页面上看到XSS弹框。
很好!但可惜这只是一个Self-XSS。
当然,有一种简单的方法可以用它攻击其他用户,就是和受害者共享一个指向文件的链接,一旦受害者点击,攻击就会生效。但在这篇文章中,我将向你展示一种更有趣的利用方法。
在网站的设置中,我发现了一个从Dropbox导入文件的功能。为了使用这个功能,你需要通过OAuth将你的Dropbox帐户和这个网站绑定。
为了方便理解,我将快速解释一下这个OAuth流程。
- 首先,用户单击
Connect Dropbox
按钮,浏览器就会发出如下GET请求(https://dropbox.com/oauth2/authorize?client_id=***********&response_type=code&state=****************&redirect_uri=https%3A%2F%2Fwww.redacted.com%2Faccount%2Fsettings%2Fdropbox-callback
)
- 然后用户被重定向到Dropbox,登录帐户并授予访问许可权。