当前位置: 首页> 房产> 建材 > 权限类漏洞解析——功能权限篇

权限类漏洞解析——功能权限篇

时间:2025/7/10 11:08:58来源:https://blog.csdn.net/wananxuexihu/article/details/140147885 浏览次数:0次

上一篇【一文理解权限类漏洞产生的原因之未授权篇】有讲过未授权漏洞产生的原因,但是在我实际的挖洞过程中,其实遇见很少,我有印象的好像只有几个非核心站点的中危。

但是对于另一类权限漏洞,功能及数据权限相关的漏洞就不一样了,我挖的逻辑漏洞中,大部分来源于它们,从中危到严重,危害等级没有上限。

我只能说,即使是一个资深开发人员,也有可能在这部分功能设计上存在疏忽。

本文主要从开发的角度讲一下对应的功能权限功能是如何实现的,以及我们可以怎样的去发现这类漏洞。

0x01

开始之前,我先从开发的角度简单地介绍一下一个系统的权限设计是怎么做的:一般会分为接口/功能权限数据权限这两部分。

功能权限一般是用于描述某个用户允许访问某些功能,现在大部分系统都是使用RBAC(Role-Based Access Control)的权限模型,也就是基于角色的访问控制。这个我们应该比较熟悉,比如一个用户可能会属于普通用户角色、管理员角色等,不同的角色允许访问不同的功能。

而数据权限则用于描述某个用户允许访问哪些数据,这个应该更好理解,比如我创建了一个收货地址,那应该只有我可以查询到,其它人是看不到这个信息的。

0x02

为了方便理解,我用一个业务场景作为栗子吧。比如我们常见的订单功能,先从功能上来区分的话,可能会包含以下功能点:

    1. 查询订单
    1. 创建订单
    1. 删除订单
    1. 修改订单

假设管理员角色有所有的功能权限和数据权限,而普通用户的功能权限只有查询、创建和删除,并且只允许操作自己的订单。

实现

那么基于RBAC的权限模型,功能权限应该是下面这样的:

很简单不是吗?而且实现很非常容易,当用户登录时,拿到它的角色,判断是否有当前请求的接口的权限就行了:

def modify_order(order_info):  # 获取当前登录用户  user_info = get_current_user()  role = user_info.role  # 根据用户角色获取允许访问的资源  resources = get_resource_by_role(role.id)  # 当前访问的路径在不在资源范围内  if current_path() not in resources:  return 'no permission'  # 继续执行  do_next()

很简单的逻辑,而且很通用,只需要将这段代码放在拦截器里面,那么在用户访问每个接口之前,都会进行这个判断,那么对于攻击者来说,普通用户想要越权访问管理员的功能就比较困难了。

那为什么还会存在越权访问的情况呢?

大部分来源于配置错误,像这种资源、角色映射关系的配置,一般都是有一个管理后台进行配置的,可能某次新增接口,忘记配置了,或者配置错误,那自然对应的接口就存在越权漏洞了。

为什么说大部分?因为真的有些网站实现不用框架,也不用拦截器,每个接口都写一遍的,那写错的概率就太高了。

漏洞发现

那我们应该怎么快速地去找这类漏洞?这里分享一下我的方法(仅仅是我自己的测试方式,不代表最好!)

一般这种漏洞在存在多种角色的管理后台,我一般会按以下流程操作

  1. 1. 建一个普通用户A,一个管理员用户B。

  2. 2. 找到对应的鉴权方式,比如是使用cookie或者是某些请求头。

  3. 3. 开启bp插件,功能是替换指定的请求头,并重放我的所有请求。

  4. 4. 配置鉴权相关的请求头,将他们全部替换为普通用户A的。

  5. 5. 使用管理员用户B点击所有仅允许管理员访问的功能。

    1. 查看重放接口,如果某个重放的请求成功了,那就证明此接口存在越权,理论上所有重放的请求都应该失败,因为重放时是使用普通用户A的鉴权token。

这里的BP插件是我自己写的,其实手动也可以,就是麻烦了一点。如果有兴趣的师傅们也可以去github上搜索,我看上面也有挺多插件是可以实现这个操作的。

0x03

最后,本来想功能和数据权限一篇写完的,但是我着实高估了我的耐心,加上工作比较忙,周末回家又只想躺平,所以关于数据权限篇就只能放在下次啦。如果感觉有点用就点个赞赞咯。哎,也不知道有没有人爱看


欢迎关注我的公众号,更多原创文章第一时间推送!
点赞,在看,分享,我都可以的

本文转自 https://mp.weixin.qq.com/s?__biz=MzU3ODI3NDc4NA==&mid=2247484312&idx=1&sn=0533a599b99dde57d566e0abe4503642&chksm=fd769717ca011e01d9f362b7367adde79d1e14933bf286b933c7c3d7a37993b6700bda802f00&scene=21#wechat_redirect,如有侵权,请联系删除。

关键字:权限类漏洞解析——功能权限篇

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: