本文目录导读:

在手机软件(尤其是移动端App、小程序、H5等)的综合安全测试与防守中,识别和定位漏洞通常需要结合静态分析、动态分析、流量分析以及业务逻辑分析,移动端的安全漏洞不仅包含传统的Web漏洞,还包含移动端特有的客户端漏洞和交互漏洞。
以下是系统化识别和定位手机软件防守漏洞的方法论和实操指南:
信息收集与资产梳理(基础)
在找漏洞之前,需要先摸清目标。
- 抓包与代理配置:
- 使用 Burp Suite 或 Charles 配合手机代理,拦截App与服务器的通信。
- 解决SSL Pinning(证书绑定):使用 Frida、Xposed 或 Objection 进行Hook绕过,或者将证书安装到系统根目录(需Root/越狱)。
- 客户端信息提取:
- 反编译APK(使用 Jadx、Apktool)或IPA(使用 Hopper、IDA)。
- 提取硬编码信息:API密钥、加密盐、服务器地址、测试接口。
- 资产测绘:
整理出所有的API接口、H5页面、第三方SDK(如支付、推送、地图)。
客户端漏洞识别与定位
手机软件特有的漏洞主要集中在客户端本身。
- 不安全的数据存储:
- 定位:检查
/data/data/包名/下的shared_prefs、databases、files目录。 - 漏洞:敏感信息(如Token、密码、身份证)明文存储;日志(Logcat)中泄露敏感信息。
- 定位:检查
- 硬编码与逆向暴露:
- 定位:在Jadx中全局搜索
password、key、secret、http://。 - 漏洞:加密密钥硬编码在代码中,导致通信加密形同虚设。
- 定位:在Jadx中全局搜索
- 组件安全(Android特有):
- 定位:查看
AndroidManifest.xml。 - 漏洞:
Activity、Service、Broadcast Receiver、Content Provider设置了android:exported="true"且无权限控制,导致越权访问或拒绝服务。WebView开启了setJavaScriptEnabled(true)且存在addJavascriptInterface,导致远程代码执行。
- 定位:查看
- 反调试与加固绕过:
- 定位:App运行崩溃、无法抓包。
- 应对:使用Frida脚本绕过Root检测、模拟器检测和反调试。
服务端与通信漏洞识别与定位
这是传统Web漏洞在移动端的延伸,也是防守的重灾区。
- 越权漏洞:
- 水平越权:用户A可以查看/修改用户B的数据。
- 定位:抓取“查看订单”、“修改资料”的请求,替换其中的
user_id、order_id等参数。
- 定位:抓取“查看订单”、“修改资料”的请求,替换其中的
- 垂直越权:普通用户执行管理员操作。
- 定位:抓取管理接口,尝试用普通用户Token调用。
- 水平越权:用户A可以查看/修改用户B的数据。
- 注入漏洞:
- SQL注入:在API参数中插入 或
and 1=1。 - 命令注入:涉及文件下载、系统操作的接口。
- SQL注入:在API参数中插入 或
- 身份认证与逻辑漏洞:
- 短信轰炸:抓取发送验证码的接口,看是否有频率限制。
- 任意用户密码重置:抓取重置密码的请求,篡改手机号或验证码。
- 支付逻辑漏洞:修改商品价格、数量为负数、修改支付状态。
- SSRF与XXE:
涉及图片加载、文件解析的接口,尝试传入内网地址或恶意XML。
自动化与半自动化工具辅助定位
- 静态代码扫描(SAST):
- 使用 MobSF 对APK/IPA进行自动化扫描,快速定位明文存储、硬编码、不安全的加密算法。
- 使用 SonarQube 扫描源码(如果有源码权限)。
- 动态交互扫描(DAST):
- 将Burp Suite抓到的流量导入到 AWVS 或 Xray 进行自动化漏洞扫描。
- Frida Hook 动态监控:
- 编写Frida脚本Hook
Cipher.getInstance、MessageDigest监控加密算法。 - Hook
SharedPreferences.Editor.putString监控数据存储。 - Hook
OkHttp或HttpURLConnection监控网络请求,绕过抓包难题。
- 编写Frida脚本Hook
- API 接口自动化测试:
- 使用 Postman 或 Python (Requests) 编写脚本,对API进行批量越权测试和参数Fuzzing。
防守视角的漏洞定位(如何确认漏洞真实存在)
在防守方(甲方安全或渗透测试报告)中,定位漏洞需要提供证据链:
- 复现步骤:详细的点击路径或请求构造过程。
- 请求与响应:完整的HTTP请求包和响应包(包含Token、参数、返回结果)。
- 影响证明:
- 越权:提供两个账号的对比截图。
- 注入:提供SQLMap跑出的数据库名或报错信息。
- 客户端:提供Logcat日志或反编译代码截图。
- 环境信息:App版本号、手机型号、Android/iOS版本、网络环境。
综合防守策略建议
如果是作为防守方(开发/安全团队),识别定位漏洞后,应建立以下机制:
- SDL流程:在开发阶段引入安全编码规范,对第三方SDK进行安全评估。
- RASP(运行时应用自我保护):在App中集成RASP,实时监控并阻断Hook、调试、注入行为。
- API网关防护:在服务端网关层做统一的鉴权、限流、参数校验,防止越权和轰炸。
- 加固与混淆:使用商业加固(如梆梆、爱加密)增加逆向成本。
- 持续监控:监控异常API调用(如高频访问、大量不同ID请求),及时发现越权扫描。
手机软件漏洞的识别定位 = 逆向工程(看客户端) + 抓包改包(看通信) + 逻辑测试(看业务) + 自动化工具(提效率),核心在于打破客户端与服务端的信任边界,验证服务端是否对客户端传来的所有数据进行了严格的校验。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。