对于现在的互联网大公司来说,不断会有大量新资产和基础设施部署在互联网上,同时也有不少旧资产下架。而伴随着这种资产和设施的不停变动,传统的安全管理方法似乎不再好用。我们经常发现,随着资产设施的变化,同一个位置可能会出现以前从未发现的漏洞。
当我们在测试一个uber的子域时,就发现了这种情况。这个子域是由Uber漏洞平台的Assetnote安全团队发现的,子域为exacttarget-web-hook.uber.com
。
在以前相当长的时间内,如果你访问它,只会返回了一个由Express.js的Web服务生成的“Not Found”错误。
然而,出乎意料的是,在某一天,这个子域突然返回了一个系统页面,似乎是Uber信息个性化系统的一个全面内部测试平台:
乍一看,该页面像是一个API控制台,用于测试一些包含用户个性化设置的文本消息。
我们尝试使用上图中“Test Contact Key”这个测试项,但未能使API正常工作。经过研究,我们认为contactKey
这个参数应该是一个经过身份验证的帐户的UUID,而不是API控制台上提供的UUID。于是,我们登录了uber,从https://riders.uber.com/profile
的页面源码中提取了帐户的UUID。
将上一步获得的UUID填入参数contactKey
,然后我们成功发送了api请求到预览
处:
正如上面的图片所示,你可以看到一个预览
的截图:通过对语法的研究,再结合子域名exacttarget-web-hook
的含义,我们发现上述页面左下角的代码实际上是AMPsc ript。
AMPsc ript作为一种脚本语言,可以嵌入HTML电子邮件、文本电子邮件、登录页面和短消息中,控制向不同消费者显示的内容。AMPsc ript由ExactTarget开发,而后于2013年被Salesforce收购。
使用API控制台中提供示例AMPsc ript会显示失败,因此我们开始研究使用方法,并很快发送了一个http的get请求,如下图,其中AMPsc ript的脚本是%%=HTTPGet('https://ipinfo.io')=%%
:
很好!我们似乎能够使用任意的AMPsc ript!但是,我们发送的get请求并不是来自Uber的服务器,它实际上是来自AS22606 ExactTarget,Inc.
的,如上面的图片所示。
为了展示这个漏洞,我们从名为driver_partners
的数据扩展中提取了用户数据。数据扩展指的是可以被AMPsc ript的数据扩展函数所访问的数据库表。
通过阅读有关LookupRows
函数的AMPsc ript文档,我们能够创建一个AMPsc ript脚本呢,它可以执行以下操作:
在driver_partners
数据扩展中搜索firstname
等于Shubs
的所有数据行。
将查询结果存储到数组中。
迭代数组并打印。
最终,当这个AMPsc ript被发送到预览
端点时,你可以在响应中看到UUID、加入日期、电子邮件地址以及每个姓为Shubs的用户的名字。
请求和响应:
最终如上图所示,我收到了许多名为Shub的用户的详细信息(我已经修改了屏幕截图,只显示了我的测试帐户)。至此,攻击者可以利用AMPsc ript提取大量用户数据,或者通过名字搜索Uber用户中的特定人员,并获得其UUID和电子邮件地址。
我在发现这个漏洞时,正好赶上HackerOne做活动,我们的漏洞报告成为在活动期间“最具影响力的报告”,并获得了20000美元的额外奖金,最后这个漏洞给我们带来了23000美元的收益。
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场 来源:https://blog.assetnote.io/bug-bounty/2019/01/14/gaining-access-to-ubers-user-data-through-ampsc ript-evaluation/
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.