如何在Microsoft Translator中越权删除1.3万个项目 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

如何在Microsoft Translator中越权删除1.3万个项目

41yf1sh 漏洞 2018-07-26 10:58:19
278352
收藏

导语:微软出现高危漏洞,借助该漏洞,攻击者可以删除全部Microsoft Hub Translator项目,这些项目共有1.3万个以上。由于目前漏洞已经修复,因此本文将对漏洞细节做重点分析。

概述

有一段时间,我致力于寻找微软Web服务中的漏洞,由于微软拥有庞大的在线基础设施,因此我认为漏洞的发现并不困难。在浏览他们的在线服务时,其中的Microsoft Hub Translator翻译服务引起了我的注意。

根据官方介绍,Microsoft Translator Hub能够使企业和个人构建、训练并部署一套定制化的自动语言翻译系统。

于是,我注册了该系统的账户,并开始寻找漏洞。最终,我成功发现了一个高危漏洞,借助该漏洞,攻击者可以删除全部Microsoft Hub Translator项目,这些项目共有1.3万个以上。由于目前漏洞已经修复,因此本文将对漏洞细节做重点分析。

技术细节

Microsoft Hub Translator允许用户创建自定义的自动语言翻译系统。因此,我注册并创建了一个系统,显然该系统只是为了寻找漏洞,但我并不了解该系统实际上的全部功能。在尝试过程中,我创建了一个名为“huntingbugs”的项目。

1.jpg

如大家所见,该项目有“编辑”和“删除”功能。如果用户点击“删除”,就会删除该项目,这一操作非常简单。在这时,我启动了Burp Suite并开始拦截HTTP请求。下面是“删除”的HTTP请求。

“删除项目”操作的HTTP请求:

  POST /Projects/RemoveProject?projectId=12839 HTTP/1.1
  Host: hub.microsofttranslator.com
  User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  Accept-Language: en-US,en;q=0.5
  Accept-Encoding: gzip, deflate
  Referer: https://hub.microsofttranslator.com/Projects/Index
  Cookie: RPSAuth=FABKARSt1lMxfQ39EcbVsLWT8hLbEL12RANmAAAEgAAACI6Hs92zqyRlCAGce1EqwSJmjJe21nXVHarrEJ9ROzjj21XAthl%2BUUjzX3XR5JeCB8WI0oMdmwQhyn30OIiubBYaeLeg21nqXT06UwzczFIDAjoqU%2BQpCg9SWaLSVSC3aKMZPT92NVjgySbIV8YYxPA4XMVMbU04mvNKv8v5vaGVMUNBtjHldxFqKYEWqI5P0UZetmtagzOK%2Bf2CRFbgb3Gak68RN6Mjj/xXt2ovC8pxYn2qb9MqSNxHC4Y3bA8n6vyZoJzM6Uu0zZpTUPIhv5L1PyHOO3FdXFELqttx2Yd2LEJNvxjkmON9KcYXIR%2BlUsHfimE901msD9XWB1SLG3zvm06oacncf1WGrdjEdnA2lOgUALlEhQzxHbGm6TryDMpq%2BbrTU/wG; RPSSecAuth=FABKARSt1lMxfQ39EcbVsLWT8hLbEL12RANmAAAEgAAACKDdutui3VqgCAE5DVaipcaF6WaWT%2B0L0ppLMAd7kigpYcQ89xhwiDiYN9yNhyVf86EW6KiiOs7FY2PCTFH2rM/uH3LYLIhTEYturZ5vOjVPBUP6QqqAtP9rvUCtv9%2Bakv9WNwY4gpZzQ4SXjtVpSMqyrV3RIN/emocWtNDmU5BPrnAZk50oAnoSf6aJX5IjaNcXc61Tv3BSO6m3GKLevxWnpSoyLzIajETwMSBe84fL5fWyUI0r3jXq7rW/rUh/Go/R4OzS2nL1okl512yFcZFZFXdsEq6k5M0lKP0L9ZTVtaW0WiZKXKgY%2B%2BPPtImjI5whKX2U4wbqgPiD1rxXwDogAlcrLKu6YGEHfVg01iG0GQ0UAF%2BhVQ4CptuuRm8tI8XE9zmo3%2Bhr; ANON=A=365DFF2DD45617971705DA33FFFFFFFF&E=1089&W=1; NAP=V=1.9&E=102f&C=h8ZS17Xmf0z4Q2T9Dj26e_Pijaca9G00g1PJCcXaI36L1P7jWHYOFQ&W=1; mstcid=[RemovedEmail]
  Connection: keep-alive
  Content-Type: application/x-www-form-urlencoded
   Content-Length: 0

我们看到,在URL中的POST请求并没有内容和参数,这让人觉得有点奇怪。上述请求中的“projectid”参数是数据库中单个项目的ID,在我们的尝试中这一参数为“12839”。通过观察上面的HTTP请求,我们发现一个简单的删除项目操作可能是这样的:

    Delete project
    FROM projects 
       WHERE projectid=12839;

在转发HTTP请求之后,我们的项目“12839”被删除,这时没有任何异常。

2.jpg

如果我们查看请求,首先会注意到没有CSRF保护。这样一来,就很容易发生CSRF攻击。简而言之,CSRF漏洞允许攻击者伪装成合法登录的用户,并以他们的权限执行操作。我们考虑以下场景:

1、一位合法的用户已经登录;

2、攻击者在页面中包含一个URL(可以通过img标签、iframe等很多种方式):http://hub.microsofttranslator.com/Projects/RemoveProject?projectId=12839

3、被攻击用户访问该页面,上述请求将从他们的浏览器中发出;

4、要有效执行这一攻击,必须首先知道被攻击用户的ProjectID编号;

5、由于该网站没有防范CSRF的Token这样的CSRF防护措施,因此会导致该项目被删除;

6、即使这一网站有防范CSRF的措施,也可以采用CSRF Token绕过的方式。

越权删除项目

接下来,我们再看看删除项目的HTTP请求。我们尝试着对projectID的值进行修改,并提交请求。为了测试这一行为,我又注册了另一个账户,并且从不同的浏览器登录,创建了两个新项目。

3.jpg

回到Burp Suite,并开始使用projectID参数值进行模糊测试。我将ID参数由实际项目编号修改为第二个账户中创建的项目的ID值,并发送请求刷新页面。

4.jpg

我在HTTP请求中,通过修改projectID成功实现了越权删除项目。从技术上来说,这一漏洞属于间接对象引用。现在,我只需要循环尝试0到13000(最后一个项目)的值,就可以从数据库中删除所有项目。为了防范这一漏洞,需要在这里进行严格校验,判断用户所请求的项目是否属于其本人创建,然而微软却忽略了这一点。

提交漏洞及相关反馈

我通过微软的安全确认计划,报告了这一漏洞。他们最初回应如下。

5.jpg

并且,将我加入到了微软安全研究者名人堂中(Microsoft Hall of fame for Security Researchers)。

6.jpg

与此前微软安全确认计划需要的漫长时间不同,这一次从漏洞提交到修复,只花费了两周左右的时间,可以说是非常高效了。

  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务