某个项目上渗透测试,给了一个子账号,,没啥权限。
登陆了子账号,如图所示
无任何权限。
下面一般思路就是翻js文件,翻接口或者扫目录。
Js中翻找接口发现userinfo/userinfodetail
明显知道该接口和用户有关,可以发现返回了一些内容。
存在userId,那么我们尝试把userid参数拼接在接口后面,该接口在js文件里面f翻找得到,发现返回获取了角色列表:
该接口泄露角色列表,看到这个roleList,可以联想到yunxi讲的那些有关API分配的一些技巧,我们可以尝试主动提权,提权方案参考jeecg的模式因为看到角色列表中很多数据格式基本都是类似jeecg的赋权方式:
不用说,一般都是使用update去修改自己的权限,这里和api分配漏洞一样,yunxi专门讲过。
通过update接口修改自身权限
发现接口/api/member/sys/role/treemenu?subsysCode=
在发现subsysCode的值是自己的角色那么将值改为ADMIN尝试查看
此处发现更多的权限ID
继续更新子账户权限
添加权限提权
刷新后获得店铺权限
当然如果你认为这就结束了那你多少有点看不起企鹅王了。
我们在渗透过程中发现了新的域名
http://admin.xxxxxx.com
有趣的事情才刚刚开始
添加角色拦包直接改,吧subsysCode改为ADMIN,subsysLsbel改为平台管理
接下来我们把新建的角色添加到我们账户,一定要添加不要只保存一个
从上述subsyscode参数改为admin时获取到的所有的角色权限id我们赋予这个新建立的角色
权限添加到刚才建立的角色当中
重新登录发现出现了系统监控这个菜单栏,但是现在还没有办法控制因为主控在admin域名下
访问域名尝试登录admin
登陆失败!!!可恶的开发
重整思路
同样翻找js可以搜ajax或者url:/之类的全局搜索
找到创建通行证的接口
构造创建 角色id尝试1管理员
记住ext中的数据因为可能是用户id我们之前的包里发现是868686之类的都是管理员创建的东西
bindroleaccount这个翻译我感觉不用多说 还是一样的框架Body传就完了
有角色 有账号 有密码 Ok登录
成功拿到后台
原文始发于微信公众号(小呆安全):API分配实战:多角色模式的跨平台越权
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论