京东手机APP下个单彻底丧失账号控制权(需中间人环境)

admin 2017年4月10日21:42:49评论844 views字数 227阅读0分45秒阅读模式
摘要

2016-03-30: 细节已通知厂商并且等待厂商处理中
2016-03-31: 厂商已经确认,细节仅向厂商公开
2016-04-10: 细节向核心白帽子及相关领域专家公开
2016-04-20: 细节向普通白帽子公开
2016-04-30: 细节向实习白帽子公开
2016-05-15: 细节向公众公开

漏洞概要 关注数(48) 关注此漏洞

缺陷编号: WooYun-2016-190773

漏洞标题: 京东手机APP下个单彻底丧失账号控制权(需中间人环境)

相关厂商: 京东商城

漏洞作者: 猎豹移动安全中心

提交时间: 2016-03-30 19:37

公开时间: 2016-05-15 18:50

漏洞类型: 设计缺陷/逻辑错误

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 手机应用 支付 购物 金融

19人收藏


漏洞详情

披露状态:

2016-03-30: 细节已通知厂商并且等待厂商处理中
2016-03-31: 厂商已经确认,细节仅向厂商公开
2016-04-10: 细节向核心白帽子及相关领域专家公开
2016-04-20: 细节向普通白帽子公开
2016-04-30: 细节向实习白帽子公开
2016-05-15: 细节向公众公开

简要描述:

使用京东购物App下单,可能被黑客攻击,京东账户的登录密码、绑定手机和支付密码等都可以被攻击者更换,从而彻底丧失账户的控制权。

详细说明:

1. 京东部分连接使用了https,但是未校验证书,造成可以中间人攻击。

2. 京东在https中使用了明文传输支付密码

3. 当用户使用一次全球购之后,用户信息会绑定身份证号,虽然加密了,但是可以破解

4. 在用户支付页面源码内隐藏了用户完整的银行卡号,而不是前后几位。

综合上述四个条件,利用京东更改绑定手机的逻辑,可以更改绑定手机。

对于开通了金融相关的用户,更换绑定手机需要:1.支付密码。 2.身份证号码。 3.银行卡号码。

对于未开通金融的用户,只需要支付密码就可以更改绑定手机。

利用上述条件,加上网络监听盗取token,可以打开用户更换绑定手机界面进行更改绑定手机。

更改绑定手机后,可以利用新绑定的手机修改账号密码,直接登录账号。

登录账号后,可以修改支付密码和白条绑定电话(如果有的话)

至此,京东账号彻底拿下。除了白条还款人是原来用户外,其他所有皆不属于原用户。而且京东没有任何找回账号途径,只能尝试联系京东厂商重置账号。

=========================补充细节================================

在Android中,开发者可以自由实现SSL通信,然而很多企业出于业务性能的考虑以及安全意识的欠缺,软件在实现https通信时忽略了证书校验或证书校验不严格,致使用户的敏感数据在传输过程中有可能遭受中间人攻击而泄露。

Android中SSL通信的不安全实现一般来源于下面5处:

1.自定义TrustManager,接管了系统原有的证书校验,checkServerTrusted()函数却是空实现。

2.自定义hostnameVerifier,verify()函数却总是返回true。

3.使用AllowAllHostnameVerifier进行实例化,信任任意的hostname。

4.使用不安全的SSLSocketFactory来禁用所有的SSL安全校验。

5.WebView遇到证书错误直接使用proceed()函数忽略继续。

我们对京东金融、手机京东和京东钱包最新版本进行了安全审计,其中京东金融和手机京东存在严重的安全问题。

京东金融:

漏洞代码有6处,分三类:

一类是自定义TrustManager,checkServerTrusted()函数却是空实现。两处分别位于:

com.loopj.android.http.MySSLSocketFactory$1

com.loopj.android.http.SSLSocketFactoryEx$1

另一类是使用AllowAllHostnameVerifier实例化,信任任意hostname。两处分别位于:

com.loopj.android.http.AsyncHttpClient->getDefaultSchemeRegistry

com.loopj.android.http.MySSLSocketFactory->getFixedSocketFactory

第三类是WebView忽略证书错误漏洞。两处分别位于:

com.jd.jrapp.widget.JDWebView$1->onReceivedSslError

com.jd.jrapp.activity.web.WebActivity$MyJDWebViewClient-> onReceivedSslError

手机京东:

漏洞代码有一处,位于:com.jd.lib.now.Step3Activity->d函数中。

该函数使用了AllowAllHostnameVerifier进行实例化,使用https的请求全部忽略主机名校验。

针对手机京东的攻击流程分析:

演示视频:

http://v.youku.com/v_show/id_XMTUxNzI1NDQ2NA==.html 密码:CheetahMobile

攻击环境:

在无线局域网中,用户使用白条进行一次购物下单,使用ARP欺骗完成中间人攻击。

攻击思路:

由于漏洞的存在,所有通过https传输的敏感数据都可以被中间人截获。攻击者需要拿到用户的支付密码、历史收件人、sid、身份证号、银行卡号,便可以修改绑定的手机号和登录密码。

攻击细节:

1.https通道传输的支付密码是明文的,而http通道仅仅对支付密码做了一次简单的md5。

京东手机APP下个单彻底丧失账号控制权(需中间人环境)

2.历史收件人、身份证号可以通过一次下单即可拿到。如下图右侧的响应包中,identityCard便是加密后的身份证号,通过逆向手机京东APP,很容易便可提取解密算法。Name字段便是收件人。

相关请求http://order.m.jd.com/client.action?functionId=getAddressByPin

京东手机APP下个单彻底丧失账号控制权(需中间人环境)

3.sid和银行卡号

sid可以很容易在cookie中获取

利用银行卡支付接口,替换获取的sid,便可以打开如下页面。点击银行卡,更新卡信息,编辑,会出现更新银行卡信息页面。乍一看各种信息都有打码,无法利用,但是完整信息却在网页源码里以hidden形式出现。

京东手机APP下个单彻底丧失账号控制权(需中间人环境)

4.至此所有信息获取完毕,然后利用sid和修改手机号的接口,更换用户绑定的手机号。这是sid的第二个用途。相关接口:

https://msc.jd.com/phone/loginpage/wcoo/index?sid=3a15cafbf295f6bdaaca44a4cb0c8f2w&source=2&businessType=0&returnUrl=

点击原手机不能接受验证码,输入捕获的支付密码,银行卡号和身份证号即可成功改换。

京东手机APP下个单彻底丧失账号控制权(需中间人环境)

5.接下来修改用户登录密码,点击忘记密码,新绑定的手机接收验证码,输入捕获的历史收件人即可成功修改。

漏洞证明:

http://v.youku.com/v_show/id_XMTUxNzI1NDQ2NA==.html?firsttime=0

密码:CheetahMobile

修复方案:

1. 所有连接使用https,并严格校验证书

2. 取消明文传输的支付密码

3. 服务器取消下发完整的身份证号码和银行卡号码。

总结:客户端问题非常多,最好还是请个牛逼点的安全架构吧。

版权声明:转载请注明来源 猎豹移动安全中心@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2016-03-31 18:40

厂商回复:

综合评估给予高风险,如有疑问我方会有专人跟进处理,感谢支持京东安全!

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

  1. 2016-03-30 19:44 | 坏男孩-A_A ( 实习白帽子 | Rank:81 漏洞数:23 | 膜拜学习中)

    1

    666

  2. 2016-04-01 09:42 | 骑虎打狗 ( 路人 | Rank:19 漏洞数:9 | 我是中国式的 你懂得..)

    1

    觉得京东对移动端重视不够。。高危才10

  3. 2016-04-20 22:46 | qhwlpg ( 普通白帽子 | Rank:260 漏洞数:64 | http://sec.tuniu.com)

    0

    mark

  4. 2016-05-16 09:06 | 高小厨 京东手机APP下个单彻底丧失账号控制权(需中间人环境) ( 普通白帽子 | Rank:998 漏洞数:91 | 不会吹牛的小二不是好厨子!)

    0

    @骑虎打狗 因为还要看漏洞利用成本

  5. 2016-05-16 09:37 | zkk ( 路人 | Rank:8 漏洞数:4 | 只留下清澈的心)

    0

    mark

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin