0x00 简介
Target是一个需要通过SSO登录后才可以使用的系统,登录成功后可以通过该系统进入该部门其他系统。
没有权限的账户无法使用,这里将记录我是如何从0权限到管理员权限的完整测试步骤。
最终我通过这个没有权限的账户,发现了一处URL跳转、一处垂直越权、一处XXE、一处SQLi、一处Fastjson反序列化漏洞。
0x01 正文
通过SSO登陆Target后,可以看到没有权限访问这个系统。
通过查看源代码,看到有一个_csrf字段
开始阅读JS文件,https://Target/js/index.8c4440bc.js
最先看到了如下这个接口
通过该接口,发现了一个URL跳转漏洞
该接口像是一个专门的跳转功能,跳转后会返回一个token字段
继续阅读JS文件
因为发现了接口可以未授权访问,因此我逐个尝试每个接口,在这个过程中收集到了很多信息,例如,管理员权限roleId=1,等等
(因为是测试完后,第二天整理的这个总结,因此有些细节我忘记了)
直接按顺序说几个关键点
关键点1:弯路
我遇到了下面的这个接口,然后在这个接口上废了一些时间
看到下图这个接口的时候,我推测可能是给用户添加权限的接口
构造请求包,可以看到提示invalid csrf token,通过阅读js文件上下文,没有发现参数提示,因此只能进行fuzz
推测是最开始首页中出现的csrf_token,并且推测可以复用
推测角色名称的字段
巴拉巴拉… 废了很多时间,包括推测参数名,阅读JS等
关键点2:上传接口
上面的接口测试了一段时间后,无果,打算放在一边,继续测试一下后面的接口 后来我发现了上传接口,看到只能上传xlsx等格式,我立马想到了XXE
构造上传表单
构造Payload
服务器监听 – 上传
Bingo,请求包如约而至
此时心里大致有底了,然后重新构造Payload,开启xxer读取文件
关键点3:下载接口
继续测试其他接口,找到一个下载接口,推测可以通过下载到的资料来进行突破
构造请求包,提示token错误,手动添加_csrf,发现依旧不对,此时我陷入了一会思考
后来我想到了最开始遇到的重定向接口会返回token 因此我直接利用js里面现成的代码来做请求
window.location.href= '/direct?url='.concat(encodeURIComponent('/Target项目名/role/exportDownloadTemplate'))
打开以后是这样
然后我又下载了下面这个文件
window.location.href = '/direct?url=/Target项目名/role/exportEmployee?roleId=1 '
打开以后是这样
关键点4:越权成为管理员
因此我推测,或许我可以将我登录使用的员工工号通过下载的模板直接导入进去,从而获取权限
利用上面的上传接口导入 然后我再利用下载接口下载roleId=1的用户
window.location.href = '/direct?url=/Target项目名/role/exportEmployee?roleId=1 '
我看到了我的名字添加上去了
此时我赶紧刷新了一个首页
Bingo
后续细节不再赘述,后面呢,就是我通过高权限访问到了更多的系统,扩大了攻击面
0x02 后续
后面,我通过该站点设置了管理员权限后,我获得了另外5个系统的访问权限。
然后也在新的系统中,发现了SQli跟Fastjson反序列化漏洞。
米斯特安全团队是一群热爱网络安全技术的年轻人组成的线上团队,成员来自于国内各大公司,以及各大高校。
曾多次获得国内知名厂商致谢以及获得多个知名奖项。
新年招新:Web安全、二进制安全、安卓安全,CTF欢迎申请加入
简历投至邮箱: [email protected]
本文始发于微信公众号(米斯特安全团队):技术分享 | 某系统从0到1的突破
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论