"另类"APP漏洞挖掘
字数 1344 2025-08-23 18:31:18
"另类"APP漏洞挖掘技术详解
1. 传统APP渗透测试方法
常规APP渗透测试流程包括:
- 脱壳处理(针对加固的APK)
- 使用模拟器或真机环境
- 刷机获取root权限
- 设置代理抓包分析
- 反编译查看源码
2. 案例中的"另类"方法
当遇到以下困难时:
- APK有壳且脱壳失败
- 所有通信数据都加密
- 无法通过常规方法获取加密方式
2.1 创新解决步骤
- 修改APK后缀为ZIP:直接解压查看内部文件结构
- 定位关键资源:在
assets/www目录下发现前端资源文件 - 分析JavaScript文件:
- 使用工具格式化
umi.js文件(如https://www.1tool.site/#/javascript?id=1) - 使用Notepad++正则表达式匹配关键路径
- 使用工具格式化
- 搜索加密相关关键词:
- 搜索"mode"字符串(177个结果)
- 直接搜索常见加密方式:"ECB"、"CBC"
- 成功发现加密密钥(key)和偏移量(iv)
2.2 接口分析与利用
- 解密数据:使用发现的加密参数解密通信数据
- 分析请求方式:
- 发现关键请求方法
qryNextOrgStructureView - 替换请求方式为
zyhyy.qryNextOrgStructureView
- 发现关键请求方法
- 参数构造:
- 从源码中发现
areaId和staffType参数可用 - 继续搜索
zyhyy开头的其他方法,发现zyhyy.qryOrgInfoByAreaId
- 从源码中发现
- 数据包构造:
- 构造包含
area_id和staff_type的请求数据 - 使用已知加密方式加密请求数据
- 发送请求并解密响应
- 构造包含
2.3 漏洞利用扩展
- 获取组织信息:
- 通过
qryStaffInfoByOrgId接口 - 使用获取到的
org_id值构造请求 - 解密响应获取组织用户信息
- 通过
- 信息泄露漏洞:
- 尝试爆破
org_id参数值 - 成功获取所有组织的用户信息
- 尝试爆破
3. 技术要点总结
-
APK文件结构分析:
- APK本质是ZIP格式,可直接解压查看资源
assets目录常包含前端资源文件
-
JavaScript分析技巧:
- 格式化混淆的JS代码提高可读性
- 使用正则表达式搜索关键信息
- 重点搜索加密相关关键词
-
加密方式识别:
- 常见对称加密模式:ECB、CBC等
- 注意搜索密钥(key)和偏移量(iv)的声明
-
接口逆向分析:
- 通过JS代码分析API调用方式
- 识别可操控的参数
- 构造合法请求测试接口
-
漏洞利用方法:
- 参数遍历/爆破
- 敏感信息泄露验证
4. 防御建议
-
客户端安全:
- 避免在前端代码中硬编码加密密钥
- 对敏感逻辑进行混淆加固
- 使用证书绑定防止中间人攻击
-
服务端安全:
- 实施严格的参数校验
- 对敏感接口增加访问控制
- 使用一次性令牌防止参数爆破
-
通信安全:
- 避免使用固定加密密钥
- 实现动态密钥交换机制
- 使用非对称加密保护对称密钥
5. 工具推荐
-
APK分析:
- JADX/GDA:反编译工具
- APKTool:APK解包工具
-
JS分析:
- Chrome开发者工具
- JavaScript格式化工具
- Notepad++(支持正则搜索)
-
抓包调试:
- Burp Suite
- Fiddler
- Charles Proxy
-
加密分析:
- CyberChef
- OpenSSL命令行工具