59

挖洞经验 | 看我如何发现比特币赌博网站漏洞并收获$12000赏金

 5 years ago
source link: http://www.freebuf.com/articles/web/177581.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

q6n63uY.jpg!web

Web渗透测试中比较难的就是测试那些交互较少的应用了,当你尝试了各种漏洞利用方法而无效之后,很可能就会放弃了。但有时候,这种花费时间的投入和研究,对白帽自身的技术提高来说,还是非常有用的。这里我就分享一下,我在对比特币赌博网站bustabit的渗透测试中发现的两个漏洞,由此我也收获了$12,000赏金。比特币公司就是豪气。

背景

过去几周,我一直在对 比特币赌博网站bustabit 进行渗透测试。在该网站中,玩家自己决定要投注的金额和支付倍数,随着赔率和倍数的上升,在游戏强行终止前自行终止游戏即可胜出,但是在游戏强行终止时还未能退出比赛,所有玩家的赌注都会输掉。

bustabit网站应用中存在一些有意思的功能,但我觉得其中的用户聊天交流功能可能存在问题,所以我也花了好多时间来研究分析它。注册登录之后,点击这里的链接 https://www.bustabit.com/play ,在左下角的CHAT框内就可与各路玩家进行实时聊天。

MVnQVv7.jpg!web

漏洞1:用户客户端的拒绝服务(DoS)漏洞 – $2,000 美金

当我浏览查看聊天消息时,发现了一件有意思的事,就是当链接被粘贴进入时,聊天应用服务会自动为其创建一个超链接进行跳转。原因是由于网站采用了一个特殊且又危险的HTML实现元素,攻击者可以采取以下方式执行恶意操作:

<a href=”:1″>:2</a>

理论上,该处主要会存在以下三种恶意利用:

如果输入未做严格的安全过滤,则可以把 :1 的地方替换为 ” onmouseover=alert(1) a=” 形成触发;

如果输入未做严格的安全过滤,还可以把 :1 的地方替换为  javascript:alert(1) 形成触发;

如果输入未做严格的安全过滤,则可以把 :2 的地方替换为 <script>alert(1)</script> 形成触发。

可在这里,这些地方的替换最终无法形成有效利用。聊天应用服务貌似不是直接对外部URL网站进行超链接转化,例如在聊天窗口中输入的外部URL网站是 www.google.com ,这里的聊天应用将会把其修改为以下样式的最终跳转链接:

https://www.bustabit.com/external?url=https://www.google.com

Y3uQruM.jpg!web 当然,在聊天窗口中点击以上这个最终链接之后,会发生以下警告: QremyqA.jpg!web

如果聊天窗口中输入的外部URL网站是bustabit自身网站会怎样?

经测试发现,bustabit自身并不会把自己的网站链接当成外部URL网站进行转发,例如在聊天窗口中输入 www.bustabit.com/a 后,由于它是同一个网站,它并不会像上述那样,最终转化为 www.bustabit.com/external?url=www.bustabit.com/a 这样的跳转链接。

但结合之前的 <a href=”:1″>:2</a> HTML可利用之处,可以在其中构造加入 www.bustabit.com/a

<a href=”/a”> www.bustabit.com/a </a>

那要是变为上述的跳转链接,在其中加入 www.google.com/a 又会是怎样呢?我们可以这样来构造:

<a href=” https://www.bustabit.com/external?url=https://www.google.com/a “> https://www.google.com/a </a>

这个构造链接中有亮点的部份是,它没有对整个域更行超链接,而仅仅是对 https://www.google.com/a 进行了超链接,最终点击它后,又会跳转到 https://www.bustabit.com/external?url=https://www.google.com/a

由此,攻击者可以利用双斜线功能来跳转请求类似以下的外部资源,实现攻击Payload加载:

https://www.bustabit.com//attacker.com/hacked

最终可以这样构造:

<a href=”//attacker.com/hacked”> www.bustabit.com//attacker.com/hacked </a>

经验证,这种方法是可行的:

UB7FJnn.jpg!web 以下的HTML和上述的  //hacker.com/ 类似,请注意最终的构造效果是它会跳转到一个非  samcurry.net 网站的外部链接上。这里的技术原理与统一资源标识符(URI)相关, 点此参考

就像下图中在聊天室中输入bustabit.com//whywontyouload.com之后,这种方法看上去可以绕过HTML解析机制的 Link Filter,由于这是一个纯JavaScript的应用,需要 onclick 事件而不用自动执行刷新就能加载whywontyouload.com,但是最终效果不是太理想。 vuqINjJ.jpg!web

即使在客户端写好了PoC脚本,它也只会悬停在指向whywontyouload.com的操作上,点击URL链接也没有任何反应。所以,我就来好好看看到底发生了什么。

经过一番研究,我反复用不同的Payload来测试跳转到外部域的机制,偶然就发现了能让网站变灰不显示任何东西的情况。原来,是我在自己的客户端中发送了以下链接:

https://www.bustabit.com/%0t

由于其中包含了 %0t, JavaScript 不知如何处理解析,所以导致了整个网站的失效响应。即使刷新了整个页面,我发现,我的客户端还处于崩溃状态。这也就是说,应用程序会自动把所有超链接发送到某个JavaScript函数,如果其中存在像 %0t 的这种失效参数,就会造成整个程序的崩溃。

iaAraqA.jpg!web

由于bustabit网站中所有下注的用户名称在网站右上角都是公开的,攻击得可以向任何下赌注的人发送此类消息,导致受害者用户客户端崩溃,无法完成有效参赌或赌资兑现。另外,攻击者还能向网站主聊天窗口中发送恶意链接,导致所有用户无法形成有效的消息连接,最终用户形成不了交互,游戏就长时间不可玩。PoC视频如下:

https://www.youtube.com/watch?v=jxBVZtB2z4Q

漏洞2:XSS和Click Jacking(点击劫持)- $10,000赏金

在漏洞1中,我们提过,在聊天窗口中输入 www.google.com 之后,聊天应用会形成以下跳转链接:

https://www.bustabit.com/external?url=https://www.google.com

mMzUFbA.jpg!web 另外,测试发现,如果在其中输入简单的 JavaScript URI 之后,也能形成XSS,因为聊天中总会需要别人点击某些链接,所以,这种漏洞无处不在。就像在聊天窗口中输入Javascript:alert(1)之后,最终会跳转到https://www.bustabit.com/external?url=Javascript:alert(1),形成XSS攻击: jQv2quA.jpg!web 这种情形下,可以深入对XSS漏洞进行利用,如其支持<iframe>标记插入,那么,可以利用 Samy Kamkar的工具,形成点击劫持攻击。经测试发现,确实可以向聊天应用中插入<iframe>标记,就此,我能用 Click here to continue 字段形成一个点击劫持页面:

J3uiMzj.jpg!web 而且,在现实利用场景中,我们还可配合以下这种用户登录页面形成深入的漏洞利用: IN7ZZrv.jpg!web 那么, 这种XSS能做什么呢?当然是Session窃取了。Web接口中的会话会被存储在用户的本地浏览器中,攻击者可以配合该XSS漏洞迷惑用户登录请求某个恶意外部链接,由此间接窃取到用户cookie和session等信息,攻击者利用用户cookie信息就能登录用户账户。 VbAn2y3.jpg!web

总结

很多人在做漏洞众测项目时,总会用一些面面俱到或浅尝辄止的方式来进行测试,虽然从攻击广度上来说可能会取得一些实质性效果,但是有一点要清楚,像 aquatone  或 dirsearch这些你能用的开源工具别人一样能下载利用。所以,如果你想在竞争激烈的众多白帽中脱颖而出,最好的方法就是去深入挖掘发现目标网站的某些功能应用缺陷漏洞。

*参考来源: samcurry ,clouds 编译,转载请注明来自 FreeBuf.COM


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK