本文中,作者从Facebook子域名中部署的微策略(MicroStrategy)应用服务入手,通过Burp Collaborator构造,利用深入深入再深入的挖掘,发扬持之以恒的精神,发现了敏感信息泄露和SSRF漏洞,收获了$31500($1000+$30000+$500)的漏洞奖金。一起来看看。
漏洞端倪Facebook是流行的社交媒体平台,我个人喜欢测试Facebook漏洞,这不,最近我发现了Facebook的子域名https://m-nexus.thefacebook.com/,访问它后会自动跳转到https://m-nexus.thefacebook.com/servlet/mstrWebAdmin,如下图所示:
从网页中的响应内容,我马上对其中的关键字mstrWebAdmin进行了谷歌查找,发现它是基于商务智能公司微策略(MicroStrategy)工作集成的一个网站服务:
我还从一篇博文中找到了确定线索:
接着,我从MicroStrategy的官方配置文档中发现,有两个可以公开访问的端点:
结合MicroStrategy官方配置文档深入研究,我发现了一个默认为HTTP基本认证配置的端点:https://m-nexus.thefacebook.com/servlet/mstrWeb,以及另一个无需身份验证的端点:https://m-nexus.thefacebook.com/servlet/taskProc
在后一个无需验证的端点中,它会用“taskId”等参数来执行数据收集和内容生成。我用Burp的Intruder模块对其中的任务参数进行了枚举,发现其每一个任务请求都会执行一个有效的会话参数验证,唯独在处理“taskId=shortURL”时无需会话参数验证,因此,攻击者可以利用这条线索无需任何身份验证访问到facebook的该类服务。
但是,在该操作请求下,我尝试着把MicroStrategy官方配置文档中涉及的参数都fuzz了一遍,也没有从请求响应中返回有用的信息,大多数时候它返回的都是状态码为500的错误消息“The source URL is not valid”,为此,我就尝试了把MicroStrategy的一些SDK源码下载下来打算进行一个源码分析。以下是一个将近400M的源码,其中包含了一些脚本和jar文件。
在 jd-gui 帮助下,我对它进行了反编译。我查找的目标是无需会话参数验证,处理short URL的shortURL请求任务,最终,我在其中一个jar文件中发现了相关调用说明:
现在我要分析的是,为什么每次该任务请求返回的都是错误消息。另外,从代码中可以看出,“shortURL”请求中涉及的srcURL参数值必须是经“https://tinyurl.com/" 转化后的短地址,只有通过该短地址,任务才能执行数据导致或读取。如下: