文章总结: 本文记录了一次SRC挖掘过程,针对登录接口验证码请求的sign签名进行JS逆向。作者利用Chrome开发者工具的断点调试与堆栈回溯技术,定位并还原了基于MD5和自定义函数的签名生成算法。通过编写脚本绕过签名校验,成功利用验证码双发漏洞实现了任意用户登录,详细展示了从静态分析到漏洞利用的完整攻防思路。 综合评分: 95 文章分类: WEB安全,SRC活动,渗透测试,漏洞分析,漏洞POC
SRC | 从JS逆向到任意用户登录
146602485156465
李白你好
2025年12月26日 08:02 青海
免责声明:由于传播、利用本公众号李白你好所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号李白你好及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
在测登录接口的时候,验证码请求包存在sign校验,逆向生成sign值,测试发现存在验证码双发问题,导致任意用户登录。
文章作者:先知社区(1466024851564656)
参考来源:https://xz.aliyun.com/news/90856
1►
JS分析
1、点击获取验证码,测试验证码问题,无法再次放包,发现请求包存在sign值,猜想应该是Sign值在做校验;
2、直接开始逆向,先看下长度,32位,首先想到MD5加密
3、尝试关键词搜索sign,sign:,sign=
结果关联文件太多,不适合使用这种方式找;
4、换个方式,使用启动器分析
Promise.then() 可以看到是异步回调
为了测试方便,验证码刷新接口有时间限制,换一个接口测试/page
进入末尾,打断点,刷新页面,发现已经生成了sign的值;
进入第一个异步栈v.request,发现这时的head为空,这里可以看出信息是在v里面的函数生成
打开数组v里边存在很多方法,打开第二个方法,发现onrequest,这里可以看出t为请求参数,e()函数加载了t
进入e()方法,找到e.headers.sign生成的方式,现在只要找到这段代码中的未知函数,这就可以生成sign的值;
sign=(time = headers['time'], t = md(data), pd("ghaepVfxxxxxgnk4NCTXLApxQkBcvh1", pd("mwMlWOdyMxxxxxzQPulT1ndRZIAjShDB", pd("ZuSj0gwgxxxxx4fTEz55oAG2q2p1SVGKK", t, time), time), time))
*最终函数的逻辑为:
接着继续找未知函数md(),pd()
先追md()函数
md()函数中包含未知函数gd()和_d()函数,继续向下,拿到gd()
回到md()函数,继续追_d()函数
接着找pd()函数,该函数中涉及未知fd()函数
找到fd()函数
进入fd()函数,发现该函数疑似MD5加密;推测是对n=t+e+time的MD5加密‘。
使用在线MD5加密平台验证,控制台获取n=t+e+time的值。
加密结果相同,均为:’02d932d40fabc5db9345f3309fb7d15a
到这里,我们就可以写pd()函数了
function md5(str) { return crypto.createHash('md5').update(str, 'utf8').digest('hex');}
pd = function(e, t, time) { var n = t + e + time; // return n = fd()(n) return md5(n) }
综上 所有的未知函数都已找到,可以说sign的值已经出来了。
2►
脚本测试
1、使用js脚本生成时间戳timestamp值和sign值
2、使用py脚本调用js,修改验证码请求包,两个手机号码同时收到验证码;
到这里就造成了任意用户登录漏洞!
3►
网络安全情报攻防站
www.libaisec.com
综合性的技术交流与资源共享社区
专注于红蓝对抗、攻防渗透、威胁情报、数据泄露
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:李白你好 146602485156465《SRC | 从JS逆向到任意用户登录》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论