JS逆向鉴权加密算法拿下的高危漏洞

admin 2026-05-03 04:46:09 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 作者通过JS逆向分析发现某微信服务号存在鉴权漏洞,前端泄露账户信息可构造Authorization签名(时间戳+MD5组合),逆向获取盐值后成功越权访问他人数据。该漏洞因全局使用相同鉴权机制危害较大,已合法提交并修复。 综合评分: 85 文章分类: WEB安全,漏洞分析,渗透测试,代码审计,实战经验


cover_image

JS逆向鉴权加密算法拿下的高危漏洞

原创

C1ph3rNul1 Sec C1ph3rNul1 Sec

C1ph3rNul1 Sec

2025年12月29日 12:07 福建

在小说阅读器读本章

去阅读

风和日丽的一天,无聊了想挖洞,于是打开了微信服务号,进入了某个微信链接开始抓包:

然后就抓到了前台js泄露的账号密码信息:

利用账号信息进行登录,可以直接登录成功:

进去之后,翻了翻功能点,没找到什么有用的东西,便把目光转向了鉴权。

抓个人信息包发现,认证的校验信息是由Authorization进行:

而Authorization是一个base64编码的字符串:

很眼熟的算法,由时间戳和两个md5字符串组成。

这种时间戳:32位小写hex:32位小写hex的格式拆开就能一眼看出它是Kwai系接口的通用签名方案,常叫 __NStokensig 或 NStoken。

所以可以知道,最后一段md5即是token,前一段数字是时间戳。

而token的获得可以采用前台泄露的账户信息。

再继续看用户信息的接口处:

接口显示的数字便是当前用户的id,而修改成其他人的id会导致鉴权失败404。

由此便大胆推断,如果能构建一个他人id是不是有可能越权操作?

所以便开始操作:

前端js文件处下断点,搜索:Authorization

可以看到Authorization是由di函数签发的,继续跟进:

提取了url的参数之前的完整地址作为参数传入。然后经过这段代码处理即可拿到加密的字符串,到这里更能够证明猜想,用户信息是通过算法签发接口去访问的,而且有时限限制。

这边跟进获取ci值,也就是salt加盐的盐值:

在vdoFa处打断点跟进:

可以看到ci返回了个字符串,也就是盐值。

最后经过bota函数处理,返回Authorization。

继续跟进到iFDI函数,在调试信息里面,可以看到这边传入方式是:

salt值+url值+时间戳。

所以Authorization加密方式已经摸清除了,这个时候我们可以构造加密代码,生成Authorization值:

传入验证,发现可以响应用户信息,验证成功:

尝试越权,成功返回id w+的信息:

由于该系统所有的接口都用的Authorization认证,也是危害蛮大的。

拿下了高危漏洞:

喜欢的师傅点点关注和喜欢,跪谢~

免责声明:漏洞均已提交至相关平台报送并修复,请勿再次报送以及用于非法用途,造成一切后果与本人无关。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:C1ph3rNul1 Sec C1ph3rNul1 Sec C1ph3rNul1 Sec《JS逆向鉴权加密算法拿下的高危漏洞》

评论:0   参与:  0