当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(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标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

didi1.png


3. 当接收到该url后,WebActivity的initData会接收该Intent发过来并获取WebviewModel类封装后的参数,最终会调用CommonWebviewEx.loadurl对url进行加载

didi2.png


4.关键的地方来了,由于url是完全可控的,所以我们将url设置为我们自己的url,同时注意另一个关键点,滴滴打车使用了addjavascriptinterface接口,并导出了对象DidiJSBridge

didi3.png


5.我们在自己的url对应的html页面中嵌入js代码,该js代码利用该java对象DidiJSBridge进行反射调用shell,这里我简单调用了一个ls -l,当然也可以通过nc等方式进行反向shell连接我的服务器,由于是在滴滴客户端的webview内部加载的,我也具有权限读取/data/data/com.sdu.didi.psnger目录下所有文件发送给我自己的服务器,远控示例代码如下图:

didi4.png


6.intent的启动我是使用drozer发送的命令

didi5.png


漏洞证明:

下面是通过上述代码发送intent消息后客户端的显示,已经列出了shell当前的所有文件信息

didi6.png


修复方案:

1.对组件导出进行限制
2.对客户端打开的url进行控制
3.添加@JavascriptInterface注解或去除addjavascriptinterface接口

版权声明:转载请注明来源 Moonight@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2015-09-02 02:45

厂商回复:

感谢白帽子,这个分析过程非常详细,也从中感受到白帽子的细心和对技术认真态度。从技术层面上来说,白帽子通过代码分析,理顺了一条可执行的漏洞利用思路,这是亮点,但我们给出的评分不高,且可能分值有些对不住漏洞标题,简单说明下:首先,漏洞触发有先决条件,其次,漏洞影响面依赖于钓鱼命中情况,最后,这个漏洞利用收益比较有限。

最新状态:

2015-09-02:对白帽子的质疑我们上午进行了激烈的内部讨论,结论是Rank确实应该调高。但wooyun Rank没法调整,我们再联系白帽子沟通协调这个漏洞的后续处理。