签名对抗技术:实战案例与分析
字数 1468 2025-08-29 08:30:18

签名对抗技术:实战案例与分析

引言

在现代Web应用安全测试中,签名机制已成为常见的安全防护手段。本文通过四个真实案例,详细分析签名绕过技术,帮助安全测试人员提升对抗签名防护的能力。

案例一:通用系统框架签名绕过

签名机制分析

  1. 签名位置:Header中的X-Scf-Sign
  2. 签名生成逻辑
    • 调用g()函数生成签名
    • 签名组成:a + c + d + w后进行MD5加密
      • a:接口地址
      • cX-SCF-NONCE=随机数&X-SCF-TV=毫秒级时间戳
      • d:传递的数据data
      • w:认证token(位于header中)

绕过步骤

  1. 通过JavaScript代码搜索定位签名生成逻辑
  2. 调试跟踪g()函数分析签名组成
  3. 编写Python脚本重新生成有效签名:
    • 替换时间戳timestamp
    • 替换sign的header值

测试结果

成功绕过签名验证,发现通杀越权漏洞(已修复)

案例二:Ves系统签名绕过

签名机制分析

  1. 签名位置:Header中的X-Ves-Signture
  2. 签名生成逻辑
    • wn = Base64(HMAC(Cn, pn))
      • pn:salt值
      • Cn = fn + gn + yn + dn + ln
        • fn:header中的appid值
        • gn:请求方法(GET/POST等)
        • yn:特殊字符处理后URL编码+Base64
        • dn:请求数据
        • ln:时间戳

绕过步骤

  1. 通过JavaScript搜索定位签名逻辑
  2. 分析Cn各组成部分的来源
  3. 编写Python脚本重新生成有效签名

测试结果

签名成功绕过(原接口存在越权漏洞,已修复)

案例三:GET型签名绕过

签名机制分析

  1. 签名类型:GET请求签名
  2. 签名生成逻辑
    • 字符串拼接时间戳后再拼接字符串
    • 对拼接结果进行MD5加密

绕过步骤

  1. 分析JavaScript代码定位签名生成逻辑
  2. 编写Python脚本处理签名生成
  3. 修改请求包并重新发送

测试结果

签名成功绕过(原接口存在短信轰炸漏洞,已修复)

案例四:小程序签名绕过

签名机制分析

  1. 签名生成逻辑
    • o = Base64(时间戳) + token + salt + 处理后的data
    • o进行MD5加密生成签名
  2. data处理方式
    • 传递JSON数据
    • 处理后格式示例:custmerid98261387241318

绕过步骤

  1. 反编译小程序代码定位签名函数
  2. Hook小程序进行调试
  3. 分析data处理逻辑并转换为Python函数
  4. 编写完整Python脚本生成有效签名

测试结果

成功绕过签名验证(发现重复漏洞)

通用技术要点

  1. 签名定位方法

    • 搜索常见签名header名称(X-Sign, X-Signature等)
    • 分析JavaScript代码
    • 对小程序进行反编译和Hook调试
  2. 签名组成分析

    • 常见组成部分:时间戳、随机数、请求数据、token、salt
    • 常见加密方式:MD5、HMAC、Base64
  3. 自动化工具

    • 使用autodecoder插件辅助测试
    • 编写Python脚本自动化签名生成
  4. 调试技巧

    • 浏览器开发者工具调试JavaScript
    • 小程序Hook调试
    • 断点分析变量值

防御建议

  1. 增加签名算法的复杂度
  2. 使用一次性随机数防止重放
  3. 关键操作增加二次验证
  4. 定期更新签名算法

总结

本文通过四个实战案例详细分析了签名绕过技术,展示了从签名定位、逻辑分析到脚本编写的完整过程。安全测试人员需要不断提升逆向分析和代码调试能力,才能有效应对日益复杂的签名防护机制。

签名对抗技术:实战案例与分析 引言 在现代Web应用安全测试中,签名机制已成为常见的安全防护手段。本文通过四个真实案例,详细分析签名绕过技术,帮助安全测试人员提升对抗签名防护的能力。 案例一:通用系统框架签名绕过 签名机制分析 签名位置 :Header中的 X-Scf-Sign 签名生成逻辑 : 调用 g() 函数生成签名 签名组成: a + c + d + w 后进行MD5加密 a :接口地址 c : X-SCF-NONCE=随机数&X-SCF-TV=毫秒级时间戳 d :传递的数据data w :认证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 + ln fn :header中的appid值 gn :请求方法(GET/POST等) yn :特殊字符处理后URL编码+Base64 dn :请求数据 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调试 断点分析变量值 防御建议 增加签名算法的复杂度 使用一次性随机数防止重放 关键操作增加二次验证 定期更新签名算法 总结 本文通过四个实战案例详细分析了签名绕过技术,展示了从签名定位、逻辑分析到脚本编写的完整过程。安全测试人员需要不断提升逆向分析和代码调试能力,才能有效应对日益复杂的签名防护机制。