找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2183

积分

0

好友

313

主题
发表于 昨天 04:53 | 查看: 8| 回复: 0

这是一次海外的众测项目,主要测试目标是 App 和管理后台。由于我开始测试的时间比较晚,越权类漏洞的提交名额已经满了,因此我暂时放弃了漏洞可能较多的管理后台,将主要精力放在了 App 端的安全测试上。

首先,让我们进行抓包分析,初步了解应用的通信情况。

Burp Suite 拦截的 HTTP 请求与响应截图

从抓包结果可以看出,当前面临两个主要问题:一是响应体被加密,二是请求体疑似带有签名验证。想要进行深入测试,必须解决这两个问题。首先,我们需要确认签名验证是否真实存在。拦截一个请求,修改其请求体内容,观察 App 的反应。

这里我们随机修改几个参数。

在线代码编辑器界面截图

修改后,应用弹出提示。将其翻译后,意思是“请求无效”。这表明签名验证很可能不是摆设,请求体中的所有参数应该都参与了签名计算。

手机登录界面提示请求无效的截图

面对这种情况,该怎么办呢?我本身并不精通逆向工程。

别着急,我们可以使用一款强大的工具——算法助手。这款工具能帮助我们在不进行复杂逆向工程的情况下,分析应用的加解密和签名逻辑。

清洁助手Pro应用图标

进入算法助手后,勾选目标 App,并启用相关的算法分析、设备环境模拟等功能。

算法助手(Lsposed)应用设置界面

然后点击右上角的“重启 App”按钮,使配置生效。

算法助手快捷功能设置界面

此时,我们再次查看 Burp Suite 捕获的加密响应包。将加密结果复制出来,粘贴到算法助手的搜索框中,即可搜索到相关的算法调用日志。

显示请求响应详情的软件界面截图

算法助手隐私功能设置界面

算法助手搜索框截图

显示AES/CBC/PKCS5Padding消息列表的截图

点击任意一条日志查看详情。

AES解密参数详情截图

可以看到,算法助手已经清晰地给出了 AES 解密所需的所有参数(密钥、IV等),并且这些值看起来是固定的,并非随机生成。很好,现在只剩下签名算法需要破解了。用同样的方法,将请求包中签名的值复制到算法助手里搜索。

HmacSHA256算法配置界面截图

从日志可以看出,签名内容是由整个请求体加上一个随机码(nonce)计算得出的。这个随机码肯定会在请求包中携带,否则服务器无法验证签名。我们在请求头中搜索一下,看看是哪部分。

带有签名请求头的HTTP POST请求截图

很明显,是由 X-TimestampX-Nonce 这两个请求头参与生成的。至此,验签和加解密算法所需的所有参数都已齐备。下一步就是编写脚本,让 Burp Suite 能够自动解密响应体,并对修改后的请求体重新进行签名。

这里用到了 Burp Suite 的 Galaxy 插件。最终实现的效果如下,这极大提升了渗透测试的效率。

代码编辑器与调试工具界面截图

同时,由于可以自动重新签名,使得爆破、遍历、参数替换等攻击行为能够自动化进行,这为我们后续发现漏洞奠定了基础。

首先发现的是一个请求频率限制绕过漏洞。在测试过程中,当请求次数超过一定阈值后,服务端会统一返回“请求太多”的错误。我主要考虑了以下三种可能性:

显示错误响应‘系统繁忙’的截图

  1. 基于请求源 IP 进行限制。
  2. 基于请求头中的 Deviceid 字段进行限制。
  3. 基于多个参数复合生成的指纹进行限制。

我首先测试了修改 Deviceid 的值,但未能绕过限制。
第三种情况不太好猜测具体是哪些参数,所以我优先测试了基于 IP 限制的可能性。在 Burp Suite 中设置一个上游代理,并通过全局规则来动态修改出口 IP,然后再次发起请求,发现限制被成功绕过。

Burp Suite 上游代理服务器设置界面

Clash V2 代理软件界面截图

既然提到了伪造 IP,那么 X-Forwarded-For (XFF) 头注入漏洞就不得不测试了。我们直接尝试添加一个自动修改 X-Forwarded-For 请求头的配置,测试后发现可以绕过频率限制。这样,第一个漏洞就成功到手了。

(由于撰写本文时漏洞已修复,以下使用报告中的截图进行说明)

显示HTTP响应及‘获取root权限’按钮的截图

Fiddler HTTP match and replace 规则设置界面

Burp Suite 界面与模拟登录窗口截图

现在,阻碍我们进行爆破测试的三个主要问题都已解决:

  1. 请求体自动重签。
  2. 响应体自动解密(用于判断爆破是否成功)。
  3. 请求频率限制绕过。

接下来,我们自然要测试登录处的短信验证码爆破漏洞。直接开始操作。我们在自动解密脚本中加入了生成随机 IP 地址并赋值给 X-Forwarded-For 头的功能,以利用上述的 XFF 漏洞绕过请求限制。

用于生成签名和请求头的 Python 代码

网络攻击检测界面表格截图

很好,又一个任意账号接管的漏洞到手。后续由于时间关系,没有继续深入挖掘。这次测试也相当于在工作之余赚了笔外快。

两笔微信转账记录截图

通过这次实战,我们可以看到,借助合适的工具链和分析方法,即使不深入逆向工程,也能有效完成对移动应用安全机制的测试。如果你对这类移动应用安全测试技术感兴趣,欢迎在云栈社区与更多安全研究者交流探讨。




上一篇:基于Rust构建静态博客生成器:从Markdown到高性能HTML站点的实践
下一篇:手把手教你用GDB调试分析C++服务Core Dump崩溃
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-14 12:42 , Processed in 0.198400 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表