"另类"APP漏洞挖掘
字数 1344 2025-08-23 18:31:18

"另类"APP漏洞挖掘技术详解

1. 传统APP渗透测试方法

常规APP渗透测试流程包括:

  • 脱壳处理(针对加固的APK)
  • 使用模拟器或真机环境
  • 刷机获取root权限
  • 设置代理抓包分析
  • 反编译查看源码

2. 案例中的"另类"方法

当遇到以下困难时:

  1. APK有壳且脱壳失败
  2. 所有通信数据都加密
  3. 无法通过常规方法获取加密方式

2.1 创新解决步骤

  1. 修改APK后缀为ZIP:直接解压查看内部文件结构
  2. 定位关键资源:在assets/www目录下发现前端资源文件
  3. 分析JavaScript文件
    • 使用工具格式化umi.js文件(如https://www.1tool.site/#/javascript?id=1)
    • 使用Notepad++正则表达式匹配关键路径
  4. 搜索加密相关关键词
    • 搜索"mode"字符串(177个结果)
    • 直接搜索常见加密方式:"ECB"、"CBC"
    • 成功发现加密密钥(key)和偏移量(iv)

2.2 接口分析与利用

  1. 解密数据:使用发现的加密参数解密通信数据
  2. 分析请求方式
    • 发现关键请求方法qryNextOrgStructureView
    • 替换请求方式为zyhyy.qryNextOrgStructureView
  3. 参数构造
    • 从源码中发现areaIdstaffType参数可用
    • 继续搜索zyhyy开头的其他方法,发现zyhyy.qryOrgInfoByAreaId
  4. 数据包构造
    • 构造包含area_idstaff_type的请求数据
    • 使用已知加密方式加密请求数据
    • 发送请求并解密响应

2.3 漏洞利用扩展

  1. 获取组织信息
    • 通过qryStaffInfoByOrgId接口
    • 使用获取到的org_id值构造请求
    • 解密响应获取组织用户信息
  2. 信息泄露漏洞
    • 尝试爆破org_id参数值
    • 成功获取所有组织的用户信息

3. 技术要点总结

  1. APK文件结构分析

    • APK本质是ZIP格式,可直接解压查看资源
    • assets目录常包含前端资源文件
  2. JavaScript分析技巧

    • 格式化混淆的JS代码提高可读性
    • 使用正则表达式搜索关键信息
    • 重点搜索加密相关关键词
  3. 加密方式识别

    • 常见对称加密模式:ECB、CBC等
    • 注意搜索密钥(key)和偏移量(iv)的声明
  4. 接口逆向分析

    • 通过JS代码分析API调用方式
    • 识别可操控的参数
    • 构造合法请求测试接口
  5. 漏洞利用方法

    • 参数遍历/爆破
    • 敏感信息泄露验证

4. 防御建议

  1. 客户端安全

    • 避免在前端代码中硬编码加密密钥
    • 对敏感逻辑进行混淆加固
    • 使用证书绑定防止中间人攻击
  2. 服务端安全

    • 实施严格的参数校验
    • 对敏感接口增加访问控制
    • 使用一次性令牌防止参数爆破
  3. 通信安全

    • 避免使用固定加密密钥
    • 实现动态密钥交换机制
    • 使用非对称加密保护对称密钥

5. 工具推荐

  1. APK分析:

    • JADX/GDA:反编译工具
    • APKTool:APK解包工具
  2. JS分析:

    • Chrome开发者工具
    • JavaScript格式化工具
    • Notepad++(支持正则搜索)
  3. 抓包调试:

    • Burp Suite
    • Fiddler
    • Charles Proxy
  4. 加密分析:

    • CyberChef
    • OpenSSL命令行工具
"另类"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命令行工具