现代发展和基础设施管理实践快速发展并不断发展。在创新和扩展的竞争中,正在部署新资产并将其快速暴露于公共Internet中,并且现有资产也在不断发展。
与这种不断发展的攻击面保持同步非常困难,更不用说保护那些应用程序和系统了。传统的时间点和静态安全方法根本无法跟上,在这种动态环境中主动管理威胁似乎是不可能完成的任务。
解决此问题的唯一方法是将方法转向安全评估,使其连续且具有资产意识。当使用我们的Continuous Security Platform监视大型攻击面时,我们经常发现对基础结构的更改会导致新的或未发现的漏洞。
当我们正在调查我们的持续安全检测平台发现的一个晦涩的子域时,就是这种情况exacttarget-web-hook.uber.com。
在相当长的一段时间内,该子域返回了一个由Express.js Web服务器生成的普通而乏味的“找不到”错误。
但是,突然,有一个子域以一种似乎是Uber消息个性化系统的全面内部测试平台的方式做出了回应:
在https://exacttarget-web-hook.uber.com/上发现的CS表格
乍一看,该应用程序看起来像一个API控制台,用于测试包含用户个性化设置的文本消息。
我们试图将API控制台与提供的“测试联系人密钥”一起使用,但是未能使API正常工作。经过一番调查,我们确定这是因为该contactKey参数需要是经过身份验证的帐户的UUID,而不是API控制台页面上提供的参数。我们通过https://riders.uber.com/profile登录后的HTML源提取了帐户的UUID 。
将contactKey替换为我们的Uber帐户的UUID之后,我们就可以向preview端点发送API请求:
如本文章前面所示,API控制台的屏幕快照包含preview 端点的示例“消息” :
通过研究语法并从子域名建立连接exacttarget-web-hook,我们意识到上面的代码实际上是AMPScript。
Salesforce的Marketing Cloud提供AMPScript作为脚本语言,可以将其嵌入HTML电子邮件,文本电子邮件,登录页面和SMS消息中,以控制向单个消费者显示的内容。AMPScript由ExactTarget开发,然后于2013年被Salesforce收购。
使用API控制台中提供的示例AMPScript失败,因此我们开始研究是否可以真正评估AMPScript。我们很快发现HTTPGet函数将发送HTTP GET请求并返回响应内容:
运行AMPScript查询:%%=HTTPGet(‘https://ipinfo.io’)=%%
太好了!我们可以计算任意AMPScript!然而,我们通过HTTPGet函数发送的请求并不是来自Uber拥有的服务器,而是来自AS22606 ExactTarget,Inc.,如上面的屏幕截图所示。
为了演示此错误的影响,我们从名为的数据扩展名中提取了用户数据driver_partners。数据扩展是可以通过AMPScript的数据扩展功能访问的数据库表。
通过阅读有关LookupRows函数的AMPScript文档,我们能够制作出能够执行以下操作的AMPScript:
最终的AMPScript:
当将此AMPScript发送到preview端点时,响应中包含UUID,加入日期,电子邮件地址和每个用户的名字为的名字Shubs。
到preview端点的HTTP请求:
响应(已混淆UUID和电子邮件):
从Uber返回的名为“ Shubs”的所有用户的数据
如上所示,Shubs返回了许多具有名字的用户的详细信息(我编辑了屏幕截图以仅显示我的测试帐户)。攻击者可能制作了AMPScript来提取大量数据,或者通过名字来搜索Uber数据中的特定人员以提取其UUID和电子邮件地址。
关注:Hunter网络安全 获取更多资讯
网站:bbs.kylzrv.com
CTF团队:Hunter网络安全
文章:Assetnote
排版:Hunter-匿名者