看我如何发现微软Microsoft Translator Hub服务高危漏洞

因为微软公司部署有很多在线网站和服务,对漏洞挖掘者来说具备较广的攻击测试面,发现漏洞入选微软致谢榜的难度相对不大,所以我就把大把时间耗在了微软漏洞发现上。在我分析微软在线应用服务过程中,微软的机器翻译服务Microsoft Translator Hub引起了我的注意,最终我发现Microsoft Translator Hub存在一个不安全的间接对象引用漏洞,利用该漏洞可以删除用户创建的多达13000多个翻译项目。

Microsoft Translator Hub :微软机器翻译服务的延伸,它是充分集成在文本翻译API 并和 Collaborative Translation Framework (CTF)的配合使用。使用建立在Hub上的自定义翻译系统,可以安全使用你的组织工作流,通过微软翻译API,可实现跨越任意数量的产品和服务:从微软、第三方或你自己的自定义开发。微软构建该平台的原因出于2010 年海地地震时救援人员遇到的语言障碍,当时没有一款机器翻译支持海地当地语言。Microsoft Translator Hub重要的是能够构建、训练独特的机器翻译系统,甚至能保护濒临灭绝的小语种。

漏洞细节

Microsoft Translator Hub在线服务允许用户创建自定义的机器语言翻译项目,为了发现漏洞,尽管没完全了解其中的功能特征,我注册登录后就随手创建了一个名为 “huntingbugs” 的翻译项目。

从上图中可以看到,项目属性中允许 “编辑” 和 “删除”操作,如果你点击 “删除”按钮,它就会立马删除你创建的项目,其它也没啥新功能。接下来,我就启动了BurpSuite准备拦截HTTP请求通信,以下即为“删除”操作的网络请求包:

POST /Projects/RemoveProject?projectId=12839 HTTP/1.1Host: hub.microsofttranslator.comUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateReferer: https://hub.microsofttranslator.com/Projects/IndexCookie: 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-aliveContent-Type: application/x-www-form-urlencodedContent-Length: 0

可以看到,POST请求包中没有任何内容,而且其URL中涉及的参数“projectid”是不是看着有点异样,貌似是来自数据库中的项目ID号,这里 projectid 为 12839。所以按照数据库思维来说,以上这个POST的删除请求可以转化为以下这样的数据库命令:

Delete project FROM projects WHERE projectid=12839;

转发通过这个POST的HTTP请求之后,我们ID号为“12839”的项目就自然被删除了。

CSRF 攻击可能

在这里,我想可以针对这个请求包做点手脚。很明显,能发现其服务端没有CSRF保护,那么可能会存在CSRF攻击。也就是说,攻击者会利用这种环境下的CSRF漏洞去伪造合法用户身份,执行登录和其它操作。利用情形如下:

合法用户处于登录状态; 攻击者在图片标记、iframe框架等其它属性的网页中嵌入以下删除请求的链接: http://hub.microsofttranslator.com/Projects/RemoveProject?projectId=12839 作为受害者的合法用户访问到包含以上请求链接的网页后,删除请求便会发出; 唯一需要知道的就是合法用户自己创建的 ProjectID 号; 主要原因在于在服务端没有设置 antiCSRF token手段来防止CSRF攻击; 某些情况下,即使设置有 antiCSRF token手段,也可能被绕过。

最严重的后果

我们再看看上面那个项目删除的POST请求,如果我们对 projectID 进行一些 fuzz 操作,更改为其它项目号会如何呢?于是乎,我又另外创建了一个Microsoft Translator Hub账号,以该账号用其它浏览器登录之后,在其中创建了两个我自己的翻译项目。

接着,我再次启动BurpSuite,希望对projectID做一些fuzz和其它操作。在第一次执行的“删除”操作网络请求包中,我把其中的projectID参数值,替换成了我第二个Microsoft Translator Hub账号中创建的项目projectID参数值,之后转发请求并刷新页面。竟然发现我第二个Microsoft Translator Hub账号中projectID参数值对应的项目被悄无声息地删除了!

严格意义上来说,这种漏洞应该称为不安全的间接对象引用)(Indirect Object Reference),该漏洞的影响也就是说:我最近创建项目的projectID值为12839,如果我把projectID参数进行 0 到 13000的遍历,那么也就能针对微软数据库中,把将近13000多个的Microsoft Translator Hub用户创建项目删除!

简单来说,可用一些简单的检测机制来避免该漏洞,比如针对项目请求作同一用户检查,或者把用户创建的项目和用户作关联检查,等等。但是微软却遗漏掉了……

完美结局

我把该漏洞上报给MSRC之后,他们给我的回应如下:

之后,微软快速修复了该漏洞,并最终微软把我列入了漏洞致谢榜:

*参考来源:haiderm,clouds 编译,转载请注明来自 FreeBuf.COM

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-08-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android群英传

红烧嗨鸟

11430
来自专栏服务端技术杂谈

快的打车架构实践

1.客户端与服务端通信会遇到哪些问题? 2.怎样基于Storm和HBase打造实时监控平台? 3.怎样对Web系统进行分布式改造? 快的打车从2013年年底到2...

38840
来自专栏北京马哥教育

Linux运维跳槽必备的40道面试精华题

过一次年,结婚、存款、父母养老,一系列向钱看的事都在碾压我们本来还挺简单的神经,但难过没有出路,唯有找到好的方法和事业方向,才能实现一步一个脚印的逆袭。

1.1K40
来自专栏三杯水

纯开源产品打造初创公司运维体系

名称:CentOS 官网:https://www.centos.org/ 简介:CentOS(Community Enterprise Operating ...

27620
来自专栏WeTest质量开放平台团队的专栏

分布式系统设计的求生之路

分布式系统理念渐渐成为了后台架构技术的重要选择,本文介绍了作者在手游领域对分布式系统进行的种种尝试,并在尝试中制定了对服务的定义、整体框架的构建以及服务内部拆分...

15220
来自专栏FreeBuf

基于Casbin的Docker权限管理访问控制插件

Docker是目前主流的一种容器技术。为了解决多用户同时访问Docker时产生的安全问题,Docker设计了访问控制插件(Authorization Plugi...

22640
来自专栏沃趣科技

沃趣科技火线救援某公安系统核心业务数据

求助电话 只剩下键盘敲打声的办公室,被一个突如其来的电话打破了宁静。电话那头,是某公安客户的紧急求助。 案发现场 其核心数据库,由于存储突然断电,导致数据库实例...

36570
来自专栏黑白安全

10条加速Ubuntu Linux的杀手级技巧

一些实际的加速 Ubuntu Linux 的技巧。 这里的技巧对于大多数版本的 Ubuntu 是有效的,也可以应用于 Linux Mint 以及其他的基于 Ub...

16330
来自专栏运维

纯开源产品打造初创公司运维体系

名称:CentOS 官网:https://www.centos.org/ 简介:CentOS(Community Enterprise Operating Sy...

34220
来自专栏程序员互动联盟

如何写一个自己的安卓应用?

现在智能手机占据了大部分人的大部分生活。公交车,地铁,路边,处处都能看到低头族。就连大一军训都能看到拿着手机不放的。 为什么出现这种现象?手机应用,现在的移动应...

53590

扫码关注云+社区

领取腾讯云代金券