【福利】【实战】|一次前端JS加密泄漏导致的越权测试

综合技术   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2022-11-27

前言:最后走之前发一贴。进来免费领10凯币,之前悬赏贴被删了,送完就卸载了

0x00 背景
测试过程中碰到了一个会话系统,出于保密原则这里没有截图,自己想象一哈。
0x01 业务逻辑
系统功能很简单,就是实现用户A和用户B进行会话,并且可以查看以往的聊天记录。出现漏洞的点也是在历史记录上,通过构造参数可以查看网站内任意用户的聊天记录。
首先,用户发起查询历史记录的请求时,会发送如下的数据包,并且得到响应:

可以看到服务器返回了cid,也就是当前发送数据包的uid用户发起过的会话名称,一共有三条。
再之后,服务器紧接着发送了第二个数据包:

可以看到响应包就是要查询的会话记录。业务逻辑到此执行结束。
0x02 测试
不难想出,可以通过更改uid的方式来查看别人的聊天记录。但我实际测试后发现,在第一个数据包如果更改为别人的uid,是可以返回别人的会话名称的。但到了第二个数据包,发送的uid参数经过了加密,最后结果类似于以下字符串:
zrApelW+58GcN+At5Ons+8EysUAU77xqxj9ko3m7XMo=
大致猜个base64,解出来发现乱码,应该是加密后的base64。
通过F12查看业务运行请求了哪些文件,最后在一个js文件里发现了AES加密的信息:
function t(e) {
var t = v.enc.Utf8.parse("bPsoyIvIALTcy6OP"),
i = v.enc.Utf8.parse(e),
a = v.enc.Utf8.parse("W8m2J1I3pQUADWyA8s"),
s = v.AES.encrypt(i, t, {
iv: a,
mode: v.mode.CBC,
padding: v.pad.Pkcs7
});
return s.toString()
}
JAVASCRIPT
已经很明显了,这是一个CBC方式的AES加密,密码是bPsoyIvIALTcy6OP,偏移量是W8m2J1I3pQUADWy,直接把加密后的密文用工具解出来:



这时候思路已经很明显了,我们可以构造其他人的uid来获取历史会话,再对uid进行上述AES加密,把刚刚获取到的会话值也一并提交,就可以实现越权查看他人历史记录的效果。
0x03 结果
测试成功,由于项目保密性质,不贴上成果图。

41楼
花开不败 2022-11-27
感谢你对凯特社区的付出
42楼
我的梅 2022-11-27
反正我没有 也没啥用处
43楼
无殇网络 2022-11-27
好家伙[真棒][真棒][真棒]
44楼
Rose 2022-11-27
领点凯币[呵呵]
45楼
天之梦科技 2022-11-27
楼主我也要
46楼
记住Pings 2022-11-27
昨天悬赏贴送出将近300+凯币,今天本贴送出275凯币,由于官方限制,剩下的明天再送。

47楼
昵称601732 2022-11-27
听说有凯币[滑稽][玫瑰]
一样的,用Token和用户uid来验证
49楼
暧ᝰꫛꫀꪝ 2022-11-27
水帖领凯币[开心]留言那个怎么被锁了
还想一起玩呢
50楼
有人我 2022-11-27
这app要跨了,

评论

登录后才可发表内容
  • 主题

    22

  • 帖子

    184

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:1.9494s Mem:2155Kb