/*本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号不为此承担任何责任。*/
补天某企业src
333633383337333433373334333733303337333333333431333234363332343633373333333633383336333533363435333634313336333933373333333633383336343633373330333234353337333333373334333634363332343533363333333634353332343633323333333234363337333533373333333633353337333233323434333633333336333533363435333733343336333533373332333234363337333533363333333234343337333033363331333733333337333333373337333634363337333233363334
1. 判断加密数据
加密数据 password
2. 寻找网站加密方法
F12打开网络请求资源,记住是全部资源,全局搜索encrypt参数
一眼可以发现使用了aes_ecb加密
unction l(e) {
var time = Date.now()
, t = r.a.enc.Utf8.parse(c)
, n = r.a.enc.Utf8.parse(time + e);
return r.a.AES.encrypt(n, t, {
mode: r.a.mode.ECB,
padding: r.a.pad.Pkcs7
}).toString()
}
}
记住加密得js文件名,来到源代码寻找位置并断点追加密方式
这里需要注意得是有个time参数,时间戳
time: 1736695076115
e: "QWas1234."
AES加密key:
-imagic-password
对password解密
1736694277883QWas1234.
可以发现密码前面多了一串数值,将这串数值与前面得断点产生的时间戳进行对比一下
时间戳: 1736695076115
密码前数值: 1736694277883
眼睛雪亮的友友可以发现这段数值是不是就是时间戳呢,那么这里得password得加密方式自不然就出来了
PASSWORD加密方式:
时间戳+密码 ---> AES_ECB加密
3. 漏洞点
来到账户信息处,抓取保存账户信息数据包
可以发现未对手机号加密,尝试修改手机号189xxx
修改成功
尝试登录189手机号
登录失败,刷新个人信息页面判断是否只更改了前端
刷新后仍然是189手机号,那为什莫登录失败呢,那就是没有在后端彻底更改,尝试用这个手机号注册呢
发现189手机号被注册了,那换成随机手机号呢或厂商自己的手机号
再来对155注册呢
问题来了,该189、155说明是在后端绑定过得,那为什莫登陆失败呢,换个思维既然不能任意绑定后登录那么是不是能占用手机号导致无法注册
换种方式,绑定注册过的手机号呢
4. 总结
漏洞原因:后端未处理好手机修改逻辑导致手机号短时间存储在数据库,当用户不下线那么该手机号就一直无法注册
原文始发于微信公众号(Joker One Security):逻辑漏洞挖掘案例
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论