安全播报

防御吧作为15年知名老牌域名服务商,CNNIC和CANN双认证域名注册商,已经
持续为500多万个域名提供服务,包括智能DNS/自由转移/隐私保护等服务!
利用 Opera 浏览器中存储的XSS漏洞读取本地文件
2021-09-26 10:17:30 【

Opera 管理着一个漏洞赏金计划,研究人员可以在该计划中报告 Opera 软件中的漏洞并获得奖励。


这篇文章就是我发现的一个漏洞——网页可能会从用户那里检索本地文件的屏幕截图。




考虑到 Opera 是基于 Chromium 的,我做的第一件事就是下载一个新版本的 Opera 浏览器,并查看他们添加的新功能。其中一项功能称被为Opera Pinboard,“Pinboard”功能,允许用户创建图钉板并分享图钉,它基本上是一个笔记/书签保护程序,可以与其他用户共享,你可以向其中添加文本、图像和链接。


此服务的 URI 是 https://pinboard.opera.com/。但是,在 Opera 中打开此页面时,我被重定向到了 Opera:pinboards。 opera: scheme是 Opera 中的一个特殊位置,类似于 Chrome 的 chrome:,并且具有普通页面没有的特殊权限。通过使用网络代理,我发现在将新链接作为 pin 添加到我的 pinboard 时,一个请求会被发送到pinboard.opera-api.com,如下所示:




标签内的 URI 由浏览器解析,并发送到 pinboard API,然后添加到 opera:pinboards 中的本地版本。


我的想法是,如果我可以向链接到 java script URI 的 opera:pinboards 添加一个 pin,我就可以从特权方案中执行跨站点脚本 (XSS)。在执行了许多测试之后,我发现固定 URI java script:@opera.com 是可能的,并且它在我的 pinboard 中显示为一个可点击的链接!这样,我们就有了 XSS!


经过多次尝试,我最终想出了有效载荷 java script:'@opera.com/';alert(1),它在我的pinboard内单击时会导致弹出窗口。但是,有一个小问题:pinboard 界面中的标签使用了属性 target=_blank,这意味着在页面上点击的任何链接都会在新窗口中被打开,并且不会在页面内执行 java script。幸运的是,有一个小技巧:如果你命令 (Ctrl) + 单击或中键单击链接,代码会成功运行。




通过在opera:pinboards 页面上使用简单的XSS,我想展示比点击链接时简单地弹出一个更大的影响。


如前所述,opera: scheme比普通网页拥有更多权限:它还可以访问一些本机函数调用,并允许查看其他选项卡,绕过浏览器的同源策略 (SOP)。它还允许加载文件:scheme,可用于查看本地文件。然而,它不允许所有原生函数被使用,这将允许完全控制和访问其他标签,例如,注入java script将复制整个页面的内容并发送到我的服务器。


这样,我就制作了一个脚本来执行以下操作:


使用本机函数 chrome.tabs.create 创建一个新选项卡,在本示例中,新选项卡打开 file:///etc/passwd。

使用 Opera Pinboards 用于创建 pin 缩略图的相同函数 opr.pinboardPrivate.getThumbnail 创建打开的选项卡的屏幕截图。

将截图以base64编码的PNG格式发送到我的服务器,然后我就可以查看它了。


创建一个新的 pinboard 来导入脚本以执行上述所有这些步骤,我添加了一个新 pin,当点击它时,会发送我盗窃的 /etc/passwd 文件的屏幕截图。我通过BugCrowd页面向Opera发送了这个概念的视频证明。


目前本文所讲的这个漏洞已经被修复。


】【打印关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇欺骗防御新方法:rMTD 下一篇OpenOffice 漏洞使用户面临代码执..

立足首都,辐射全球,防御吧专注云防御及云计算服务15年!

联系我们

服务热线:010-56157787 ,010-56159998
企业QQ:4000043998
技术支持:010-56159998
E-Mail:800@fangyuba.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解决防御与加速) 版权所有 增值许可:京B2-20140042号
售前咨询
公司总机:4000043998 01056155355
24小时电话:010-56159998
投诉电话:18910191973
值班售后/技术支持
售后服务/财务
备案专员
紧急电话:18610088800