签名对抗技术:实战案例与分析
字数 1468 2025-08-29 08:30:18
签名对抗技术:实战案例与分析
引言
在现代Web应用安全测试中,签名机制已成为常见的安全防护手段。本文通过四个真实案例,详细分析签名绕过技术,帮助安全测试人员提升对抗签名防护的能力。
案例一:通用系统框架签名绕过
签名机制分析
- 签名位置:Header中的
X-Scf-Sign - 签名生成逻辑:
- 调用
g()函数生成签名 - 签名组成:
a + c + d + w后进行MD5加密a:接口地址c:X-SCF-NONCE=随机数&X-SCF-TV=毫秒级时间戳d:传递的数据dataw:认证token(位于header中)
- 调用
绕过步骤
- 通过JavaScript代码搜索定位签名生成逻辑
- 调试跟踪
g()函数分析签名组成 - 编写Python脚本重新生成有效签名:
- 替换时间戳
timestamp - 替换
sign的header值
- 替换时间戳
测试结果
成功绕过签名验证,发现通杀越权漏洞(已修复)
案例二:Ves系统签名绕过
签名机制分析
- 签名位置:Header中的
X-Ves-Signture - 签名生成逻辑:
wn= Base64(HMAC(Cn, pn))pn:salt值Cn=fn + gn + yn + dn + lnfn:header中的appid值gn:请求方法(GET/POST等)yn:特殊字符处理后URL编码+Base64dn:请求数据ln:时间戳
绕过步骤
- 通过JavaScript搜索定位签名逻辑
- 分析
Cn各组成部分的来源 - 编写Python脚本重新生成有效签名
测试结果
签名成功绕过(原接口存在越权漏洞,已修复)
案例三:GET型签名绕过
签名机制分析
- 签名类型:GET请求签名
- 签名生成逻辑:
- 字符串拼接时间戳后再拼接字符串
- 对拼接结果进行MD5加密
绕过步骤
- 分析JavaScript代码定位签名生成逻辑
- 编写Python脚本处理签名生成
- 修改请求包并重新发送
测试结果
签名成功绕过(原接口存在短信轰炸漏洞,已修复)
案例四:小程序签名绕过
签名机制分析
- 签名生成逻辑:
o= Base64(时间戳) + token + salt + 处理后的data- 对
o进行MD5加密生成签名
- data处理方式:
- 传递JSON数据
- 处理后格式示例:
custmerid98261387241318
绕过步骤
- 反编译小程序代码定位签名函数
- Hook小程序进行调试
- 分析data处理逻辑并转换为Python函数
- 编写完整Python脚本生成有效签名
测试结果
成功绕过签名验证(发现重复漏洞)
通用技术要点
-
签名定位方法:
- 搜索常见签名header名称(X-Sign, X-Signature等)
- 分析JavaScript代码
- 对小程序进行反编译和Hook调试
-
签名组成分析:
- 常见组成部分:时间戳、随机数、请求数据、token、salt
- 常见加密方式:MD5、HMAC、Base64
-
自动化工具:
- 使用autodecoder插件辅助测试
- 编写Python脚本自动化签名生成
-
调试技巧:
- 浏览器开发者工具调试JavaScript
- 小程序Hook调试
- 断点分析变量值
防御建议
- 增加签名算法的复杂度
- 使用一次性随机数防止重放
- 关键操作增加二次验证
- 定期更新签名算法
总结
本文通过四个实战案例详细分析了签名绕过技术,展示了从签名定位、逻辑分析到脚本编写的完整过程。安全测试人员需要不断提升逆向分析和代码调试能力,才能有效应对日益复杂的签名防护机制。