用户
搜索
  • TA的每日心情

    2019-1-23 14:43
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看

    i春秋-见习白帽

    k0nJAc

    Rank: 3Rank: 3

    1

    主题

    55

    帖子

    245

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2017-5-10
    发表于 2019-1-28 19:44:50 298412
    本帖最后由 tllm 于 2019-1-28 11:54 编辑

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

    通过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['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[0].contentWindow.getCookie('penc');
    
            alert(iframe[0].contentWindow.decrypt(penc));
    
        });
    
    }
    

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



    游客,如果您要查看本帖隐藏内容请回复


    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


    好想给你一堆六,但是似乎ichuqiu杜绝这种方式,所以水水的回复一下好想给你一堆六,但是似乎ichuqiu杜绝这种方式,所以水水的回复一下好想给你一堆六,但是似乎ichuqiu杜绝这种方式,所以水水好想给你一堆六,但是似乎ichuqiu杜绝这种方式,所以水水的回复一下好想给你一堆六,但是似乎ichuqiu杜绝这种方式,所以水水的回复一下好想给你一堆六,但是似乎ichuqiu杜绝这种方式,所以水水的回复一下好想给你一堆六,但是似乎ichuqiu杜绝这种方式,所以水水的回复一下的回复一下好想给你一堆六,但是似乎ichuqiu杜绝这种方式,所以水水的回复一下
    使用道具 举报 回复
    666666666666666666666666666666666666666
    使用道具 举报 回复
    很强!希望多分享一些此类高质量文章!
    用代码将梦想照进现实!
    使用道具 举报 回复
    111111111111111111111111
    使用道具 举报 回复
    66666666666666666666666
    使用道具 举报 回复
    ccccccfgdsgfdsfdsfeds
    使用道具 举报 回复
    欢迎分享国外优质文章
    一位热衷于分享,积极向上的小白
    使用道具 举报 回复
    学习大佬技术。瞅瞅
    使用道具 举报 回复
    感谢分享
    使用道具 举报 回复
    asdasdasdasasd
    使用道具 举报 回复
    asdasdasdasasd
    使用道具 举报 回复
    发表于 2019-1-29 13:03:32
    66666666666
    使用道具 举报 回复
    发表于 2019-1-29 13:49:19
    测试一下!
    使用道具 举报 回复
    666666.。。。。谢谢大佬!!!
    使用道具 举报 回复
    发表于 2019-1-30 09:48:32
    6666,真是厉害啊。
    使用道具 举报 回复
    发表于 2019-1-30 14:27:11
    6666666666666
    使用道具 举报 回复
    666666666666666
    使用道具 举报 回复
    发表于 2019-1-31 17:39:42
    感谢分享
    使用道具 举报 回复
    楼主真是大神啊
    使用道具 举报 回复
    12下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册