用户
搜索

【译】·惊!从麦当劳用户中窃取密码

2019-1-29 11:04| 发布者: 桃子Tz| 查看: 52| 评论: 0|原作者: tllm


从麦当劳的用户中窃取密码


通过AngularJS沙盒执行反射型xss导致麦当劳用户的密码泄露



通过滥用不安全的加密存储和反射形跨站脚本攻击可以获取到麦当劳用户的明文密码。当然了,其他个人信息,如用户名,地址和联系方式也会被窃取



0x01



反射xss利用AngularJS沙盒进行绕过转义



McDonalds.com 有一个搜索的页面,这个页面显示了搜索参数q的值。因此,当我们进行一个搜索测试***********-test-reflected-test-*********** 响应如下显示:


image


image


麦当劳使用了AngularJS,因此我们可以尝试去打印唯一的作用域ID,我们可以通过将q参数值更改为{{$id}}来完成这个操作。我们可以看见{{$id}}获得并更改为这个AngulraJS唯一的范围ID(单调递增)


image


image


尝试使用{{alert(1)}}作为值 但是并没有起作用,因为所有的AngularJS代码都是在沙箱里面执行的,然而,AngularJS沙盒并不是很安全,事实上它根本不应该信任。它甚至在1.6版本中被删除,它提供了一个错误的保护。PortSwigger写了一篇关于AngularJS沙盒逃逸的好文章


我们首先需要知道McDonalds.com的AngularJS版本。我们可以在控制台上面执行angular.version


image


这个版本是1.5.3,所以沙盒逃脱的payload就是


{{x = {'y':''.constructor.prototype}; x[zxsq-anti-bbcode-'y'].charAt=[].join;$eval('x=alert(1)');}}


我们使用这个payload作为搜索参数的值,就可以发现成功弹窗


image


0x02



窃取用户的密码



另外一件事情就是 我注意到在McDonalds.com上有一个非常特殊的复选框。一般来说 你可以在登陆的时候选择“记住我”(Remember me)。但是!麦当劳的登陆页面却给了我们一个选项->记住密码。


image


我通过搜索所有JavaScript代码的关键词password发现了一些很有意思的解密代码


image


image


如果有一件事情是不能做的,那么就是在客户端里面解密代码或者使用对称加密。我尝试在我自己的客户端里面运行代码并且成功执行


image


penc的值是以cookie的形式存储一年,23333!


image


麦当劳使用了CryptoJS 去加密和解密敏感数据。他们为每一个用户都使用了相同的key和iv。所以我只需要偷取别人的penc cookie 就可以去解密得到他的明文密码.


image


我识图在搜索页面上使用一个恶意的payload来解密我的密码,但是没有起作用,因为AngularJS沙盒逃逸的payload 将charAt替换为join,因此getCookie函数失效。getcookie函数尝试在cookie值里面通过检测charAt(0)是否为空格 来达到删除空格的目的。在下面的图片中,你可以看见如果在搜索页面上面执行charAT(0) 将会返回了由0拼接的一个字符串。


image


image


我写了一些JS,在首页上嵌套一个iframe,并利用iframe窃取cookie。由于沙盒逃逸导致了payload被多次执行,所以我通过变量xssi**ecuted限制执行条件,这样子paload只会执行一次



if (!window.xssI**ecuted) {

    window.xssI**ecuted = true;

    var iframe = $('<iframe src="https://www.mcdonalds.com/us/en-us.html"></iframe>');

    $('body').append(iframe);

    iframe.on('load', function() {

        var penc = iframe[zxsq-anti-bbcode-0].contentWindow.getCookie('penc');

        alert(iframe[zxsq-anti-bbcode-0].contentWindow.decrypt(penc));

    });

}

我们现在使用这个exp就可以导致我的密码出现在弹窗中!

image




桃子Tz,如果您要查看本帖隐藏内容请回复


END
这些理解起来都很简单,但是我多次向麦当劳联系并报告这个问题,但是他们并没有回应,这也是我为何披露这个漏洞

注:
--------------------------------------------------------------------------------------------------------
翻译:k0nJac
原文链接:https://finnwea.com/blog/stealing-passwords-from-mcdonalds-users/#void
另外最近弄了个github不定期翻译国外Bug bounty write-up:
https://github.com/k0njacccc/Bug-Bounty---Write-up-translate
欢迎关注2333


鲜花
鲜花
握手
握手
雷人
雷人
路过
路过
鸡蛋
鸡蛋