前言在 Web 渗透测试中业务逻辑类漏洞往往容易被开发忽视水平越权属于高频出现的中危业务漏洞。本次测试对象为某期刊投稿网站系统存在稿件操作接口未校验请求用户与稿件归属关系攻击者可篡改请求 ID直接对其他用户的投稿执行撤稿操作影响业务数据真实性。本文完整记录本次漏洞复现全过程。漏洞 / 测试基础信息项目详情漏洞类型水平越权中危资产环境互联网公网资产测试所需账号需要注册 2 个普通投稿账号漏洞现象篡改请求中的稿件 ID可越权撤销其他用户的投稿稿件后台可收到越权产生的撤稿请求漏洞原理后端仅通过前端传入的稿件id参数执行业务操作没有校验当前登录用户是否为该稿件所属作者漏洞思路梳理业务场景期刊投稿系统每个账号管理自己提交的稿件正常逻辑只允许操作本人稿件。观察功能点撤稿功能请求携带稿件 id 参数id 由前端可控。猜想后端是否只根据 id 处理业务没有校验账号‑稿件的所属绑定关系。验证思路两个不同账号各自投稿抓包修改请求里的稿件 id使用 A 账号的会话传入 B 账号的稿件 id观察是否可以成功执行撤稿。结果接口未做权限校验成功越权操作他人稿件。实操 / 测试流程测试前置注册 2 个独立账号两个账号分别提交一篇测试稿件。使用账号 A 登录系统进入已投稿件页面页面存在撤稿功能按钮点击撤稿观察 URL / 请求数据包发现请求参数携带稿件id字段该字段标识待操作的稿件。使用 Burp Suite 抓取账号 A 执行撤稿操作的完整流量包。修改抓包数据包将数据包内的稿件 id替换为账号 B 提交的稿件 id。将修改之后的数据包发送到服务端。观察页面返回结果原本是账号 A 的撤稿界面页面内容切换为账号 B 的稿件信息成功触发针对账号 B 稿件的撤稿流程。后台收到了越权操作产生的撤稿信息完成越权漏洞验证。漏洞总结核心问题业务接口执行撤稿逻辑时仅信任前端传入的稿件 ID 参数缺少服务端权限校验没有校验当前登录用户是否拥有该稿件的操作权限。攻击者仅需要普通用户账号修改请求参数 id就可以访问、操作其他同级别用户的业务数据。漏洞危害恶意用户可以越权撤销其他作者的投稿稿件干扰期刊正常投稿业务流程。可以篡改、查看其他用户稿件信息造成业务数据被非法篡改。造成期刊稿件数据混乱对平台公信力造成损害。修复建议服务端强制校验权限最重要执行稿件查询、撤稿、编辑等所有稿件相关接口后端必须根据 session/token 拿到当前登录用户身份在数据库校验当前登录用户ID 稿件所属作者ID校验不通过直接拒绝请求返回无权限不能只依赖前端传入的稿件 id 做业务处理。禁止完全信任前端可控参数所有业务对象 ID后端必须做权限鉴权不能直接拿来执行数据库操作。对业务逻辑接口增加安全测试针对越权做专项测试用例覆盖增删改查各类业务动作。日志记录记录稿件操作行为记录操作人、稿件 id方便出现异常行为时溯源审计。测试心得水平越权多出现在业务系统重点关注业务功能编辑、删除、撤回、查询等观察 URL、请求 body 中是否存在 id、articleId 等对象标识参数。越权漏洞属于业务逻辑漏洞waf 很难拦截更多需要代码层面、业务层做校验。复现越权漏洞必备两个权限相同的测试账号一个账号抓包替换另一个账号业务对象 ID 进行验证。安全声明⚠️本文中所有内容仅为安全研究、渗透测试学习交流使用禁止未经授权对非自有资产进行任何渗透、漏洞测试行为未经授权测试属于违法行为。所有测试操作应当在获得书面授权的测试环境中开展。
阅读完成 · 觉得有帮助?