背景 水平越权是 Web 系统里非常常见、也很容易被低估的一类问题。它通常不依赖复杂利用链,而是出现在业务接口对“资源归属关系”的校验缺失上。实际排查中,很多系统已经做了登录态校验、角色校验,甚至网关层也有鉴权,但只要具体业务对象没有绑定当前用户或租户,就可能出现用户 A 访问用户 B 数据的情况。 这篇文章整理的是一次接口越权排查过程中沉淀下来的方法。内容偏代码审计和修复思路,不涉及真实目标攻击,也不会给出针对第三方系统的利用流程。适合用于内部系统自查、上线前安全评审和漏洞复盘。 问题场景 一个典型的业务接口如下:用户登录后,可以查看自己的订单详情。前端请求大致是: GET /api/order/detail?id=10086后端接口做了登录校验,确认请求里存在有效 token,然后根据订单 ID 查询订单详情并返回。 表面看流程没有问题,但安全问题往往出在这里:接口只校验了“你是否登录”,没有校验“这个订单是否属于你”。如果订单 ID 是可枚举、可猜测或者来自其他接口泄露,就可能造成水平越权。 代码层面的典型缺陷 以下是比较常见的缺陷写法,示例仅用于说明问题: public Ord
背景 越权漏洞在 Web 安全里并不新鲜,但在实际代码审计和业务测试中,它仍然是最容易被遗漏的一类问题。原因也很现实:权限判断往往散落在 Controller、Service、DAO,甚至前端路由里;业务迭代频繁后,原本清晰的权限模型会被临时需求逐渐冲散。 这篇文章整理一次典型的接口越权问题复盘,重点放在如何定位、如何验证、如何修复,以及后续代码审计时可以沉淀哪些检查方法。内容不涉及真实目标系统,也不提供攻击他人系统的操作引导,适合作为内部安全评审或代码审计 checklist 参考。 问题场景 某业务系统中有一个资源管理功能,用户可以查看、编辑自己所属组织下的资源。接口设计大致如下: GET /api/resource/detail?id=1001
POST /api/resource/update
前端页面会根据当前登录用户展示资源列表,用户点击某条记录后,前端把资源 id 带到详情接口。表面看起来没有问题,因为普通用户在页面上只能看到自己有权限的资源。 但问题出在后端接口只根据传入的 id 查询资源详情,没有校验该资源是否属于当前用户可访问范围。攻击者如果知道或猜到其他资源 i
背景文件上传是 Web 系统里很常见的功能,头像、附件、导入模板、工单截图都会用到。问题在于,这类功能经常横跨前端校验、后端解析、对象存储、静态资源访问、权限控制等多个环节,只要其中一个环节设计不严谨,就可能变成高风险入口。这篇文章基于一次常见业务系统的代码审计经验整理,重点讨论如何识别文件上传风险、如何验证风险边界,以及如何给出可落地的修复方案。内容只关注防护与审计方法,不涉及非法攻击和控制行为。问题场景某业务系统提供了附件上传接口,用户可以在工单中上传图片、PDF、压缩包等文件。审计时发现开发侧已经做了一些限制,例如前端限制扩展名、后端判断 Content-Type、上传后重命名文件。但进一步检查后发现几个典型问题:后端扩展名判断依赖原始文件名,且处理逻辑不统一。Content-Type 直接信任请求头,缺少文件内容检测。上传目录位于 Web 可访问目录下,且与应用同域。部分历史接口绕过了新上传组件,未纳入统一校验。对象存储桶策略较宽,部分文件可被匿名访问。这些问题单独看不一定都能造成严重后果,但组合起来就会形成较大的攻击面。代码审计时不要只看某一个上传接口是否做了判断,而要看完整
背景不少漏洞分析文章会直接给出利用过程,但对日常安全建设来说,更有长期价值的是把一次漏洞复现转化成可复用的审计方法。本文以一个典型的 Web 文件处理类问题为例,整理从环境搭建、风险定位、代码审计、补丁验证到检测加固的完整闭环。这里讨论的是受控测试环境中的漏洞复现和代码审计思路,不涉及真实目标攻击、未授权利用或持久化控制。类似方法可以用于企业内部系统自查、开源组件评估以及安全培训靶场。问题场景假设一个后台系统提供附件上传能力,业务设计上允许用户上传图片、PDF、压缩包等文件。开发侧通常会做一些基础限制,例如校验扩展名、限制 MIME 类型、控制文件大小。但在实际审计中,文件上传往往不是单点问题,而是由多个环节共同决定风险:上传入口是否存在鉴权与权限控制。文件类型校验是在前端、网关还是后端完成。服务端是否信任用户传入的文件名、路径或 Content-Type。上传后的文件是否落在 Web 可访问目录。文件是否会被后续解析、解压、转码或预览。是否存在覆盖已有文件、路径穿越、压缩包解压逃逸等衍生问题。因此,审计时不要只盯着“能不能上传某个扩展名”,更应该看完整的数据流。技术分析一个相对常见的