挖洞经验 | 从存储型XSS到RCE的Steam客户端漏洞
作者:admin | 时间:2019-1-25 01:12:05 | 分类:黑客技术 隐藏侧边栏展开侧边栏
随着视频游戏行业的持续膨胀,Valve的Steam平台仍然是游戏玩家们的热门市场之一,在某种程度上,这也成为了黑客们攻击目标。最近众测社区披露的一个Steam客户端漏洞,就能让攻击者在Steam用户的电脑系统上实现从存储型XSS到远程代码执行(RCE)的攻击,可导致个人信息和进一步的系统控制。最终,该漏洞获得了Valve官方$7500美金的奖励。
Steam聊天客户端介绍
Steam是Valve公司旗下综合的数字游戏社交平台,玩家可以在该平台购买、下载、讨论、上传和分享游戏和软件。为了方便社区玩家的交流沟通,Steam除了具备电脑手机客户端的聊天功能外,还构建有一个与客户端功能相同的网页版聊天系统(https://steamcommunity.com/chat),该网页聊天系统具有的多媒体元素和功能与客户端一致。
Steam聊天客户端基于React开发而成,React算是Javascript应用框架中具备多种强大安全性的良好架构了,它能一定程度上规避某些不安全函数的应用。另外,Steam聊天客户端还部署了内容安全策略(CSP),且在其中应用了’unsafe-inline’策略,而本来’unsafe-inline’就会带来XSS风险,这就有点意思了。
CSP的’unsafe-inline‘策略:允许使用内联资源,如内联的 <script> 元素、javascript: URL、内联的事件处理函数和内联的 <style> 元素。(注意: 使用 ‘unsafe-inline’ 和 ‘unsafe-eval’ 都是不安全的,它们会使您的网站有跨站脚本攻击风险。)
漏洞发现
该漏洞由年轻的英国国家网络安全中心(National Cyber Security Centre)安全工程师Thomas Shadwell发现,他曾获得福布斯2018年评选的“欧洲30名30岁以下优秀工程师”称号。
Shadwell的漏洞报告显示,他利用了Chrome DevTool工具、XSS Palyload和允许第三方站点URL嵌入的oEmbed格式发现了该漏洞。由于客户端和网页版聊天系统的元素和功能模式相同,为了更好的调试请求,Shadwell选择了网页版聊天系统https://steamcommunity.com/chat作为突破口,客户端和网页版存在的最终测试漏洞相同。
Steam聊天客户端可以发送和接收BBcode格式的聊天消息,而这些消息会间接地映射为相应的HTML元素,特别是对任意URL都可使用类似[url]的BBcode标签,Shadwell发现[url=xxx]、[code] 和 [image]标签存在可利用风险,尤其是 [url=xxx] 未被安全过滤,可以嵌入任意链接,尽管React具备严格的XSS缓解防护措施,但并不能缓解[url=xxx]下类似 javascript: URI 的XSS攻击。
对该漏洞的利用场景为,攻击者只需向聊天群组玩家成员,发送一条经过构造的链接,当玩家点击了这条链接之后,就能触发漏洞实现攻击。如下PoC视频所示:
看不到?点这里
严重的危害就是,攻击者可以在Steam聊天客户端的一些公共群组中广泛传播经过构造的恶意嵌入链接,如jarfile:..\..\..\..\..\..\..\..\Users\Username\Downloads\drive-by-download.jar,或是一些精巧页面,愿者点击上钩之后,就能利用该漏洞窃取受害者玩家的个人敏感信息,进行进一步的网络钓鱼攻击、勒索软件传播和系统破坏。
从XSS到RCE
在Shadwell对该漏洞的首次上报中,只发现了以上的XSS漏洞,但在他综合前期对Steam客户端的漏洞发现时,却发现可以利用
steam://openexternalforpid/10400/file:///C:/Windows/cmd.exe
构造RCE执行指令,实现对受害者系统的远程代码执行攻击。只用发送链接
[url=steam://openexternalforpid/10400/file:///C:/Windows/cmd.exe]click me[/url]
给目标受害者,只要对方点击,攻击就能成功。
该漏洞的根本原因出在Steam聊天客户端所谓的“丰富聊天内容”功能中,这也是现在很多流行的聊天应用程序中经常会内置的功能,而该漏洞也就是Steam应用了不安全的CSP 'unsafe-inline'策略所导致的。
据Shadwell透露,总体来说,Steam聊天客户端的安全设计还算不错,但问题出在对一些早前的架构采用了相同的安全设计,所以才导致了该漏洞。Shadwell还表示,Steam平台的游戏项目存在很多实际价值,所以在Steam上存在很多窃取他人游戏账户和资产的网络犯罪行为。更多漏洞细节请参考漏洞报告:Hackerone