通过vulnwebview入门学习webview漏洞

admin 2025-12-26 01:47:58 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍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.htmlfile:///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
&nbsp; &nbsp; android:name="com.tmh.vulnwebview.SupportWebView"
&nbsp; &nbsp; android:exported="true"/>
<activity
&nbsp; &nbsp; android:name="com.tmh.vulnwebview.RegistrationWebView"
&nbsp; &nbsp; 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">
&nbsp; &nbsp; 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漏洞》

评论:0   参与:  0