本文中,孟加拉国安全研究者Yeasir Arafat讲述了他对大疆无人机公司的一次漏洞测试,其通过漏洞利用,最终可获取到大疆公司包括用户IP在内的一些用户注册信息。漏洞虽小,也值得向我们这些小白分享学习,大神请绕路…..
前期踩点
一个月前,我知道大疆公司运行有漏洞赏金项目之后,我就在上面提交了几个漏洞,但最终评定结果好像都是N/A,这貌似是我不清楚他们的漏洞评定条件导致的。之后,我的一个朋友告诉我了大疆的一些具体的漏洞提交条件,我眼前一亮,哇,漏洞范围还挺广的,其中就包括大疆公司的主站*.dji.com。
首先,我就从大疆主站入手,但一无所获。但我也不气馁,过后一天,我用在线工具“dnsdumpster.com”对其域名进行了深入探测,效果还不错,发现了很多如下有意思的域名。由于保密策略,抱歉在此我不能透露我发现漏洞的具体域名。
有了这些域名,我就从大量.dji.com中挑选了一个作为测试目标。在几个小时的折腾测试中,我还真发现了多个有效漏洞。测试开始,我就告诉自己要沉住气,要尝试深入挖掘一番。经过探测,我发现了该域名的一个子域名.*.dji.com。
一开始,你会认为这只是一个有趣的域名,可能不会有太多发现成果。但刚好相反,仔细分析,我发现该子域名站点使用了亚马逊的“cloudfront”服务,并设置有保证网站安全的内容安全策略(CSP)。由于该域名存在一些.php页面和tid=1234类似的端点,我打算试试SQL注入,或看看是否能发现一些的数据库错误。
但遗憾的是,我总不能绕过网站的Modsecuirty策略,而且其mod= pamaeter 形式下也不存在任何SQL注入漏洞。以下为其Modsecuirty策略:
偶然发现
我也不死心,继续研究,继而发现了两个用户之间的消息发送端,为了防止CSRF攻击,该发送端设置了表单密钥保护。
我通过利用BurpSuite进行请求抓包,发现了这个消息发送端中存在一些琐碎的参数。我没对数据包实施更改或添加任何SQL注入命令,只是简单地点击“go”按钮发送请求,在响应栏中我发现,存在一些类似于
我当时也不知道这是什么东东,于是用“xml root cdata是什么”快速Google了一下才知道,#CDATA数据段表示不应由XML解析器解析的文本数据。
一会之后,我想到了在请求中加入了op=showmsg‘来看看有什么响应,非常偶然,响应以XML形式的root标签段页面返回了一些信息,如下图所示:
漏洞测试
通常来说,会为不同用户分配一个不同的“uid”参数,这种UID参数应用在不同服务中以阐明不同独特变量,这里的UID参数则用来声明userID信息。
我在想,如果我添加一个amp或XML root路径的do参数,再加上我自己的UID会是什么情况呢?于是,最终更改的路径是这样:
https://*.*.dji.com/mod.php;uid=1234&do=index&view=admin'
'相当于一个注入命令’,运行后,我能看到自己的注册和登录IP,而且,把消息发送端中涉及的另外一方账户UID替换掉我的UID之后,就能看到对方的注册和登录IP信息,另外,还能获取到对方的用户空间大小、信用值、积分等网站注册信息。注意:如果不加'在上述链接之后,响应返回的是一个空白页面,但如果加了'之后,才会返回包括IP和其它数据的XML信息页面。
最终,大疆公司的漏洞处理进程也相当快,我也获取了大疆方面奖励的漏洞赏金。
TIPs:
前期踩点识别工作一定要做充分,有助于后续的漏洞发现; 了解网站WEB应用的运行机制,通过其行为分析,可能会发现一些大漏洞; 尽可能地手工测试所有WEB服务端,光靠扫描器是深入挖掘不了太多有用信息的。