组件暴露漏洞 是指系统中某些内部组件、接口、服务、文件或调试功能,原本应对外隐藏或仅限特定用户访问,但由于配置不当、权限控制缺失或设计缺陷而被暴露给不可信用户,从而导致攻击者可以直接访问、调用甚至控制这些组件。
常见于:
Activity、Service、ContentProvider 暴露)AndroidManifest.xml 中将组件 exported 设为 true,无访问限制。| 攻击方式 | 描述 |
|---|---|
| 直接访问敏感功能 | 通过暴露的 URL/端口调用管理功能。 |
| 利用调试接口 | 通过暴露的调试/测试接口执行系统命令或修改配置。 |
| 跨应用组件调用 | 在 Android 中调用其他应用暴露的 Activity/Service 实现越权操作。 |
| 枚举接口与功能 | 扫描端口、路径、API 以发现暴露的组件。 |
/script 控制台执行 Groovy 脚本。Activity 允许攻击者直接打开并绕过登录页面。/actuator/env、/actuator/shutdown 等端点未加访问控制。权限绕过
直接访问原本受保护的功能或数据。
远程代码执行(RCE)
通过暴露的调试接口执行系统命令。
数据泄露
获取数据库配置、用户信息、API 密钥等敏感数据。
系统控制权丧失
直接修改应用配置、部署恶意代码。
exported 默认设为 false,仅在必要时对可信调用方开放。端口扫描
使用 nmap、masscan 检测开放端口。
路径扫描
使用 dirsearch、gobuster 枚举暴露的目录和接口。
移动应用分析
反编译 APK 检查 AndroidManifest.xml 中的组件 exported 属性。
漏洞扫描工具
如 Nessus、OpenVAS 检测未授权访问风险。
组件暴露漏洞本质上是边界防护失效的问题,攻击者可以直接接触到原本内部使用的功能或接口。
安全设计中应遵循 “最小暴露面 + 严格访问控制” 的原则,并通过持续安全审计减少意外暴露风险。