漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0138397
漏洞标题:滴滴打车客户端存在重大可被安全隐患可进行远程控制或钓鱼
相关厂商:小桔科技
漏洞作者: Moonight
提交时间:2015-09-01 17:29
修复时间:2015-12-01 02:46
公开时间:2015-12-01 02:46
漏洞类型:远程代码执行
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-09-01: 细节已通知厂商并且等待厂商处理中
2015-09-02: 厂商已经确认,细节仅向厂商公开
2015-09-05: 细节向第三方安全合作伙伴开放
2015-10-27: 细节向核心白帽子及相关领域专家公开
2015-11-06: 细节向普通白帽子公开
2015-11-16: 细节向实习白帽子公开
2015-12-01: 细节向公众公开
简要描述:
滴滴打车客户端可被攻击者进行远程控制,甚至获取滴滴打车客户端内所有机密信息。高版本系统可以进行钓鱼。
详细说明:
需要注意的是该漏洞利用方法是在非root机器上,只需发送一个intent消息便可以控制滴滴打车客户端,也可以发送指定的url链接对滴滴打车客户端进行钓鱼
1. 滴滴打车客户端存在导出组件com.didi.game.activity.GameActivity
2. 该组件会接收extra参数url,注意该参数是攻击者完全可控的,可以发送任意的url
3. 当接收到该url后,WebActivity的initData会接收该Intent发过来并获取WebviewModel类封装后的参数,最终会调用CommonWebviewEx.loadurl对url进行加载
4.关键的地方来了,由于url是完全可控的,所以我们将url设置为我们自己的url,同时注意另一个关键点,滴滴打车使用了addjavascriptinterface接口,并导出了对象DidiJSBridge
5.我们在自己的url对应的html页面中嵌入js代码,该js代码利用该java对象DidiJSBridge进行反射调用shell,这里我简单调用了一个ls -l,当然也可以通过nc等方式进行反向shell连接我的服务器,由于是在滴滴客户端的webview内部加载的,我也具有权限读取/data/data/com.sdu.didi.psnger目录下所有文件发送给我自己的服务器,远控示例代码如下图:
6.intent的启动我是使用drozer发送的命令
漏洞证明:
修复方案:
1.对组件导出进行限制
2.对客户端打开的url进行控制
3.添加@JavascriptInterface注解或去除addjavascriptinterface接口
版权声明:转载请注明来源 Moonight@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:5
确认时间:2015-09-02 02:45
厂商回复:
感谢白帽子,这个分析过程非常详细,也从中感受到白帽子的细心和对技术认真态度。从技术层面上来说,白帽子通过代码分析,理顺了一条可执行的漏洞利用思路,这是亮点,但我们给出的评分不高,且可能分值有些对不住漏洞标题,简单说明下:首先,漏洞触发有先决条件,其次,漏洞影响面依赖于钓鱼命中情况,最后,这个漏洞利用收益比较有限。
最新状态:
2015-09-02:对白帽子的质疑我们上午进行了激烈的内部讨论,结论是Rank确实应该调高。但wooyun Rank没法调整,我们再联系白帽子沟通协调这个漏洞的后续处理。