<% dim ModuleName,InfoID,ChannelShortName,CorrelativeArticle,InstallDir,ChannelDir,Keyword,PageTitle,ArticleIntro,Articlecontent Keyword=stripHTML("京东,商城,Android,客户端,用户,隐私,风险,伪造") PageTitle=stripHTML("京东商城Android客户端之用户隐私风险&伪造") ArticleIntro=stripHTML("本漏洞针对京东商城Ver4.3.1最新版Android客户端。由于京东商城Android客户端获取到服务器数据后存放的策略问题,可导致用户的隐私暴露。") Articlecontent=stripHTML("                   漏洞:京东商城Android客户端之Update伪造漏洞(详细测试过程) 已经显示京东服务器返回的数据为JSON格式,所以…") ModuleName = stripHTML("exploits") InfoID = stripHTML("220589") ChannelShortName=stripHTML("漏洞") InstallDir=stripHTML("http://www.77169.com/") ChannelDir=stripHTML("exploits") %> 京东商城Android客户端之用户隐私风险&伪造 - 华盟网 - http://www.77169.com
您现在的位置: 华盟网 >> 漏洞 >> 最新漏洞 >> 其它漏洞 >> 正文

[组图]京东商城Android客户端之用户隐私风险&伪造

2015/12/16 作者:骑虎打狗 来源: 乌云知识库
导读 <% if len(ArticleIntro)<3 then Response.Write Articlecontent 'Response.Write "Articlecontent" else Response.Write ArticleIntro 'Response.Write "ArticleIntro" end if %>

        

   

       漏洞:京东商城Android客户端之Update伪造漏洞(详细测试过程) 已经显示京东服务器返回的数据为JSON格式,所以在客户端捕捉关键信息的时候一定是关键字罗列,如下图所示:  

     

       

  发现他们都是通过一个方法获取的:com.jingdong.common.utils.JSONObjectProxy的getStringOrNull();

  这样就有利用的源头了 啧啧~~

  漏洞证明:1.输出对应字符串的确认。通过二次打包客户端,插入暗桩:

     

    输出如下:

    

     可见,升级提示符是经过getStringOrNull()方法的。通过查找登录用户的各种隐私资料是经过optString()方法的:     

     

    2.在ROOT的手机上写个外部程序,通过钩子hook手段,将getStringOrNull()和optString()这个方法输入和输出的字符串都搞出来。我这里借助Xposed简单写了个利用框架,其实完全可以自己写个独立的木马式APP,ROOT是重点,代码大致为:

      

   

  这样效果就出来了:

       

      

      

  上面两张或许无伤大雅,再来下面两张是不是有点小慌了..

      

  3.下面说说怎么去利用,顺延上次的伪造升级(想起来我的1rank 呜呜..)


 

       

   

  将upgrate设置为302,强制升级了:

       

  这样在客户端内任意点链接都会跳转到伪造的apk恶意下载地址:

        

  修复方案:

      不要把所有的关键字符串的获取都压在一个方法里啊,这样ROOT情况下碰到钩子得多危险;