IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android安全检测-Intent Scheme URLs攻击风险 -> 正文阅读

[移动开发]Android安全检测-Intent Scheme URLs攻击风险

这一章我们来学习“Intent Scheme URLs攻击风险”,网上的文章关于这个风险的介绍可谓是千篇一律,翻阅下来之后发现内容大致相同,单看这些文章的介绍仍然让人感觉到云里雾里,故此篇文章中会讲清楚这风险的产生和应对方法。

一、漏洞原理

利用intent scheme URLs(意图协议URL),可以通过web页面发送intent来启动App应用。攻击者可构造特殊格式的URL直接向系统发送意图,启动App应用的Activity组件或者发送异常数据,导致应用的敏感信息泄露或者应用崩溃。
上述的漏洞描述中可知,通过web页面发送intent来启动App应用这个操作没有经过过滤和校验那么就会存在风险。我们来拆解一下上述的文字。
(1)web页面: 一般指的是被检测的APP,也就是说被检测APP有浏览器功能,并支持Intent Scheme协议,相当于被检测APP是一个桥梁当然若是APP使用了Intent.parseUri方法,并且uri来自于外部输入的话,就算没有浏览器功能,也可能产生此漏洞
(2)启动App应用: 一般启动的是任意APP的暴露的Activity组件

综上可知:Intent Scheme URLs攻击风险,一般会和其它漏洞进行综合利用,比如:Intent Scheme URLs攻击 + Activity组件暴露 = 可产生拒绝服务漏洞(APP崩溃)、WebView相关漏洞(加载恶意页面、远程代码执行等)、APP静默下载安装等。若被检测APP存在intent scheme URLs漏洞,这就会导致手机设备内的任意APP若存在可关联的漏洞,那么就可以通过Intent Scheme URLs漏洞进行恶意攻击

二、前置知识

通过漏洞原理可以了解到漏洞产生的原因,那么现在来了解一下和这个漏洞相关的一些知识
(1)Intent Scheme协议:
通过浏览器(WebView)加载URI的形式使用Intent协议跳转到指定的app页面。一般使用Intent.parseUri(String uri,int flags)方法,来构造Intent。第二个参数的值的会影响Scheme协议的构造方式,大致如下:
a. Intent.URI_INTENT_SCHEME:经常使用,URI形式类似:scheme://host:port/path
b. Intent.URI_ANDROID_APP_SCHEME:URI形式类似:android-app://{package_id}[/{scheme}[/{host}[/{path}]]][#Intent;{...}]
c. Intent.URI_ALLOW_UNSAFE:一般不使用,不太安全

(2)android.intent.category.BROWSABLE:
android.intent.category.BROWSABL的意思就是允许浏览器在特定条件下可以打开APP的Activity,例如:

 <activity
            android:name=".MainActivity"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />
        		<!--协议部分,随便设置 test://aaa.com:8088/from?type=abcd  -->
        		<data android:scheme="test"
            		android:host="aaa.com"
            		android:path="/from"
            		android:port="8088"/>
            </intent-filter>
 </activity>

通过 Intent.parseUri("test://aaa.com:8088/from?type=abcd",Intent.URI_INTENT_SCHEME),构造Intent即可启动MainActivity

三、检测手段

step1:扫描全局代码,是否存在使用Intent.parseUri
step2:若URI来源于外部的输入,并使用了Intent.parseUri方法,那么获取的Intent必须严格过滤,判断Itent是否至少包含addCategory(“android.intent.category.BROWSABLE”),setComponent(null),setSelector(null)3个策略。若URI在代码内硬编码,则针对此URI进行漏洞测试。
step3:汇总结果

四、修复方法

1、如果使用了Intent.parseUri方法,那么必须对获取的intent进行严格过滤,intent至少包含addCategory(“android.intent.category.BROWSABLE”),setComponent(null),setSelector(null)3个策略
2、对于外部来源的intent要进行严格过滤,也可设立白名单。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 12:52:17  更:2021-11-17 12:53:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:55:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码