API越权漏洞的三种核心类型

10 人参与

说起API越权,很多人第一反应是“权限校验没做好”,但实际漏洞拆开来看,其实就那么几种套路。搞清楚这些类型,比盲目扫接口或加防火墙要实在得多。根据OWASP API Security Top 10和大量实战案例,API越权漏洞可以归为三类核心形态。

水平越权:A用户看到了B用户的数据

这是最常见也最容易踩坑的一类。本质是API依赖用户可控的标识符(比如用户ID、订单号、手机号)来访问资源,却没有校验当前登录用户是否有权操作这个标识符。比如一个简单的GET请求:/api/user/orders?id=12345,攻击者把id换成12346,如果后端只凭这个参数去查数据库并返回结果,那就中招了。这种漏洞在RESTful API里几乎每周都能扫出来,尤其当参数从URL参数、请求体、甚至Cookie里直接拿的时候。

垂直越权:普通用户干管理员的事

说白了就是权限没分层。API虽然有接口,但后端没检查角色。比如管理员删除用户的接口是DELETE /api/users/{id},攻击者伪装成一个普通用户,直接发同样的DELETE请求,结果删掉了别人。垂直越权的核心是“功能级权限校验”缺失。更隐蔽的是,有些系统用前端隐藏按钮来控制,后端却完全信任请求中的角色字段,攻击者改个HTTP Header或JWT里的角色就一路畅通。这类漏洞在微服务架构里尤其头疼,因为服务间调用往往默认信任身份,缺乏二次校验。

对象级越权:操作了不该操作的资源对象

这个和水平越权有交叉,但更偏重“资源本身”而非“用户”。比如一个文件上传API允许上传图片,但攻击者通过修改文件名参数,把文件写到服务器系统目录下;或者一个批量查询API,传入{ids: [1,2,3,999]},结果把id为999的敏感配置也查了出来。对象级越权的关键在于“资源标识符”的边界没收紧。典型场景是数据库里的主键自增,攻击者可以遍历;或者对象存储的Bucket权限设的宽,用户通过API直接访问别人的文件。这类漏洞在云原生、SaaS平台中非常普遍,因为资源隔离全靠参数传。

怎么一眼识别? 看请求里是否包含“能唯一标识某个资源”的参数,并且这些参数是否被随意篡改。水平越权重在“用户间数据隔离”,垂直越权重在“角色功能权限”,对象级越权重在“资源范围限制”。实战中,三者常常组合出现,比如一个管理员接口的批量删除对象功能,既有垂直越权(角色检查缺失),又有对象级越权(无资源范围检查)。搞懂这三类,再看那些所谓的“高级漏洞”就只是变种了。

参与讨论

10 条评论
  • AshenNocturne

    水平越权真的常见,用个用户ID查数据都不校验,太离谱了。

    回复
  • Tata

    刚接触API安全,这三种分类挺清楚的,但具体怎么防护啊🤔

    回复
  • SupernovaEmber

    垂直越权那个微服务之间身份信任的问题,有解决方案吗?

    回复
  • TsukiMoon

    我们系统就是对象级越权被搞过,传个文件名参数就写到了服务器目录,太惨了😭

    回复
  • TinyDancer

    参数自增ID遍历数据真是老套路了,为啥还有人用啊。

    回复
  • Tinker Tess

    对,组合漏洞最头疼,一个漏洞带出好几个问题。

    回复
  • 朱雀焰

    云原生环境对象存储权限确实容易宽,稍不注意就暴露了。

    回复
  • The Social Dynamo

    靠!以前做项目垂直越权踩过坑,前端隐藏按钮以为就安全了,后端啥都没设。

    回复
  • SunsetExplorer

    那用UUID代替自增ID是不是就能防水平越权了?

    回复
  • 社牛小火焰

    搞安全的都懂这种痛,讲得很实在👍

    回复