路人甲 · 2015/08/21 10:23

0x00 背景


13年的时候,IBM的安全研究人员发现了1个Google框架层的漏洞Fragment注入漏洞,该漏洞可以导致Android手机的PIN码被重置,大家应该对图1不陌生。这个漏洞之后,业界对该漏洞的影响没有进一步的探讨,本文将对该漏洞进行进一步的探讨,欢迎拍砖。

0x01 Fragment注入漏洞详情


Android Framework提供了android.preference.PreferenceActivity这个类来对preference进行展示,我们可以继承这个类来展示preference,并进行扩展。基类中会接收Intent数据,并进行一定检查,其中两个比较重要:

PreferenceActivity.EXTRA_SHOW_FRAGMENT (’:android:show_fragment’) and PreferenceActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS (’:android:show_fragment_arguments’)。第一个extra域包含PreferenceActivity要动态加载的Fragment,第二个extra域包含传给该Fragment的参数。Fragment也可以通过Fragment.getActivity这个函数来获取传进来的参数。PreferenceActivity会调用Fragment.instantiate来动态加载Fragment.这个函数通过反射来加载Fragment,并把它变成Fragment对象。如图2所示。

任何继承自PreferenceActivity并对外导出的组件,都会受到攻击。恶意app可以传:android:show_fragment这个extra值来指定要动态加载的类。在PreferenceActivitycontext里,通过dalvik.system.PathClassLoader函数来动态加载类,由于没有对请求的app进行校验,恶意app可以动态加载有漏洞app里面的任何类(包括未导出类),使得恶意app可以访问有漏洞app的隐私信息。

0x02 Fragment注入漏洞利用


1.拒绝服务

由于通过该漏洞可以加载app里面的任何类,包括未导出类,如果未导出类对畸形消息处理不当,将会导致本地拒绝服务漏洞。下面以IRCCloud软件为例。

com.irccloud.android.activity.PreferencesActivity组件对外导出:

com.irccloud.android.activity.PreferencesActivity组件继承自PreferenceActivity

由于没有对Fragment注入漏洞进行防御,可通过该漏洞加载app内任意不导出的组件。选择com.irccloud.android.fragment.ServerReorderFragment作为攻击目标:

ServerReorderFragment没有对畸形消息进行处理,导致拒绝服务,见下图。

2.远程命令执行

由于现在很多组件都是基于Webview来展示页面,并且Fragment组件应用越来越广,以后将会有越来越多的Webview组件是基于Fragment来展示。由于Fragment注入漏洞可以加载app内任意未导出组件,如果基于FragmentWebview组件存在addJavascriptInterface漏洞,将会导致远程命令执行漏洞。在市面上的app里找了下,发现很多Webview组件基于Fragment,但是继承自PreferenceActivity的组件是不导出的,因此下面将自己写个demo来验证下可行性。

MainActivity导出,并继承自PreferenceActivity

WebviewFragment导出js接口,并加载url。

利用Fragment Injection漏洞对WebviewFragment攻击。

通过Fragment Injection漏洞,WebviewFragment已加载恶意html,存在远程代码执行漏洞攻击,见图。

四、总结


由于可以加载app内的任意未导出组件,因此Fragment注入漏洞可攻击点还是挺多的。本文对Fragment注入漏洞进行抛砖引玉,希望大牛们能对该漏洞进一步开发。

Fragment Injection漏洞杂谈相关推荐

  1. Fragment注入漏洞(CVE-2013-6271)检测

    (1)描述 在api level 小于19的app,所有继承了PreferenceActivity类的activity并将该类置为exported的应用都受到Fragment注入漏洞的威胁. Goog ...

  2. CVE-2017-0004相关lsass拒绝服务漏洞杂谈

    昨天微软更新的补丁对lsass服务中的一处拒绝服务漏洞进行了修补,由于是远程拒绝服务漏洞遂决定看看(毕竟这种类型的这十几年也没出几个).补丁解压之后可以发现这次更新修改了大量的dll(可以用expan ...

  3. [免费专栏] Android安全之Android Fragment注入

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  4. Android 组件逻辑漏洞漫谈

    前言 随着社会越来越重视安全性,各种防御性编程或者漏洞缓解措施逐渐被加到了操作系统中,比如代码签名.指针签名.地址随机化.隔离堆等等,许多常见的内存破坏漏洞在这些缓解措施之下往往很难进行稳定的利用.因 ...

  5. java json injection_JSON相关漏洞(Hijacking+Injection)挖掘技巧及实战案例全汇总

    本文一是在为测试过程中遇到json返回格式时提供测试思路,二是几乎所有国内的资料都混淆了json和jsonp的区别--这是两种技术:以及json和jsonphijacking的区别--这是两个漏洞,这 ...

  6. APP漏洞自动化扫描专业评测报告

    一.前言 目前在业界有很多自动化检测APP安全性的在线扫描平台.为了了解目前国内移动APP在线漏洞扫描平台的发展情况,我进行了一次移动安全扫描平台的评测分析:主要从漏洞项对比.扫描能力对比以及扫描结果 ...

  7. SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具

    1.关于SQL Injection 迄今为止,我基本没有看到谁写出一篇很完整的文章,或者说很成熟的解决方案(能做到 的人肯定很多,问题是没有流传开来,很遗憾) 我简单的说几点,希望启发大家思考,起到抛 ...

  8. 微软发布3款SQL Injection攻击检测工具

    随着 SQL INJECTION 攻击的明显增多,微软近日发布了三个免费工具,帮助网站管理员和检测存在的风险并对可能的攻击进行拦截. Scrawlr 下载地址:https://download.spi ...

  9. 针对SQL INJECTION的SQL SERVER安全设置初级篇

    日前SQL INJECTION的攻击测试愈演愈烈,很多大型的网站和论坛都相继被注入.这些网站一般使用的多为SQL SERVER数据库SPAN>,正因为如此,很多人开始怀疑SQL SERVER的安 ...

最新文章

  1. Java面向对象 第3节 类的封装和继承
  2. python入门基础系列_Python3基础系列-基本入门语法
  3. java单例模式_Java描述设计模式(01):单例模式
  4. 2017计算机发展,【2017年整理】计算机发展的四个阶段.doc
  5. BASIC-6 杨辉三角形
  6. 基于android的视频采集系统的设计与实现,基于Android的视频通话系统的设计与实现.docx...
  7. 2019春第一课程设计报告
  8. 感谢大家对课程的关注和喜爱
  9. 原创 | 以ETF为例——配对交易Python源码全公开
  10. 降级降薪去 Amazon ——左耳朵
  11. 无线安全-WiFi渗透流程
  12. 手机智能汽车钥匙来了, 汽车远程启动在手机上就能完成
  13. C++ 实现哈夫曼树和哈夫曼编码
  14. Sketch之初见BF
  15. 信息项目管理师 高级软考 案例分析
  16. 密苏里大学计算机排名,2019上海软科世界一流学科排名计算机科学与工程专业排名密苏里大学排名第301-400...
  17. html游戏让目标人物移动,用仿ActionScript的语法来编写html5——第三篇,鼠标事件与游戏人物移动...
  18. 输出某个日期是该年的第几天
  19. D UNIVERSE 设计之都元宇宙数字藏品平台上线
  20. xwiki开发者指南-编写一个XWiki组件

热门文章

  1. JVM调优总结 -Xms -Xmx -Xmn -Xss等
  2. android studio adb
  3. PPTPD×××服务器架设
  4. Nginx与PHP(FastCGI)的安装、配置
  5. linux lisp环境,Ubuntu下Common Lisp配置
  6. linux大文件拷贝,Linux如何提高大文件的拷贝效率
  7. Java写文件的缓冲区有多大_java – 将FileChannel#write总是写入整个缓冲区...
  8. 计算机原理多少学分,《计算机组成原理》学分互认复习题.doc
  9. java线程池拒绝策略_Java核心知识 多线程并发 线程池原理(二十三)
  10. mysql -d_mysqld