应用克隆漏洞原理分析

0x01 前言

最近由于公司的需求,需要检测一下webview的跨域漏洞,也就是前几个月很火的支付宝应用克隆事件的漏洞,所以需要了解并复现相关的漏洞,
该漏洞是由腾讯的玄武实验室发现的,支付宝克隆事件的具体发生场景如下:
用户在接收一条短信后,点开其中的链接,自动打开支付宝的webview组件,并加载相关的链接,之后跳到的界面是攻击者进行设置的抽奖界面,但是这个时候,对方的手机已经克隆了用户的支付宝,并可以正常使用二维码和小额转账等功能。
其实整个漏洞的关键所在是支付宝口令红包的业务需求,打开了webview的跨域访问功能,这就给了黑客一个有利的攻击点。通过加载相关的链接,获取到包含用户登录状态的信息的文件,把内容都上传到攻击者自己的服务器中,在导入攻击者准备好的手机中,从而使得攻击者的拥有和被攻击者一样的软件,达到一个克隆的效果。

0x01 漏洞攻击流程

根据前面我们分析的场景,我们可以把该漏洞的整个原理整理成下面的流程图。

第一步:我们要通过短信或者其他操作,发送恶意链接到用户的手机中,该链接包含很多东西,包括下载xxx.html语句,还用调用支付宝webview组件和加载xxx.html文件的语句。
第二步:通过点击该恶意链接,然后恶意软件就调用浏览器下载xxx.html文件到指定的下载目录中,一般像chorme浏览器是被文件下载到sdcard/Download/目录下面。
第三步:之前的恶意链接中,其中有调用支付宝的webview组件,通过scheme协议,然后因为其中的跨域功能已经打开,所以使其加载file:///协议的文件,就是我们之前下载好的xxx.html文件。
第四步:在xxx.html文件中,我们已经写好获取到支付宝内部私有目录的文件内容的语句,然后经过长期的研究,查看其中文件中,那些是包含支付宝用户的登陆信息的文件,然后把这些文件的内容全部上传到我们搭建好的服务器中。
第五步:获取到我们需要的文件内容后,我们就把这些文件直接全部导入到我们准备好的手机中,该手机要有支付宝软件,然后把文件直接覆盖到支付宝私有目录中,然后重新打开支付宝软件,其中就直接拥有了用户信息。

0x03漏洞原理

下面我们细讲其中的原理,我们先讲解其中的第二步,点击恶意链接,使得浏览器自动下载xxx.html文件,这个原理的关键是利用到了老版本的chrome浏览器的漏洞,可以让Android系统自带浏览器静默下载html文件到默认的下载目录下,过程不需要与用户交互。即使现在,chrome的最新版仍然可以通过访问一个链接直接静默下载html文件到默认下载目录下,关键的语句是:

就是设置头部信息,表示把print的内容写到filename.html文件中。我们就可以直接利用其写一个AutoDown.jsp,去老版本的chrome浏览器访问,发现在sdcard/Download直接由相应的文件。在新的版本会有相应的提示框,提示是否下载相应的文件。

所以我们只要把我们要写的语句写入到print方法中就可以了。
在第三步中,我们要调用起支付宝的webview组件,然后加载我们的之前通过浏览器下载的html文件,其实这里利用的其实通过网页唤起第三方APP的技术,做过安卓开发的应该都很熟悉。支付宝、导航系统、各种手机播放器等APP都大量的用到了这种技术,比如通过网页打开一个视频播放界面,这时旁边会有个按钮“在APP中播放”,点击后会直接打开对应的APP继续播放之前的视频。实现这个需求只需要在定义activity的时候,指定一个scheme(协议),并且设置一个name为android.intent.category.BROWSABLE的category即可。

其中我们发现符合标准的scheme有很多种,所以这些是需要网上搜索相关资料就可以找到这个几个scheme的使用方法。
我们就找到其中一个方法,写了个demo,直接在支付宝界面打开百度,说明就是这个原理。


实现之后,我们就要加载我们之前浏览器下载的xxx.html文件,然后读取支付宝的私有目录文件。这里利用的原理就是我们说的跨域攻击了,关键在于webview组件设置的两个属性。通过file域访问file域的资源需要设置API setAllowFileAccessFromFileURLs为true,通过file域访问其他域,如http域的资源,需要设置API setAllowUniversalAccessFromFileURLs为true。因为我们要加载file域文件,所以只要其中一个属性为true就行。
但是这里就遇到一个深刻的问题,就是我的html的确打开了支付宝软件,在之前我们是可以加载到我们内部的指定的html文件,也得到了我要的结果,但是现在我显现出来的结果不对,我的根据的shceme协议是下面三个协议:

我根据其中scheme协议进行相应的修改了我的demo。

然后在cloneapp_up.xml中,我要获取到私有目录的welcome.xml文件,然后
显示出来。

我在之前试过得到的结果就是直接显现出我们welcome.xml文件内容(左图),但是现在得到的却是一个更新界面(右图),一样的版本,一样的demo,我认为是没有加载到我们的html文件,也就是未加载file域的文件。


之后的第四步,把我们的获取的文件的内容上传到服务器中,这里就直接在我们的cloneapp_up.xml中进行编写。其中需要获取的文件,我们之前已经说过,是要包含用户向信息的文件,在网上搜寻获取到,我们需要如下的文件:


最后的第五步,就是把获取到的内容直接全部导入我们准备好的手机的支付宝私有目录下面,进行覆盖。这里可以利用一些工具例如re文件管理器,轻松替换,然后重新打开支付宝,就会发现有相同的用户信息,达到克隆目的。

0x04 总结

整个漏洞攻击的流程,其实是相对简单的,但是漏洞实现的条件也是相对比较苛刻的,需要满足几个条件:
1.攻击者可以外部调用被攻击APP,指令其加载一个本地的html文件。从前文得知通过向支付宝现在通过外部加载file协议失败,说明都有进行相应的措施。
2.被攻击APP的setAllowUniversalAccessFromFileURLs值为true。这个条件就比较苛刻了,在Android4.1(2012年发布)之前的版本,该选项默认为True,之后的版本默认值为False。所以除非APP是很老的版本,或者是新版本有着很特殊的业务需求,否则的话是不会将setAllowUniversalAccessFromFileURLs设置为True的。
3.攻击者需要在被攻击的手机上下载一个html文件并保存在一个可被File协议访问到的位置。在Android老版本曾经出现过几个漏洞,可以让Android系统自带浏览器静默下载html文件到默认的下载目录下,过程不需要与用户交互。但是现在大多数的过长手机默认浏览器不在是chrome浏览器,都是会有相应的下载提示的。

最后说下防御措施:

  • APP不要支持Android4.1(API level 16)之前的版本,提倡用户尽量使用新的安卓版本。

  • 如果业务不需要的话,针对于webview属性的setAllowFileAccessFromFileURLs
    或setAllowUniversalAccessFromFileURLs显示设置为False。

  • 不要点击莫名短信的链接和网站上面的钓鱼网站。

参考链接:
http://www.520monkey.com/archives/1125
http://open.appscan.io/article-470.html
https://www.cnblogs.com/goodhacker/p/8748681.html

应用克隆漏洞原理分析相关推荐

  1. cve-2017–10271 XMLDecoder 反序列化漏洞 原理分析

    目录 1.漏洞背景 2.漏洞原理分析 3.漏洞测试 环境搭建 漏洞复现 4.修复建议 1.漏洞背景 Weblogic是oracle推出的application server,由于其具有支持EJB.JS ...

  2. log4j漏洞原理分析复现检测复盘

    凡事要自发,自然而为,即要顺从一切处于自然状态的事物,允许它们自发地转变.这样,道即达到了一种"无为而无不为"的状态.在日常生活中,道表现为"不自傲"或&quo ...

  3. JAVA反序列化漏洞原理分析

    反序列化漏洞原理分析 从序列化和反序列化说起 什么是序列化和反序列化? 简单来讲,序列化就是把对象转换为字节序列(即可以存储或传输的形式)的过程,而反序列化则是他的逆操作,即把一个字节序列还原为对象的 ...

  4. 蓝牙App系列漏洞原理分析与漏洞利用

    蓝牙App系列漏洞原理分析与漏洞利用 作者: heeeeen 本文系转载,目的是学习,如有侵权,请联系删除 转载出处:http://www.ms509.com/ 蓝牙App漏洞系列分析之一CVE-20 ...

  5. linux shellshock漏洞,shellshock漏洞原理分析(cve-2014-6271 bash漏洞)

    shellshock漏洞原理分析(cve-2014-6271 bash漏洞) 2014-09-26 10:04:16 阅读:0次 概述: 低于4.3版本的gnu bash存在漏洞,运行本地用户通过构造 ...

  6. 常见WEB漏洞原理分析

    一.SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击.SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了对输入字符串中夹带的 ...

  7. 打印机PCL漏洞原理分析

    0x01 漏洞概要 PCL代表打印机控制语言(Printer Control Language),由惠普公司开发,并被广泛使用的一种打印机协议.关于另一种页面描述语言,应该提一提由Adobe设计的Po ...

  8. 'or'='or'经典漏洞原理分析

    'or'='or'漏洞是一个比较老的漏洞了,主要是出现在后台登录上,利用这个漏洞,我们可以不用输入密码就直接进入系统的后台.它出现的原因是在编程时逻辑上考虑不周,同时对单引号没有进行过滤,从而导致了漏 ...

  9. cve-2019-7609 Kibana远程代码执行漏洞攻击方法和漏洞原理分析

    目录 0x00 前言 0x01 漏洞简介 0x02 环境搭建 0x03 漏洞利用 0x04 漏洞机理 1.POC验证 ​2.漏洞产生原理和攻击思路 3.payload构建 0x05 危害分析和处理建议 ...

  10. Spring4Shell的漏洞原理分析

    Spring框架最新的PoC 这两天出来的一个RCE漏洞,但是有以下的条件限制才行: 必须是jdk9及以上 必须是部署在tomcat的应用 是springmvc的或者webflux的应用 具体的可以查 ...

最新文章

  1. Python设计模式-状态模式
  2. Neighbor-Vote:使用邻近距离投票优化单目3D目标检测(ACM MM2021)
  3. K8s 1.14 发布了,Release Note 该怎么读?
  4. 艾伟也谈项目管理,在团队中如何推行一项新的实践
  5. category使用 objc_setAssociatedObject/objc_getAssociatedObject 实现添加属性
  6. /etc/resolv.conf服务器客户端DNS重要配置文件
  7. 终于有人把正态分布和二八法则讲明白了
  8. 我的世界SkyPixel像素天空HTML官网源码
  9. OpenCV Sobel和Scharr (索贝尔和夏尔滤波器检测边缘)
  10. 我的helper模块(Python)
  11. 《修炼——我的职场十年》 摘录
  12. css选择器,什么是css选择器
  13. 从 B 站火到 GitHub,国人开发者又一黑科技面世!
  14. 深度学习与TensorFlow实战(十)卷积神经网络—VGG(16)神经网络
  15. 要传送的报文共 x ( bit )。从源点到终 点共经过 k 段链路,每段链路的传播时延为 d ( s ),数据率为 b ( bit / s )。在电路交换时电路的建立时间为 s ( s )。在分组交
  16. 网页中在线玩圆桌骑士
  17. git checkout tag
  18. 自定义模板以及解决乱码问题、使用grafana为zabbix出图、自定义模板
  19. GA/T1400文档请求失败消息返回提
  20. 春晚架构&Ylmf OSChrom OS

热门文章

  1. 异地监控组网实战案例(速度快)
  2. Mac Mysql5.7.6+免安装版教程
  3. linux设备模型七(device_driver细节)
  4. 拒绝“重复造轮子”,百度EasyDL让你玩转AI定制开发
  5. Gmail 实验室产品经理 Todd Jackson 访谈录
  6. html制作页面书签的步骤,网页制作基础教程(二)html标签
  7. View 的各种知识
  8. 案例分析: 全球顶尖的物流公司Schenker采用SAPERION
  9. 微信公众号自定义菜单修改
  10. day10图书编辑删除 字段参数choise(重要)多对多三种创建方式 ajax语法结构