Android静态安全检测 - WebView File域同源策略绕过漏洞

2024-08-29 03:08

本文主要是介绍Android静态安全检测 - WebView File域同源策略绕过漏洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

WebSettings.setAllowFileAccess( ) & WebSettings.setJavaScriptEnabled( )



关于WebView组件安全的整理:http://blog.yaq.qq.com/blog/10

一、API


1. 继承关系


【1】java.lang.Object

【2】android.webkit.WebSettings


2. 主要方法


【1】setAllowFileAccess(boolean allow)

 设置是否允许访问WebView内部文件

  默认为true


【2】setJavaScriptEnabled(boolean flag)

  设置是否允许执行JS

 默认为false


【3】参考链接


http://www.apihome.cn/api/android/WebSettings.html


http://blog.alexwan1989.com/2016/01/21/Android:WebView开发笔记(二)/


https://developer.android.com/reference/android/webkit/WebSettings.html


二、触发条件


1. 调用getSettings方法,获取WebSettings对象


【1】对应到smali语句中的特征:

   Landroid/webkit/WebView;->getSettings()Landroid/webkit/WebSettings;


2. 调用WebSettings.setAllowFileAccess方法,设置setAllowFileAccess(true)或没有显示设置(默认为true)


【1】对应到smali语句中的特征:

   Landroid/webkit/WebSettings;->setAllowFileAccess(Z)V

   判断对寄存器的赋值:const v1 0x1


3. 调用WebSettings.setJavaScriptEnabled方法,设置setJavaScriptEnabled(true)


【1】对应到smali语句中的特征:

   Landroid/webkit/WebSettings;->setJavaScriptEnabled(Z)V

   判断对寄存器的赋值:const v1 0x1


三、漏洞原理


【1】应用程序一旦使用WebView,同时支持File域,并打开了对JavaScript的支持,就能利用JavaScript的延时执行,绕过file协议的同源检查,并能够访问应用程序的私有文件,导致敏感信息泄露


【2】参考链接


https://jaq.alibaba.com/community/art/show?spm=a313e.7975615.40002100.1.Tp61Qv&articleid=62


http://drops.wooyun.org/mobile/11263


四、修复建议


1】对于不需要使用File协议的应用,禁用File协议,显式设置webView.getSettings().setAllowFileAccess(false)


【2】对于需要使用File协议的应用,禁止File协议调用JavaScript,显式设置webView.getSettings().setJavaScriptEnabled(false)

这篇关于Android静态安全检测 - WebView File域同源策略绕过漏洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116668

相关文章

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组