Android开发的UXSS阶段性小结及自动化测试教程

0x00 科普

WebView(网络视图)android中加载显示网页的重要组件,可以将其视为一个浏览器。在kitkat(android 4.4)以前使用WebKit渲染引擎加载显示网页,在kitkat之后使用谷歌自家内核chromium。

Uxss(Universal Cross-Site Scripting通用型XSS)UXSS是一种利用浏览器或者浏览器扩展漏洞来制造产生XSS的条件并执行代码的一种攻击类型。可以到达浏览器全局远程执行命令、绕过同源策略、窃取用户资料以及劫持用户的严重危害。

同源策略所谓同源是指,域名,协议,端口相同,浏览器或者浏览器扩展共同遵循的安全策略。详见: http://drops.wooyun.org/tips/151

0x01 事件

近段时间android UXSS漏洞持续性爆发涉及android应用包括主手机流浏览器、聊天软件等。下面截取几个案例。

WooYun: 搜狗手机浏览器跨域脚本执行漏洞之一

WooYun: 手机QQ安卓版两处跨域问题

WooYun: 猎豹/360/欧鹏/百度/遨游等手机浏览器安卓客户端UXSS(影响android4.4以下版本)

WooYun: UC浏览器Android最新版(4.4)跨域漏洞(不受系统版本限制)

引用某厂商对此漏洞的回应

非常感谢您的报告,此问题属于andriod webkit的漏洞,请尽量使用最新版的andriod系统。

的确漏洞产生的原因是因为kitkat(android 4.4)之前webview组件使用webview内核而遗留的漏洞。使用最新的android系统当然安全性要更高而且运行更流畅,但是有多少人能升级或者使用到相对安全的android版本了。下图来自谷歌官方2014.09.09的统计数据。

开发的UXSS阶段性小结及自动化测试教程-课题研究阶段性小结">

看起来情况不是太糟糕,有24.5%的android用户是处于相对安全的版本下。但是官方数据的是来google play明显和大陆水土不服。国内就只能使用相对靠谱的本土第三方统计了。下图是umeng八月的统计情况

能使用到相对安全的android系统的用户不到8%,那么问题来了~我要换一个什么的样的手机了。忘记我是个?潘苛耍?剖只?薹ㄉ?兜 kitkat也没钱换手机。那就只能选择使用相对安全的应用来尽量避免我受到攻击。于是我们收集了一些命中率较高的POC来验证到底哪些app更靠谱一些。

    https://code.google.com/p/chromium/issues/detail?id=37383
    https://code.google.com/p/chromium/issues/detail?id=90222
    https://code.google.com/p/chromium/issues/detail?id=98053
    https://code.google.com/p/chromium/issues/detail?id=117550
    https://code.google.com/p/chromium/issues/detail?id=143437
    https://code.google.com/p/chromium/issues/detail?id=143439
    CVE-2014-6041

为了方便大家也能够方便测试其他应用我们尝试写出一个自动化的脚本来完成此项工作。

0x02 测试

http://zone.wooyun.org/content/15792

下图为360浏览器在android 4.2.2下的测试结果

下图为搜狗浏览器在android 4.4.3下的测试结果

测试代码将放入github供大家参考,欢迎大神来修改

代码地址: https://github.com/click1/uxss

在线测试地址: http://uxss.sinaapp.com/index.php

0x03 对比

我们对主流手机浏览器进行了横向对比,测试对象包括:UC浏览器、搜狗浏览器、百度浏览器、360安全浏览器、欧鹏浏览器、遨游云浏览器、猎豹浏览器。测试结果见下图。

0x04 建议

厂商(仅供参考):

1、服务端禁止iframe嵌套 X-FRAME-OPTIONS:DENY 。详见:http://drops.wooyun.org/papers/104

2、客户端使用 setAllowFileAccess(flase) 方法禁止webview访问本地域。详见: setAllowFileAccess(boolean)

3、客户端使用onPageStarted (WebView view, String url, Bitmap favicon) 方法在跳转钱进行跨域判断。详见[onPageStarted (WebView view, String url, Bitmap favicon)][8]

4、客户端对iframe object标签属性进行过滤。

用户:

1、使用漏洞较少的app,及时更新app。

2、不要随意打开一些莫名其妙的链接。

3、有钱你就买新手机吧,android L马上出来了。(可以通过google play推送安全补丁,呵呵)

时间: 2024-11-05 17:28:23

Android开发的UXSS阶段性小结及自动化测试教程的相关文章

Android开发中RecyclerView控件使用实例教程

Android RecyclerView 是Android5.0推出来的,导入support-v7包即可使用. 个人体验来说,RecyclerView绝对是一款功能强大的控件. 首先总结下RecyclerView的特点: 1.支持不同方向,不同排版模式,实现多种展现数据的形式,涵盖了ListView,GridView,瀑布流等数据表现的形式 2.内部实现了回收机制,无需我们考虑View的复用情况 3.取消了onItemClick等点击事件,需要自己手动去写 -------------------

Android开发中Service应用于广播接收者教程

什么是服务:长期后台运行的没有界面的组件, android是应用场景:天气预报:后台的连接服务器的逻辑,每隔一段时间获取最新的天气信息股票显示:后台的连接服务器的逻辑,每隔一段时间获取最新的股票信息mp3播放器: 后台长期的播放音乐. new Thread(){}.start(); 子线程没有界面,也是长期后台运行的. android系统进程管理是按照一定的规则的: 1.应用程序一旦被打开 通常情况下关闭(清空任务栈)后进程不会停止.方面下一次快速启动. 带来内存不足的问题. 2.Android

android开发中重要组件Activity详细学习教程

Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之一.它间接继承自android.content.Context,因此,有些时候都直接把Activity实例当做Context的实例来使用. 如前面所提到的要在应用程序中使用Activity,必须在Android Manifest.xml中配置它. 新建一个Android工程,新建过程中勾选creat

《精通移动App测试实战:技术、工具和案例》一1.5 搭建Android开发环境

1.5 搭建Android开发环境 基于移动平台的自动化测试,通常都需要我们有一定的语言基础.单元测试基础和IDE(Integrated Development Environment,集成开发环境).软件是用于程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面工具.它是集成了代码编写.编译.调试和分析等一体化的辅助开发人员开发软件的应用软件,目前应用比较广泛的IDE有VisualStudio.Eclipse等. 根据工作环境和个人喜好不同,既可以在Windows系统环境下

仅5步搞定Android开发环境部署 Android开发环境搭建教程_Android

在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对准备进入Android开发的朋友有帮助. 本教程将分为五个步骤来完成Android开发环境的部署. 第一步:安装JDK. 第二步:配置Windows上JDK的变量环境 . 第三步: 下载安装Eclipse . 第四步:下载安装Android SDK . 第五步:为Eclips

【图解】如何在Windows搭建Android开发环境详细步骤

在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入 Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对准备进入Android开发的朋友有帮助. 本教程将分为五个步骤来完成Android开发环境的部署. 第一步:安装JDK 要下载Oracle公司的JDK可以百度"JDK"进入Oracle公司的JDK下载页面(当前下载页面地址为http://www.oracle.co

android 开发环境搭建Eclipse的配置图解

重要,更新安卓SDK的时候要有梯子,需要滋备hosts文件       在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对准备进入Android开发的朋友有帮助.   本教程将分为五个步骤来完成Android开发环境的部署. 第一步:安装JDK. 第二步:配置Windows上JDK的变量环境 . 第三步: 下载安装Eclip

仅5步搞定Android开发环境部署 Android开发环境搭建教程

在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对准备进入Android开发的朋友有帮助. 本教程将分为五个步骤来完成Android开发环境的部署. 第一步:安装JDK. 第二步:配置Windows上JDK的变量环境 . 第三步: 下载安装Eclipse . 第四步:下载安装Android SDK . 第五步:为Eclips

Appium移动自动化测试(二) 安装Android开发环境

继续Appium环境的搭建. 第二节  安装Android开发环境 如果你的环境是MAC那么可以直接跳过这一节.就像我们在用Selenium进行web自动化测试的时候一样,我们需要一个浏览器来执行测试脚本.那么移动端自动化测试,我们同样需要一部Android手机(手机需要链接电脑)或者Android模拟器. 安装java 环境 众所周知,Android是由Java语言开发的,所以想开发Android应用首先需要Java环境,所以,我们首先需要安装Java环境. java下载地址:http://w