文章总结: 作者通过JS逆向分析发现某微信服务号存在鉴权漏洞,前端泄露账户信息可构造Authorization签名(时间戳+MD5组合),逆向获取盐值后成功越权访问他人数据。该漏洞因全局使用相同鉴权机制危害较大,已合法提交并修复。 综合评分: 85 文章分类: WEB安全,漏洞分析,渗透测试,代码审计,实战经验
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逆向鉴权加密算法拿下的高危漏洞》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。




![[更新]单文件LNK绕过,但有限制](/images/random/titlepic/1.jpg)



评论