某App渗透测试实战:从信息泄漏到OSS凭据暴露的多维度漏洞分析
字数 1604 2025-12-24 12:14:42

某App渗透测试实战教学文档

一、前言

本教学文档基于某App渗透测试实战案例,详细分析从信息泄漏到OSS凭据暴露的多维度漏洞。重点涵盖数据包签名逆向分析、App配置错误导致的漏洞以及基础渗透测试技术。

二、App查壳技术

2.1 查壳目的

  • 检测App是否经过加固保护
  • 判断是否需要脱壳处理
  • 评估逆向分析难度

2.2 查壳方法

  • 使用专业查壳工具检测APK文件
  • 观察检测结果:本案例中App未加固且无代码混淆
  • 注意:查壳工具检测成功率约90%,可能存在误判

2.3 结果分析

  • 无加固:直接反编译分析
  • 无代码混淆:代码可读性高,接口信息清晰可见

三、信息泄漏漏洞

3.1 漏洞发现

  • 测试功能点:忘记密码功能
  • 输入正确账号:回显脱敏手机号
  • 数据包分析:返回包未做脱敏处理

3.2 漏洞验证

请求示例:

POST /xx/xx/smsCode/sendByAccount HTTP/1.1
Accept: application/json
token: 35be2affbe754aab1fadaa473b908fc9
Content-Type: application/json
Content-Length: 57
Host: xxs.xx.com

{"account":"030600","timestamp":1734567890123,"sign":912940}

3.3 漏洞特征

  • 前端显示脱敏,后端返回完整数据
  • 存在手机号信息泄漏风险

四、逆向分析技术

4.1 签名机制分析

发现点: 更换account字段时提示"无效签名校验"

4.2 逆向分析步骤

4.2.1 反编译APK

  • 工具选择:使用主流反编译工具
  • 优势:无加固、无混淆,直接分析源码

4.2.2 关键代码定位

  1. 搜索特征字段:timestamp、sign、token
  2. 分析请求URI:sendByAccount
  3. 定位关键方法:sendAccountCode

4.2.3 核心代码分析

public final void sendAccountCode(String account, RetrofitCallBack<Base<String>> callBack) {
    JSONObject jSONObject = new JSONObject();
    try {
        long jCurrentTimeMillis = System.currentTimeMillis() / 1000;
        int iRandom = RangesKt.random(new IntRange(100000, 999999), Random.INSTANCE);
        jSONObject.put("account", account);
        jSONObject.put("timestamp", jCurrentTimeMillis);
        jSONObject.put("sign", iRandom);
        String strMd5Encode = StringExtensionsKt.md5Encode(account + jCurrentTimeMillis + iRandom);
        // ... 后续请求处理
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

4.2.4 签名生成逻辑

  1. 参数拼接:account + timestamp + sign
  2. MD5加密:对拼接字符串进行MD5处理
  3. Token设置:MD5值放入请求头token字段

4.2.5 时间戳关键点

  • 服务端预期:毫秒级时间戳
  • 常见错误:误传秒级时间戳(数值差1000倍)
  • 正确格式:System.currentTimeMillis() 直接使用

4.3 自动化实现

根据分析结果编写自动化脚本,实现:

  • 自动生成有效签名
  • 批量账号爆破
  • 手机号信息获取

五、Backup备份漏洞

5.1 漏洞位置

AndroidManifest.xml配置:

<application
    android:allowBackup="true"
    android:fullBackupContent="@xml/backup_rules">

5.2 漏洞利用

5.2.1 备份操作

adb backup -noapk com.xxx.apps.xxxx -f xx_backup.ab

5.2.2 验证方法

  • 检查备份文件大小(正常应有几十KB)
  • 删除App后恢复测试:adb restore xx_backup.ab

5.2.3 风险影响

  • 未授权数据导出
  • 跨设备账号无密码登录
  • 敏感信息泄漏

六、组件导出漏洞

6.1 漏洞配置

<activity
    android:name="com.xxx.apps.xxx.ui.profile.ChangePasswordActivity"
    android:exported="true"/>

6.2 漏洞验证

adb shell am start -n com.xxx.apps.xxxg/com.xxx.apps.xxx.ui.profile.ChangePasswordActivity

6.3 攻击场景

  1. 未授权访问:直接调用修改密码页面
  2. 钓鱼攻击:恶意App诱导用户操作
  3. 权限绕过:跳过正常登录流程

七、OSS凭据泄漏漏洞

7.1 漏洞发现

  • 登录后获取阿里云OSS临时凭据
  • 凭据包含访问密钥和令牌信息

7.2 漏洞利用

  1. 凭据验证:测试临时凭据有效性
  2. OSS访问:登录阿里云OSS控制台
  3. 数据枚举:查看存储桶内容和文件

7.3 风险影响

  • 云存储数据泄漏
  • 敏感文件暴露
  • 企业信息资产损失

八、渗透测试流程总结

8.1 测试流程

  1. 信息收集:查壳、反编译、接口分析
  2. 漏洞挖掘:信息泄漏、配置错误、权限问题
  3. 漏洞验证:实际测试、风险确认
  4. 报告编写:详细记录、风险评级

8.2 技术要点

  • 逆向分析:关注签名算法、加密逻辑
  • 配置审计:检查AndroidManifest.xml安全配置
  • 数据流跟踪:从请求到响应的完整分析

8.3 防护建议

  1. 代码保护:适当加固和混淆
  2. 配置安全:合理设置组件导出权限
  3. 数据传输:完整的数据脱敏和加密
  4. 凭据管理:安全的云服务访问控制

九、附录

9.1 工具推荐

  • APK查壳工具
  • 反编译工具(Jadx、JEB等)
  • 抓包工具(Burp Suite、Charles)
  • ADB调试工具

9.2 参考标准

  • OWASP Mobile Security Testing Guide
  • 移动互联网应用程序安全开发规范
某App渗透测试实战教学文档 一、前言 本教学文档基于某App渗透测试实战案例,详细分析从信息泄漏到OSS凭据暴露的多维度漏洞。重点涵盖数据包签名逆向分析、App配置错误导致的漏洞以及基础渗透测试技术。 二、App查壳技术 2.1 查壳目的 检测App是否经过加固保护 判断是否需要脱壳处理 评估逆向分析难度 2.2 查壳方法 使用专业查壳工具检测APK文件 观察检测结果:本案例中App未加固且无代码混淆 注意:查壳工具检测成功率约90%,可能存在误判 2.3 结果分析 无加固:直接反编译分析 无代码混淆:代码可读性高,接口信息清晰可见 三、信息泄漏漏洞 3.1 漏洞发现 测试功能点:忘记密码功能 输入正确账号:回显脱敏手机号 数据包分析:返回包未做脱敏处理 3.2 漏洞验证 请求示例: 3.3 漏洞特征 前端显示脱敏,后端返回完整数据 存在手机号信息泄漏风险 四、逆向分析技术 4.1 签名机制分析 发现点: 更换account字段时提示"无效签名校验" 4.2 逆向分析步骤 4.2.1 反编译APK 工具选择:使用主流反编译工具 优势:无加固、无混淆,直接分析源码 4.2.2 关键代码定位 搜索特征字段 :timestamp、sign、token 分析请求URI :sendByAccount 定位关键方法 :sendAccountCode 4.2.3 核心代码分析 4.2.4 签名生成逻辑 参数拼接 :account + timestamp + sign MD5加密 :对拼接字符串进行MD5处理 Token设置 :MD5值放入请求头token字段 4.2.5 时间戳关键点 服务端预期 :毫秒级时间戳 常见错误 :误传秒级时间戳(数值差1000倍) 正确格式 :System.currentTimeMillis() 直接使用 4.3 自动化实现 根据分析结果编写自动化脚本,实现: 自动生成有效签名 批量账号爆破 手机号信息获取 五、Backup备份漏洞 5.1 漏洞位置 AndroidManifest.xml配置: 5.2 漏洞利用 5.2.1 备份操作 5.2.2 验证方法 检查备份文件大小(正常应有几十KB) 删除App后恢复测试: adb restore xx_backup.ab 5.2.3 风险影响 未授权数据导出 跨设备账号无密码登录 敏感信息泄漏 六、组件导出漏洞 6.1 漏洞配置 6.2 漏洞验证 6.3 攻击场景 未授权访问 :直接调用修改密码页面 钓鱼攻击 :恶意App诱导用户操作 权限绕过 :跳过正常登录流程 七、OSS凭据泄漏漏洞 7.1 漏洞发现 登录后获取阿里云OSS临时凭据 凭据包含访问密钥和令牌信息 7.2 漏洞利用 凭据验证 :测试临时凭据有效性 OSS访问 :登录阿里云OSS控制台 数据枚举 :查看存储桶内容和文件 7.3 风险影响 云存储数据泄漏 敏感文件暴露 企业信息资产损失 八、渗透测试流程总结 8.1 测试流程 信息收集 :查壳、反编译、接口分析 漏洞挖掘 :信息泄漏、配置错误、权限问题 漏洞验证 :实际测试、风险确认 报告编写 :详细记录、风险评级 8.2 技术要点 逆向分析 :关注签名算法、加密逻辑 配置审计 :检查AndroidManifest.xml安全配置 数据流跟踪 :从请求到响应的完整分析 8.3 防护建议 代码保护 :适当加固和混淆 配置安全 :合理设置组件导出权限 数据传输 :完整的数据脱敏和加密 凭据管理 :安全的云服务访问控制 九、附录 9.1 工具推荐 APK查壳工具 反编译工具(Jadx、JEB等) 抓包工具(Burp Suite、Charles) ADB调试工具 9.2 参考标准 OWASP Mobile Security Testing Guide 移动互联网应用程序安全开发规范