签名对抗技术:实战案例与分析
Xzzz 历史精选 677浏览 · 2025-03-10 08:34

现在的网站业务越来越不好测了,不是加密就是签名,所以咱们的技术水平也要慢慢提升,本文主要分享几个自己签名绕过的真实案例,并配合autodecoder插件进行绕过测试

第一个案例

一个通用的系统框架,在绕过签名后测试找到了通杀的越权漏洞,目前漏洞也已修复

首先改数据包会提示签名错误

image.png




通过js代码中搜索X-Scf-Sign找到签名生成的逻辑,可以看到Sign调用了g()函数

image.png




继续跟进调试跟踪g()函数

可以看到最终他是由a+c+d+w然后进行了md5的加密

从调试的结果分析

a是接口地址

c是X-SCF-NONCE=随机数&X-SCF-TV=毫秒级时间戳

d是传递的数据data

w是认证的token,在header中

image.png


之后写个py脚本进行签名绕过,把时间戳timestamp和sign的header替换掉

image.png


之后我们就可以愉快的改包测试了

image.png


这里是py打印的日志,也就是我们改过的内容

image.png


第二个案例

这个系统跟第一个案例的逻辑差不多,签名也是在header中,该数据也会提示签名错误

image.png


通过搜索X-Ves-Signture定位带签名逻辑处,分析签名逻辑

wn是签名后的值,使用的是hmacCn进行签名,pnsalt,然后又进行了一次base64编码



继续分析Cn怎么来的

Cn=fn+gn+yn+dn+ln,调试的时候打断点分析值的来源

fn是header中的appid的值

gn是请求的方法get

yn是去掉特殊字符后进行url编码,然后进行base64编码

ln是时间戳



image.png


分析出所有的值后,就可以去编写脚本进行绕过了

image.png


改包发送,提示不允许,说明签名已经绕过了(之前这个接口是有越权的,目前也已经修复了)

image.png


py输出的日志窗口

image.png


第三个案例

这个系统是一个get型的签名,我们直接改数据也是会报签名错误

image.png


继续分析js代码找签名生成的逻辑,这个就比较简单了,字符串拼接时间戳在拼接字符串,然后进行一个md5加密

image.png


然后去写py脚本进行处理

image.png


再次改包发送会提示水印错误,这个接口之前有短信轰炸,目前也已经修复了

image.png


py的日志输出记录

image.png




第四个案例

是一个小程序的,改数据重新发包提示签名错误

image.png


我们先反编译出来代码,现粗略的找一下签名函数生成的地方,然后再去hook小程序进行打断点调试

image.png


image.png


小程序调试会有点卡,确认函数是vscode的之后就没再继续调试了,直接分析代码

这个断点没继续跟下去确认是md5还是hmac的,当时找到o的值后进行md5验证了下sign是否和md5后的o一样



分析代码

o=base64(时间戳)+token+salt+做过处理的data

主要分享做过处理的data

我们传递的是一个json数据,处理之后为custmerid98261387241318这样的形式

笔者代码不好直接丢给ai帮我分析,转换成一个py函数

image.png


最后生成了这个么一个函数,也就是处理data的,因为数据包到burp是str需要先做一次转换

写成py脚本进行处理

image.png


继续改包重放即可成功,这个站也有漏洞,但是重复了- .-

image.png


控制台的日志输出记录

image.png




最后,希望师傅们多多进步,天天出货

1 条评论
某人
表情
可输入 255