文章总结: 本文介绍AndroidWebView漏洞入门学习,基于vulnwebview靶场演示了任意URL跳转、敏感文件窃取、XSS及JS调用接口窃取Token等攻击手法。文章详细分析了exported组件、JavaScript开启及文件访问权限配置不当引发的安全风险,并通过adb命令与恶意代码展示了从本地文件读取到网络数据回传的利用流程,为移动安全测试提供了实操指南。 综合评分: 90 文章分类: 移动安全,漏洞分析,渗透测试,代码审计,实战经验
前提条件
exported="true"
- • 允许被其他应用 / 外部进程(包括 ADB)启动
exported="false"
- • 表示该组件只能被同一应用内的其他组件调用,不允许其他应用访问。
webview settings
| 方法 | 作用 |
| — | — |
| setJavaScriptEnabled(boolean enabled) | 控制是否为 WebView 启用 JavaScript 执行能力。WebView 默认不开启 JS,开启后才能执行网页中的 JavaScript 代码(如交互逻辑、DOM 操作、AJAX 请求等),是实现富交互网页的基础。 |
| setAllowFileAccess(boolean allow) | 控制 WebView 是否允许访问 本地文件系统(file:// 协议的资源)。开启后,WebView 可以加载本地文件(如 file:///sdcard/test.html、file:///android_asset/index.html)。 |
| setAllowFileAccessFromFileURLs(boolean allow) | 控制通过 file:// 协议加载的本地网页,是否允许通过 JS 访问其他本地文件(如 A.html 通过 JS 读取 B.txt)。 |
| setAllowUniversalAccessFromFileURLs(boolean allow) | 控制通过 file:// 协议加载的本地网页,是否允许通过 JS 访问任意来源的资源(包括 http://、https:// 网络资源,或 file:// 本地资源)。 |
漏洞挖掘
jadx 反编译
AndroidManifest.xml 查看
的 Activity
<activity
android:name="com.tmh.vulnwebview.SupportWebView"
android:exported="true"/>
<activity
android:name="com.tmh.vulnwebview.RegistrationWebView"
android:exported="true"/>
查看 com.tmh.vulnwebview.RegistrationWebView 源码
从启动当前 Activity 的 Intent 中获取名为 “reg_url” 的字符串参数(这个参数是一个网页地址),然后让 WebView 加载这个地址对应的网页。
webView.loadUrl(...)
让 WebView 加载指定 URL 对应的网页。 支持的 URL 类型:
- • 网络地址:如 https://example.com/reg (需申请网络权限
<uses-permission android:name="android.permission.INTERNET" />); - • 本地文件地址:如 file:///android_asset/reg.html (需注意之前提到的文件访问权限和安全设置)。
任意 URL 跳转
adb shell am start -n com.tmh.vulnwebview/.RegistrationWebView --es reg_url "https://www.baidu.com"
文件窃取
adb shell am start -n componentname --es string "URL链接"
此APK示例
adb shell am start -n com.tmh.vulnwebview/.RegistrationWebView --es reg_url "https://www.baidu.com"

原因是Android WebView 的跨域 / 文件访问安全策略。
| 加载方式 | 权限域 | 能否访问file://私有文件 | 核心原因 |
| — | — | — | — |
| file:///sdcard/... | 本地文件域 | ✅ 可以 | 本地文件协议不受跨域限制,漏洞 WebView 未限制文件访问 |
| http://192.168.187.140/... | 网络域 | ❌ 不可以 | Android WebView 默认禁止网络页面访问本地file://资源,触发跨域 / 权限拦截 |
测试
adb shell am start -n com.tmh.vulnwebview/.RegistrationWebView --es reg_url "file:///sdcard/Download/sauafu.html"
Burpsuite抓包即可看到
的时候,我们不单可以用 adb 控制 Activity,还可以用第三方的APK主动调用当前APK。
XSS
前提
webView.getSettings().setJavaScriptEnabled(true);
存在风险的代码:
<script type="text/javascript">
alert("hack!!!!");
</script>
结果:
JS调用Android类导致令牌窃取
com.tmh.vulnwebview.SupportWebView
当 webview 开启
webView.getSettings().setJavaScriptEnabled(true);
且相关 Activity 配置为
android:exported="true"
adb 执行
adb shell am start -n com.tmh.vulnwebview/.SupportWebView --es support_url "https://demo/test.html"
结果:
参考资料
- • 利用Android WebView漏洞 https://mp.weixin.qq.com/s/BuWiwmGQwKd1oOrg4L8OWg
- • WebView漏洞详解 https://bbs.kanxue.com/thread-273867.htm
欢迎加入知识星球,星球内容主要有:
1、公众号文章备份、工具分享。
2、常见问题的答疑、解决方案汇总在知识星球,作为便于搜索的知识库。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:进击的HACK 进击的HACK《通过vulnwebview入门学习webview漏洞》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论