安全矩阵

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

记一次神奇的垂直越权漏洞挖掘案例

[复制链接]

215

主题

215

帖子

701

积分

高级会员

Rank: 4

积分
701
发表于 2023-9-1 17:21:06 | 显示全部楼层 |阅读模式

0x01 背景

某个阳光明媚的下午,技术组长安排了一个项目给我,本以为只是一个普普通通的渗透项目,没想到过程不普通,结果也不普通,算不上好,但是总归是收获了一个别致的越权漏洞。


0x02 过程

因为沟通不是很到位,开局直接被嘲讽、buff拉满(假装有图)。虽然很生气,但是作为安服仔的我只能吃包辣条消消火,手里不能放松,干他就完事儿了。

使用rad对网站JS简单爬取一下,爬到了许多js文件,其中一个名为common.js

尝试简单利用下,发现返回码大都是405或者302,405是使用的http方法不对,302是由于接口做了鉴权直接跳转至登录页面了。

客户提供了一个普通用户和管理员账户,先登录上管理员用户,然后调用接口:/user/getUserList?role=0

成功调用该接口使用get方法,并且无需添加其他参数即可成功。此时将接口路径复制到带有普通用户凭证的数据包中并且尝试请求,依然可以正常访问。

就挺开心的,发现了一个垂直越权漏洞,并且越权可以查看的内容包含700多个用户的信息。


分享给另一个测试的小伙伴:

但是意外总是来的猝不及防,过了一段时间后再次测试,发现无法垂直越权查看了,直接返回状态码302,我重新登录普通用户获取新的用户凭证继续访问发现:

淦,俺的垂直越权咋没了。重新登录了管理员用户,发现接口又可以正常使用。

此时突发奇想,比对了管理员用户的SESSION值,发现普通用户和管理员的SESSION值一致。

联想前面管理员用户不在线,普通用户无法进行垂直越权,瞬间明白了这个特殊的垂直越权利用的最终奥义。

原理:
短时间内普通用户和管理员的用户凭证一致,当管理员在线的时候,普通用户可以直接越权,管理员不在线,无法越权。


回归到越权访问到的数据本身,发现了用户未加密的密码,尝试登录其中一个用户。

整理出来770多条数据,也就是说拿到了770多个用户的账号和密码;得到的数据为json格式,这里我是用json5-to-table对数据进行处理。

json5-to-table是一个将json文件转化为html或者xlsx表格的工具,默认支持html表格,支持xlsx还需要额外安装扩展包。此次在kali 2021.2下测试安装:

安装要求:
npm版本为7设置镜像仓库为淘宝的地址
安装命令:
npm config set registryhttps://registry.npm.taobao.org    # 配置淘宝镜像仓库
npm config get registry    # 有淘宝仓库地址即为配置成功
npm install --global json5-to-table    # 安装json5-to-table

npm install --global xlsx  # 安装支持json to xlsx的扩展包
使用效果:

整理过数据以后发现弱口令:123456的使用数量在722,占据所有用户比例的93%左右。

先将问题同步给甲方对应负责人(假装有图);当场能给我笑死,然后在文字描述不行的时候,在电话里给负责人讲的时候牵扯到了这个特殊的垂直越权,然后他说这个洞之前就有了,并且询问能否更改数据?

然后我就从common.js文件里面掏出一个用户删除接口,当场创建个测试用户,然后用越权漏洞删除了那个测试用户。

删除前:

删除后:

除了这个垂直的越权以外,删除用户的时候也会返回所有用户的信息,就蛮离谱的,给到负责人:(假装有图)

0x03 总结

1. 给开发大哥的建议:
  • 给用户生成凭证的时候一定要生成不一样,有问题及时修,拖着系统容易出大问题。


2. 给各位好兄弟的建议:
  • 多观察、多想、多实践,总会挖出奇奇怪怪的漏洞。


本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 11:53 , Processed in 0.013283 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

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