通过投毒Bingbot索引挖掘必应中的存储型XSS

文化   2024-11-10 12:00   德国  

扫码领资料

获网安教程


Track安全社区投稿~  

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

简介

在本文中,我将讨论如何通过从外部网站对Bingbot进行投毒,来在Bing.com上实现持久性XSS攻击。

什么是存储型或持久性XSS?存储型攻击指的是将恶意脚本永久存储在目标服务器上,例如数据库、论坛、访问日志、评论栏等。受害者在请求这些存储的信息时会检索到恶意脚本,从而触发攻击。存储型XSS有时也称为持久性XSS或Type-II型XSS。

Bing和Bingbot是什么

img
Bing 是微软开发的一款搜索引擎,提供网页、视频、图片和地图搜索服务。其目标是通过提供有组织且相关的搜索结果,帮助用户做出明智的决策。
img
Bingbot 是由微软开发的一款网络爬虫,也称为蜘蛛或搜索引擎机器人。其主要功能是为微软的搜索引擎Bing抓取和索引网页。自2010年10月推出以来,Bingbot 通过外部和内部链接浏览网站,以发现新的网页并将现有网页的更改更新到Bing的索引中。
这个过程称为抓取,有助于Bing保持搜索结果的更新和相关性Bingbot 收集的数据被输入到Bing的搜索算法中,算法评估内容的上下文和质量,以确定其在搜索结果中的排名。

Bingbot的工作原理

在Bingbot抓取网页的过程中,它会将发现的信息发送给Bing。随后,这些页面会被加入Bing索引,并由算法分析,以便有效地纳入搜索结果,包括确定哪些网站、新闻文章、图片或视频会被纳入索引,供用户在搜索特定关键词时使用。了解更多关于Bing如何发现和索引页面的信息。
img

漏洞细节

在Bing平台上发现了一个存储型跨站脚本(XSS)漏洞。该漏洞发生在Bing从互联网检索并存储视频的标题、描述和所有者信息等数据时,由于缺乏安全的处理方式,导致恶意脚本得以保留在Bing的索引中。这一过程涉及Bingbot或Bing的网络爬虫在对这些元数据进行索引时没有进行适当的清理,致使恶意脚本被存储在Bing的索引中。

影响

恶意行为者可以在Bing的网络应用程序上下文中执行任意JavaScript代码。
可能导致的攻击包括但不限于:Cookie窃取、会话劫持、网页篡改和钓鱼攻击。
该漏洞影响所有查看感染视频详情的用户,构成严重的安全风险。

漏洞发现与分析

当用户在Bing上搜索视频时,搜索引擎处理查询并从其索引中检索相关内容。搜索结果页面会显示视频的详细信息,包括未经清理、可能包含恶意脚本的内容。应用程序将这些数据以JSON格式存储,但内容类型被设置为text/html,这可能导致持久性XSS攻击。
当用户查看或与这些受感染的视频互动时,恶意脚本会在Bing的网络应用程序上下文中执行。这是因为浏览器将数据解释为HTML,允许嵌入在JSON数据中的脚本运行。这会带来多种安全威胁,包括数据盗窃、会话劫持、钓鱼攻击和网页篡改。受感染内容的查看用户可能会因此而泄露个人信息或账户完整性受到影响。
内容类型设置不当进一步加大了风险,使攻击者更容易在Bing的网络应用程序中注入和执行脚本,绕过了依赖正确MIME类型处理的安全措施,以防止此类漏洞。

Bing上持久性XSS漏洞的发现

在我探索Bing时,发现在Bing的视频搜索中存在一个漏洞。当用户搜索视频时,Bing会显示从外部来源获取的未经过滤的视频详细信息。这允许注入恶意脚本,从而带来严重的安全风险。
回到故事的起点
某天,我使用Bing并发现,当用户在Bing图片搜索中搜索图片,而搜索结果为视频且用户尝试查看时,Bing的URL会变成:https://www.bing.com/videos/vdasync
img
在点击并查看视频详情后,我发现API返回了Bingbot从其他网站收集并存储在Bing搜索系统中的视频元数据。
img
但我注意到该URL的内容类型返回为 Content-type: text/html; charset=utf-8,而不是 application/json
img
如果我们能够控制这些元数据,而Bingbot 在没有清理或编码的情况下检索我们的数据并将其存储到Bing网站上,会发生什么呢?
正如我在上一节中提到的关于Bingbot如何工作的,Bingbot帮助Bing保持其搜索结果的更新和相关性。因此,我尝试在其他平台上创建一个视频帖子。
问题是,我不知道我的新视频需要多长时间才能出现在Bing搜索中,所以我考虑在以下网站上发布新帖子:

VK: https://vk.com/video/@club226523289
Tiktok: https://www.tiktok.com/@m3ez_xss
Instagram:https://www.instagram.com/m3ez.ss
以及其他网站

为什么我没有在YouTube上发布视频
如你所见,从https://www.bing.com/videos/vdasync的截图响应中,数据响应为JSON格式。要执行JavaScript或HTML注入,我需要确保能够使用<>(尖括号)。但在YouTube上,这是不可能的。这一限制同样适用于其他流行平台,如Vimeo和Dailymotion。
img

幸运的是,几天后,我发现我在vk.com发布的视频出现在了Bing视频搜索中,这使我能够完成我的报告和概念验证,如下所示:

概念验证 (PoC):

在一个网站上发布视频,并在所有者姓名、视频标题或描述中包含一个脚本:
例如,我通过vk.com上传了一个视频,载荷如下:

<script>prompt('Stored XSS by Supakiad S. (m3ez)',document.domain);</script>
img
发布了这个视频帖子,任何人都可以访问,包括允许Bingbot抓取我的视频元数据。
img
等待Bingbot抓取并从vk.com检索视频并保存详细信息(包括注入的XSS脚本)。
然后开始搜索“Microsoft Bing Video”网页应用程序。我使用的关键词是"m3ez" site:vk.com
img
点击视频后,URL中将出现mid参数:
img
将之前步骤中的mid参数附加到以下URL中:
https://www.bing.com/videos/vdasync?mid={mid}
导航到该URL后,XSS载荷将被触发,如下所示:
https://www.bing.com/videos/vdasync?mid=6DD18424C941635DA77F6DD18424C941635DA77F
img
以上内容由白帽子左一翻译并整。原文:https://infosecwriteups.com/persistent-xss-vulnerability-on-microsoft-bings-video-indexing-system-a46db992ac7b

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

如果你是一个网络安全爱好者,欢迎加入我的知识星球:zk安全知识星球,我们一起进步一起学习。星球不定期会分享一些前沿漏洞,每周安全面试经验、SRC实战纪实等文章分享,微信识别二维码,只需25,即可加入。



白帽子左一
零基础也能学渗透!关注我,跟我一启开启渗透测试工程师成长计划.专注分享网络安全知识技能.
 最新文章