欢迎来到天天文库
浏览记录
ID:37913286
大小:170.50 KB
页数:7页
时间:2019-06-02
《Android安全之Intent Scheme Url攻击》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android安全之Intent_Scheme_Url攻击0X01 前言 Intentschemeurl是一种用于在web页面中启动终端appactivity的特殊URL,在针对intentschemeURL攻击大爆发之前,很多android的浏览器都支持intentschemeurl。Intentschemeurl的引入虽然带来了一定的便捷性,但从另外一方面看,给恶意攻击页面通过intent-based攻击终端上已安装应用提供了便利,尽管浏览器app已经采取了一定的安全策略来减少这一类风险,但显然是不够
2、的。2014年3月,一篇关于intentschemeurl攻击的文章:Whitepaper–AttackingAndroidbrowsersviaintentschemeURLs详细介绍了相关的攻击手法,之后国内的漏洞收集平台上开始被这一类型漏洞刷屏。 0X02Intentschemeurl解析 一个intentschemeurl的使用示例:如果浏览器支持intentschemeurl,在加载了改web页面后,将根据url生成一个intent,并尝试通过intent打来指定的activity。此过程中
3、浏览器的需要完成的工作可以拆分为3步: Step1:根据url生成对应的intentobject,此过程通过以下代码完成:Intentintent=Intent.parseUri(url);intentschemeurl的内容可以根据一下语法规则设置的比较完善:intent:HOST/URI-path//Optionalhost#Intent;package=[string];action=[string];category=[string];component=[string];scheme=[stri
4、ng];end; Step2:intent过滤,安全起见,很多浏览器对step1中的intentobject进行过滤,以抵御intent-based攻击,不用的浏览器,过滤规则各不相同。 Step3:组件调用,最后一步就是使用step2过滤后的intent调用指定的组件,浏览器中一般使用Context#startActivityIfNeeded() 或者 Context#startActivity()方法实现。下面是各大浏览器对IntentschemeURL的支持情况 : 0X03攻击场景 主要由两种
5、攻击场景。类型1:浏览器攻击因为intent是浏览器依据url生成并以浏览器自己的身份发送的,因此攻击者恶意页面中的intentschemeurl不仅可以调起导出组件,还可以调起私有组件。 类型2:终端上安装的任意APPintent-based攻击一般是通过终端上安装的恶意app来实现的,但通过浏览器加载包含特定intentschemeurl的恶意页面,可以实现对终端上安装的任意app远程intent-based攻击的效果。在2013年东京的Pwn2Own上比赛上,次攻击方式被应用于攻陷三星Samsung
6、GalaxyS4。 0X04 攻击案例 以下介绍三个浏览器的intentschemeurl攻击案例,攻击主要源于这些浏览器在step2(也就是intent过滤过程)中存在缺陷。 OperamobileforAndroidcookietheftOpera浏览器中缺少intent过滤步骤,一次可以通过恶意页面中的intentschemeurl调起浏览器的任意activity,包括私有的activity,通过如下攻击代码可以获取到Opera浏览器的cookie:"com.admarvel.android.a
7、ds.AdMarvelActivity"是Opera浏览器的私有组件,"url=file:///data/data/com.opera.browser/app_opera/cookies"是Opera浏览器cookie文件的存放位置。 ChromeforAndroidUXSS(UniversalXSS)Chrome的UXSS漏洞利用相对复杂,这里先介绍一下IntentSelector。IntentSelector机制提供一种mainintent不匹配的情况下可以设置替补的方案。如下的intentschem
8、eurl:其中“SEL”是selectorintent的标识。在chrome中包含以下代码:1:Intentintent=Intent.parseUri(uri);2:intent.addCategory("android.intent.category.BROWSABLE");3:intent.setComponent(null);4:context.startActivityIfNeeded(intent,-1);第二行添
此文档下载收益归作者所有