SRC | 从JS逆向到任意用户登录-网络安全论坛-网络安全-阻击者联盟

SRC | 从JS逆向到任意用户登录

免责声明:由于传播、利用本公众号李白你好所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号李白你好及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

在测登录接口的时候,验证码请求包存在sign校验,逆向生成sign值,测试发现存在验证码双发问题,导致任意用户登录。

文章作者:先知社区(1466024851564656)

参考来源:https://xz.aliyun.com/news/90856

1

JS分析

1、点击获取验证码,测试验证码问题,无法再次放包,发现请求包存在sign值,猜想应该是Sign值在做校验;

d2b5ca33bd20251226182053

2、直接开始逆向,先看下长度,32位,首先想到MD5加密

d2b5ca33bd20251226182105

3、尝试关键词搜索sign,sign:,sign=

结果关联文件太多,不适合使用这种方式找;

d2b5ca33bd20251226182115

4、换个方式,使用启动器分析

Promise.then() 可以看到是异步回调

d2b5ca33bd20251226182127

为了测试方便,验证码刷新接口有时间限制,换一个接口测试/page

d2b5ca33bd20251226182137

进入末尾,打断点,刷新页面,发现已经生成了sign的值;

d2b5ca33bd20251226182146

进入第一个异步栈v.request,发现这时的head为空,这里可以看出信息是在v里面的函数生成

d2b5ca33bd20251226182159

打开数组v里边存在很多方法,打开第二个方法,发现onrequest,这里可以看出t为请求参数,e()函数加载了t

d2b5ca33bd20251226182210

进入e()方法,找到e.headers.sign生成的方式,现在只要找到这段代码中的未知函数,这就可以生成sign的值;

sign=(time = headers['time'], t = md(data),
        pd("ghaepVfxxxxxgnk4NCTXLApxQkBcvh1",
            pd("mwMlWOdyMxxxxxzQPulT1ndRZIAjShDB", pd("ZuSj0gwgxxxxx4fTEz55oAG2q2p1SVGKK", t, time), time), time))

d2b5ca33bd20251226182231

d2b5ca33bd20251226182240

接着继续找未知函数md(),pd()

先追md()函数

d2b5ca33bd20251226182253

d2b5ca33bd20251226182257

md()函数中包含未知函数gd()和_d()函数,继续向下,拿到gd()

d2b5ca33bd20251226182307

回到md()函数,继续追_d()函数

d2b5ca33bd20251226182320

接着找pd()函数,该函数中涉及未知fd()函数

d2b5ca33bd20251226182329

找到fd()函数

d2b5ca33bd20251226182342

进入fd()函数,发现该函数疑似MD5加密;推测是对n=t+e+time的MD5加密‘。

d2b5ca33bd20251226182351

使用在线MD5加密平台验证,控制台获取n=t+e+time的值。

加密结果相同,均为:’02d932d40fabc5db9345f3309fb7d15a

d2b5ca33bd20251226182401

d2b5ca33bd20251226182404

到这里,我们就可以写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值

d2b5ca33bd20251226182427

2、使用py脚本调用js,修改验证码请求包,两个手机号码同时收到验证码;

d2b5ca33bd20251226182438

到这里就造成了任意用户登录漏洞!

d2b5ca33bd20251226182446

 

请登录后发表评论

    没有回复内容