NVDB(工业和信息化部网络安全威胁和漏洞信息共享平台)前端签名还原

2 条回复
28 次浏览

这网站登录要验证码,我想一直保持登录,就准备定时去请求后端服务保持登录态,结果没注意到它有签名。

看了一下其实签名很简单。
image
先看了下个人信息部分,后端返回加密的,前端解开了,先验证下在哪里脱敏的,有的系统是后端脱敏,有的偷懒就在前端脱敏。

既然解密了邮箱,先搜一下 decrypt 看看
image
找到了几个解密方法,直接去 app......js 里面看
image
这里是加解密方法,下面有两个密钥,其实可以猜一下,长的是私钥(别问我为什么)

然后验证下
image
成功解析了,是一个私钥(为什么不用 AES 呢?这样不就是后端用公钥加密,前端用私钥解密了)

image
解密成功,果然是前端脱敏的。

下面看看请求签名吧。
image
每个 api 的请求都有个 signature 的请求头
这个签名由两部分组成,其实见得多了就知道,这里就是时间戳+MD5

我们先搜索 signature
image
直接锁定了,定位过去打断点就行了。

image
下断点,触发请求,这里主要看Object(h.a)(o, n)

image
第一部分断点下错了,应该在 app 里面下,不影响,现在已经断到了

image
这里就是 a+;+o,a 是时间戳跟上面的猜测是一样的,o 是 Object(f.a)(a, n)的结果,n 就是请求体,直接单步进去

image
这里就是核心方法了,其实很简单,自己分析或者直接下断点就行了
r 就是 md5
无非就是i = e + "," + a + ",1e31af8c14999aa99d78537a8641ea4d"或者c = e + ",1e31af8c14999aa99d78537a8641ea4d"

image
1770360125648,10,1,1e31af8c14999aa99d78537a8641ea4d
时间戳+请求体中 json 的键值对的值+固定字符串

image
1770360125648,10,1,1e31af8c14999aa99d78537a8641ea4d的 md5 结果为:20736f5e42b82db8c5d0c92bdd89c262

image
后端请求的签名和我们拿得原文再 MD5 的签名一模一样,这里报错是因为断点时间太长导致请求的时间戳超时,实际上算法是对的。

讲故事的人
OP
Guardian

只是还原一下请求签名,没有去用工具大量请求。

发表一个评论

R保持