原文:http://www.kamilonurozkaleli.com/posts/rce-on-starbucks-singapore-and-more/
在星巴克新加坡网络应用程序中发现严重漏洞后,我想更深入地研究并开始研究com.starbucks.singapore Android应用程序。不幸的是,我没有发现移动应用程序中的任何弱点,因此我决定专注于与应用程序交互的应用程序服务器。移动应用程序主要与服务器上的REST API
进行交互,但是我注意到,在某些操作中,它正在与扩展名为.aspx
的端点通信。我在这里没有发现端点的任何弱点,并尝试通过目录扫描找到更多的端点。我在发现的端点上没有发现任何弱点,并休了几周的时间。
之后我发现应用服务器是运行在IIS上的,并尝试用自动化工具IIS Tilde发现更多的端点。
DOWNLO~1.ASH
EMAIL-~1.ASH
IMAGEU~1.ASH
MAILIN~1.ASH
该枚举扫描程序工具利用了一个IIS短文件名漏洞(Microsoft将其描述为一项功能),可以发现文件名的前6个字符和扩展名的前3个字符。基于此信息,我尝试查找所有文件名并迅速找到其中的一些。
download.ashx
email-bounce.ashx
不幸的是,我无法将这些端点用于任何目的,而只专注于IMAGEU〜1.ASH
端点。字母U是什么意思,我想知道它是否可以上传?我开始使用ffuf工具以imageuploadFUZZ.ashx
的形式进行扫描,发现该端点是imageuploadhandler.ashx
。查看端点的名称,可以理解它是用来上传图像文件的。但是这里有一些问题。未经授权的用户可以访问此端点吗?发送请求时此终结点可接受的格式是什么?我可以上传图像文件以外的任何文件吗?如果可以上传文件,访问文件的完整路径是什么?我可以运行该文件吗?
为了得到这些问题的答案,我随机的向该端点发送了GET/POST请求,而端点仅仅返回了200 OK。我没有收到任何错误代码或错误/成功消息。我不确定此端点是否正常工作。在这一点上,让我们从开发人员的角度考虑,您有一个用于上传文件的端点,如何从前端向该端点发送请求?从HTML表单中或通过带有XMLHttpRequest的javascript进行。我开始浏览javascript文件,发现一个名为ajaxfileupload.js
的文件。

于是构造了一个仅包含文本上传.aspx文件的请求包,并且已成功上传。端点正在将文件名转换为UUID格式,并返回uuid + extension作为响应。可以在“/api”目录中找到上载的文件。


我向Hackerone报告了此漏洞,并请求进一步验证远程代码执行。在获得允许后我上传了一个带有执行简单命令的脚本用于输出whoami命令

新加坡的应用程序服务器上执行whoami竟然返回iis apppool\cards.starbucks.com.hk,香港代表香港,但我们位于新加坡域。最后发现其他地区如香港,越南,泰国,马来西亚,柬埔寨等地区使用相同的应用程序服务器。这意味着我们可以造成更大的危害。
译者按:
作者通过长时间的测试信息收集,将中心从应用程序转到IIS应用程序服务器上。利用IIS短文件名漏洞发现IMAGEU~1.ASH
,并经验老道的猜到这个U是upload的意思并通过fuff类fuzz工具找到完整的端点名称。最后细心的从JS中找到端点的请求方法成功上传脚本实现RCE。
本文迁移自知识星球“火线Zone”