安全矩阵

 找回密码
 立即注册
搜索
查看: 681|回复: 0

一次前端JS加密泄漏导致的越权测试

[复制链接]

145

主题

192

帖子

817

积分

高级会员

Rank: 4

积分
817
发表于 2023-6-9 18:56:55 | 显示全部楼层 |阅读模式
本帖最后由 littlebird 于 2023-6-9 18:58 编辑

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,直接把加密后的密文用工具解出来:

0x03 结果测试成功,无图~

福利视频笔者自己录制的一套php视频教程(适合0基础的),感兴趣的童鞋可以看看,基础视频总共约200多集,目前已经录制完毕,后续还有更多视频出品
https://space.bilibili.com/17754 ... sdetail?sid=2949374
技术交流技术交流请加笔者微信:richardo1o1 (暗号:growing)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 15:54 , Processed in 0.013719 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表