挖掘 Microsoft MSRC中的DOM型 XSS

admin 2024年11月13日16:52:46评论15 views字数 2207阅读7分21秒阅读模式

扫码领资料

获网安教程

挖掘 Microsoft MSRC中的DOM型 XSS

挖掘 Microsoft MSRC中的DOM型 XSS

Track安全社区投稿~  

赢千元稿费!还有保底奖励~(https://bbs.zkaq.cn)

介绍

在本文中,我很高兴分享我在 Microsoft 安全响应中心(MSRC)网站上发现一个基于 DOM 的 XSS 漏洞的经历,并介绍微软安全团队如何迅速有效地修复了该漏洞。

基于 DOM 的 XSS 的背景

基于 DOM 的 XSS 漏洞通常发生在 JavaScript 从攻击者可控制的来源(如 URL)中获取数据,并将其传递给支持动态代码执行的接收点(如 eval() 或 innerHTML,在本例中为 innerHTML)时。这样攻击者可以执行恶意 JavaScript,通常能够劫持其他用户的账户。

发现并分析漏洞代码

2023 年 2 月 12 日,我在 MSRC 博客上看到他们发布了一篇关于新 MSRC 博客站点的文章,该站点于 2023 年 2 月 9 日启动。

挖掘 Microsoft MSRC中的DOM型 XSS

img

上述博客文章宣布,MSRC 博客站点已焕然一新,提升了网站性能、搜索功能、分类和标签功能。这表明该站点添加了新的开发功能。

以下是我发现并分析漏洞代码并确定问题根源的分步指南。

我首先使用了搜索功能,并查看了网站的 HTML 源代码。发现 search.js 文件正在被加载,且搜索查询被作为 query 参数添加到 URL 中。

挖掘 Microsoft MSRC中的DOM型 XSS

img

接着,我开始分析 search.js 文件,以查找漏洞的根本原因。

在第 2296 行,应用程序在处理用户输入之前检查 inputBox 和 searchResults 中是否均存在值。
挖掘 Microsoft MSRC中的DOM型 XSS

img
search.js:第 2296–2305 行
在第 2297 行,应用程序调用 param 函数以检索查询参数的值,并将其存储在 searchQuery 参数中。
挖掘 Microsoft MSRC中的DOM型 XSS

img
search.js:第 2389–2393 行
在第 2300 行,应用程序将 searchQuery 参数传递给 executeSearch 函数。
挖掘 Microsoft MSRC中的DOM型 XSS

img
search.js:第 2296–2305 行
在 executeSearch 函数中,应用程序再次调用 param 函数,并将结果解析为 searchQueryTitle.innerHTML
挖掘 Microsoft MSRC中的DOM型 XSS

img
search.js: 2306–2329

结论

如前述步骤所示,代码从 param 函数中获取用户输入,并将其直接设置为 DOM 元素的 innerHTML,而未进行适当的输入过滤。这使得潜在攻击者可以注入并在受害者的浏览器中执行恶意脚本。

举例

挖掘 Microsoft MSRC中的DOM型 XSS

img

向微软报告漏洞

为报告该漏洞,我向他们提交了一份详细的报告,概述了该漏洞并提供了一个演示攻击的概念验证(PoC)。

漏洞概述

该漏洞出现在 Microsoft MSRC 博客中,特别是在 https://msrc.microsoft.com/blog/search/ 的搜索功能中。漏洞是由从 “query” 参数接收到的未过滤的用户输入引起的,该参数用于设置搜索结果中 DOM 元素的 innerHTML。这使攻击者可以注入恶意脚本并在受害者的浏览器中执行,从而导致基于 DOM 的 XSS 攻击。
受影响产品Microsoft MSRC Blog 版本: 1.1.02231.103–9e425f97
受影响的 URLhttps://msrc.microsoft.com/blog/search/
受影响的 JavaScripthttps://msrc.microsoft.com/blog/js/search.js
受影响的函数param
受影响的参数query
测试载荷<img/src/onerror=alert(1)>
PoC 示例 URLhttps://msrc.microsoft.com/blog/search/?query=<img/src/onerror=alert(1)>

概念验证(PoC)

以下是我录制的 PoC 视频,用于演示 MSRC 博客站点中存在的基于 DOM 的 XSS 漏洞。
https://www.youtube.com/watch?v=fkWGK8i2usE&ab_channel=SupakiadS.(m3ez)

MSRC 团队如何修复该漏洞

在发现该漏洞后,我向 MSRC 团队进行了报告。他们确认了该报告,并开始调查和修复问题。
MSRC 团队实现了 getSearchParamClean 以替换存在漏洞的 param 函数。
挖掘 Microsoft MSRC中的DOM型 XSS

img
MSRC 团队实现了 getSearchParamClean 以替换存在漏洞的 param 函数
新函数使用 Dompurify 库在将用户输入设置为 DOM 元素的 innerHTML 之前,进行适当的过滤。这将通过在用户输入显示在页面上之前移除任何恶意脚本,从而防止潜在的 XSS 攻击。
挖掘 Microsoft MSRC中的DOM型 XSS

img
getSearchParamClean function

验证修复的漏洞

挖掘 Microsoft MSRC中的DOM型 XSS

img
Before
尝试将 XSS 载荷注入搜索查询参数时,应导致载荷被过滤而未被执行。
挖掘 Microsoft MSRC中的DOM型 XSS

img
After
以上内容由白帽子左一翻译并整。原文:https://infosecwriteups.com/how-i-found-dom-based-xss-on-microsoft-msrc-and-how-they-fixed-it-8b71a6020c82

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。

原文始发于微信公众号(白帽子左一):挖掘 Microsoft MSRC中的DOM型 XSS

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月13日16:52:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   挖掘 Microsoft MSRC中的DOM型 XSShttp://cn-sec.com/archives/3391821.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息