记一次越权测试

  由于公司项目是安防相关的系统,合作方对交付的系统做了全面的渗透测试,发现不少越权的问题。越权的概念大家可以网上搜下,一般分为垂直越权和水平越权,下面用一个案例描述大概情况

现象:A账号有用户管理权限(包含新增编辑查看删除),B账号只是A的下级,前端页面未分配用户管理菜单,用B账号的token调用用户管理的接口进行增删改查,这里就是典型的垂直越权。

开发修复:后台通过加权限开关的配置去修复,大概逻辑是:开关开启后,每次调用接口,后台会查询该账号有哪些权限,系统中权限都有对应的code,如果查到该用户没有这权限就返回403.

测试验证:第一步-B账号不分配用户管理菜单,用B账号的token调用用户管理的接口进行增删改查,接口返回403;第二步-B账号分配用户管理菜单,用B账号的token调用用户管理的接口进行增删改查,接口返回成功,前端页面也有相应变化;正常来看到这里,测试像是通过了。接下来我做了第三步操作-B账号分配用户管理一级菜单,但是只给它分配查看权限的二级菜单,再做接口请求,发现同样能进行增删改查!(按理说只能查不能改)

开发修复:原因是前端把所有权限code分配在一级菜单上,导致只要分配了用户管理一级菜单就有所有权限;这次将code分配到更准确的二级菜单上。

测试验证:验证步骤如上面一样,验证通过!

 

后续:此次修复导致了其他接口权限受影响

1.系统中有第三方对接的接口,前端忘记加code

2.系统中消息订阅的接口403,但这个接口由于业务原因不能加入白名单,前端又没有菜单能够分配对应的code,此问题待解决

posted @ 2022-03-16 16:24  千君君  阅读(407)  评论(0编辑  收藏  举报