核心内容摘要
DeepSeek Coder:让AI成为你的编程搭档,重新定义开发效率
逻辑漏洞学习笔记越权实战指南
核心概念定义越权漏洞Authorization Bypass是指应用程序在检查用户权限时存在逻辑缺陷导致攻击者可以访问或操作本不属于其权限范围内的资源。
根据权限维度的不同主要分为两类水平越权Horizontal Privilege Escalation定义攻击者尝试访问与自己拥有相同权限等级的其他用户的资源。
例子你是学生A通过修改参数操作了学生B的账号。
垂直越权Vertical Privilege Escalation定义攻击者利用低权限账号尝试访问或操作高权限账号如管理员的资源。
例子普通用户获得了管理员 admin 的权限。
常见挖掘思路与检测方法
水平越权挖掘核心逻辑寻找能够标识用户身份的参数如 ID、编号。
实战操作观察请求中的参数例如个人资料 ID 是123。
尝试直接修改 ID 为124查看是否能获取 ID 为 124 用户的敏感信息。
重要安全红线在进行水平越权测试特别是 SRC 挖掘时必须自己注册两个账号进行互测账号 A 越权操作账号 B。
严禁越权操作其他真实用户的正常账号这是违规且违法的行为。
垂直越权挖掘主要有三种常见的检测手法方法一高权低用替换 Cookie准备两个账号账号 A高权限/管理员、账号 B低权限。
使用账号 A 访问高权限功能并抓包。
将数据包中的 Cookie 替换为低权限账号 B 的 Cookie。
判断如果替换后仍能成功执行高权限操作则存在垂直越权。
方法二参数篡改身份标识欺骗只有一个低权限账号时检查请求包中是否有标识权限等级的参数如admin
roleuser。
尝试修改参数例如将admin0改为admin1看是否能提权。
方法三强制浏览未授权访问收集高权限功能的 URL 路径或接口。
使用低权限账号登录或不登录直接访问这些高权限 URL测试服务端是否鉴权。
实战测试技巧
凭证替换测试垂直越权核心验证在入职后的正规项目测试中通常要求客户提供两个不同权限的账号高权限 Admin 低权限 User。
测试手法登录低权限账号抓包获取其Token、Authorization或Cookie。
登录高权限账号找到只有管理员才能操作的功能接口如“添加用户”。
抓包该高权限请求将其中的高权限凭证替换为低权限账号的凭证。
目的验证服务端是只认“接口”还是认“人”。
如果替换后请求成功证明低权限用户也可以调用高权限功能。
ID 遍历与爆破水平越权危害放大测试手法发现某个接口如订单查询、用户信息存在越权后不要只测一个 ID。
工具利用发送到 Burp Suite 的 Intruder 模块。
目的设置 Payload 进行批量 ID 爆破。
如果能批量返回不同用户的敏感数据漏洞危害等级将直接从“普通越权”提升为“大量敏感信息泄露高危”。
数据覆盖与删除消息/资源操作场景针对消息修改、文章编辑、资源删除等功能。
前置条件必须自己注册两个账号账号 A 和 账号 B。
测试手法账号 A 发起修改自己消息的请求抓包。
将包内的message_id修改为账号 B 的message_id。
结果如果账号 B 的消息被覆盖、修改或删除即证明存在越权操作漏洞。
URL 路径越权中危 - 个人信息特征越权参数不在 Body 或 Query 参数中而是直接存在于 URL 路径里。
案例点击查看个人信息URL 显示为domain.com/user/1234567/。
测试手法直接对 URL 末尾的数字进行爆破如从1234500扫到1234600。
判断观察返回包的大小Length或内容看是否出现非当前账号的敏感信息姓名、手机号等。
接口泄露组合拳无规律 ID 突破难点目标接口如商品评论、排行榜存在越权可能但userid是加密的哈希值如u-a1b2c3d4无法直接遍历。
突破口寻找辅助接口。
测试手法全站寻找其他接口如/userlist、/search、/get_comments。
如果在这些辅助接口的返回包中泄露了其他人的userid哈希值。
组合攻击将获取到的他人 Hash ID填入到有漏洞的接口中完成越权。
长 ID 部分爆破策略场景遇到特别长的 ID如 UUID 或长整型完全随机爆破不可能成功。
测试手法注册两个账号观察 ID 规律。
找规律发现前半部分如时间戳、区域码是一样的只有后
位不同。
攻击保持前半部分不变仅对后半部分差异位进行 Burp 爆破。
账号碰撞与销毁逻辑 DoS这是一种特殊的逻辑缺陷通常发生在账号体系设计混乱的系统中。
原理数据库或后端逻辑在处理“修改密码”或“账号更新”时未校验 Session 身份与目标 ID 的一致性且直接根据 ID 更新了关键索引。
测试步骤注册两个账号账号 A攻击者和账号 B受害者也可以是管理员。
账号 A 登录发起“修改密码”请求抓包。
将包内的 ID 修改为账号 B 的 ID或将用户名改为 B视逻辑而定。
灾难发生系统可能将账号 B 的密码改成了 A 设置的新密码。
或者系统逻辑错乱导致 A 和 B 的数据索引冲突。
后果两个账号都无法正常登录或数据发生不可逆的错乱。
高危场景如果攻击者去碰撞管理员账号会导致管理员无法登录造成拒绝服务DoS攻击。
警告此漏洞极具破坏性禁止在生产环境对非授权或不可恢复的账号进行测试。
测试时务必使用两个自己注册的测试号。
企业 SRC 实战笔记在电商与物流业务中收货地址接口是越权漏洞的“重灾区”。
因为它必然包含用户最敏感的隐私姓名、电话、住址且业务逻辑中经常涉及地址的频繁增删改查CRUD开发人员极易在某个环节遗漏权限校验。
增加/修改类越权覆盖与抢占这是危害最大的一类攻击者可以直接篡改他人数据甚至在他人账号中“埋雷”。
修改/覆盖地址越权原理修改地址的接口update未校验address_id与当前用户的绑定关系。
测试步骤账号准备注册账号 A攻击者和账号 B受害者。
获取 ID账号 B 添加一个地址抓包获取该地址的address_id例如10086。
越权操作账号 A 修改自己的地址抓包。
将包内的address_id替换为10086账号 B 的 ID。
修改收货人、电话等信息发送请求。
验证登录账号 B查看地址10086的内容是否变成了账号 A 填写的内容。
危害恶意覆盖他人地址导致物流配送错误或恶意骚扰。
特殊案例长 ID 规律遍历你提供的案例场景特征系统使用的不是简单的数字 ID而是看起来像哈希的长字符串 ID但其中包含可变的部分。
实战案例复现第一步发现规律账号 A 添加地址抓包发现address_id为0B1F9EC0B1729634E063E8F9081425B4观察发现中间的172看起来像是一个自增序列或特定标识。
第二步尝试遍历攻击者猜测其他用户的 ID 可能只是中间三位不同。
将172修改为175构造新的 ID0B1F9EC0B1759634E063E8F9081425B4第三步越权添加/修改使用账号 A 发送修改请求目标 ID 填入构造好的“175 ID”。
第四步验证危害登录账号 B假设其对应 175发现账号下多出了一个陌生地址或者原有的地址被修改了。
技术
总结即使是长 ID也不代表安全。
尝试注册两个连续的账号Diff对比两个 ID 的差异往往能发现“伪加密”的规律如时间戳递增ID固定盐值。
增加地址越权ID 抢占/关联错误原理在添加地址时请求包中如果包含user_id参数修改该参数可能导致将地址“加”到别人名下。
测试手法账号 A 添加地址抓包将user_id改为账号 B 的 ID。
如果成功账号 B 的地址列表中会多出一条攻击者填写的地址。
删除类越权数据破坏
单个删除越权测试手法账号 A 点击删除自己地址抓包。
将address_id替换为账号 B 的地址 ID。
结果账号 B 的地址凭空消失。
批量删除越权高危特征接口参数名为ids[]、id_list或逗号分隔的字符串101,102。
测试手法抓包批量删除接口。
构造 Payloadids[账号B_ID_1, 账号B_ID_2, ...]。
危害一次请求清空受害者的地址簿造成严重的业务干扰DoS。
查看类越权隐私泄露
详情查看越权测试手法找到“编辑地址”或“查看详情”的按钮。
抓包GET /api/address/detail?id123。
遍历 ID如
。
危害响应包中直接返回他人的姓名、手机号、详细门牌号。
这是企业 SRC 中最典型的P1/P2 级漏洞。
URL 路径越权特征ID 不在参数里而在 URL 路径中如/api/v1/user/1001/address。
测试手法修改路径中的1001为1002直接访问看是否返回 JSON 数据。
业务流程越权下单逻辑绕过这是最隐蔽、也最容易被忽略的场景。
下单时引用他人地址场景在“确认订单”页面用户需要选择一个收货地址 ID。
测试步骤账号 A 下单选择自己的地址 IDAAA。
账号 B 有一个地址 IDBBB。
越权操作账号 A 点击“提交订单”抓包。
找到参数address_id或receiver_id。
将AAA修改为BBB账号 B 的地址 ID。
结果情况一越权使用订单生成成功收货地址显示为账号 B 的地址。
这可能导致恶意给他人发货货到付款诈骗。
情况二信息泄露订单详情页虽然显示账号 B 的地址但接口可能会返回账号 B 的完整地址信息导致隐私泄露。
挖掘技巧参数名敏感度重点关注addressId、addr_id、delivery_id、receiverId。
接口隐蔽性有些 APP 会有“设为默认地址”的接口这个接口往往校验更松容易出现越权修改。
MD5 并非不可破遇到类似0B1F...的 ID先不要放弃尝试变动账号信息如重新添加一次看 ID 是否变化判断是否为规律性的 Hash。
Edu教育行业常见逻辑越权教育行业的系统通常外包给不同的厂商且历史包袱重开发人员往往为了省事留下很多逻辑漏洞。
“接口联动”攻击链越权查看 越权删除这是一个利用两个不同接口完成一次完整攻击的高级思路。
很多时候单独测一个接口无法证明危害结合起来就是高危。
原理开发者在“删除文件”接口中不是通过 ID 删除而是通过物理路径删除懒惰写法。
攻击步骤第一步获取路径找到“查看文件/图片”的接口。
修改参数中的id如学号或文件ID越权查看别人的文件。
此时响应包中通常会返回该文件的完整存储路径如/upload/2026/01/student_
jpg。
第二步执行删除找到“删除文件”的接口通常参数名为path、file_path或url。
第三步组合利用将第一步获取到的别人文件的路径填入到第二步的删除接口中。
结果服务器不校验文件归属直接根据路径删除了他人文件造成数据丢失 。
“前端掩盖”式敏感信息泄露原理懒惰行为后端SQL查询时图省事用了SELECT *把用户的所有信息身份证、家庭住址、密码Hash、手机号全部查出来了但在前端页面通过 JS 只展示了“姓名”和“学号”几项 。
实战操作在“个人信息查询”、“用户搜索”或“通讯录”处抓包。
不要只看页面重点查看 Burp Suite 中的Response响应包。
你会发现响应包的大小Length异常大里面躺着几十条页面上没显示的敏感数据 。
进阶结合 ID 遍历批量抓取响应包即可通过脚本“拖库”全校学生隐私。
默认密码 ID 遍历 批量任意登录背景学校系统往往有默认密码规则如
身份证后六位、NewUser123。
难点你知道默认密码但不知道别人的账号学号/工号。
突破口信息泄露接口寻找系统中的“选择用户”、“发送消息”、“部门人员列表”等功能。
抓包这些接口往往能返回大量的user_id、username学号。
利用收集到的ID列表默认密码 批量接管任意账号。
登录后可能发现该账号有管理员权限直接拿下系统 。
GitHub 捡漏逻辑从源码到内网漫游
搜索逻辑关键词组合目标学校域名如xxx.edu.cn 系统特征词如admin、system、manage。
目标对象寻找被开发人员或学生上传到 GitHub 的项目源码Source Code。
2.
核心价值测试账号漏洞原理开发者在写代码时为了方便调试经常会在源码的注释、配置文件或数据库初始化脚本中硬编码写死一个测试账号和密码如test/123456或admin/admin888。
利用链条在 GitHub 源码中发现测试账号。
回到学校的登录入口SSO统一认证或后台使用该账号登录。
连锁反应教育平台通常是统一身份认证。
一旦这个测试账号能登录往往意味着你可以直接访问 VPN、教务系统、图书馆系统等全校90% 的子系统直接实现内网漫游 。
参数置空技巧逻辑崩坏这是一种“盲打”技巧专门针对后端代码逻辑不严谨的情况。
攻击原理开发者在写 SQL 拼接或条件判断时可能写了类似这样的逻辑IF (name ! null) { SELECT * FROM users WHERE name $name }ELSE { SELECT * FROM users }(如果没有传名字就默认显示所有用户)
实战 Payloads在查询接口如搜索学生、查看成绩尝试将关键参数如name、id、keyword的值修改为以下几种情况进行 Fuzz完全置空id(参数名保留值为空)Null 值idnull通配符id*或name%布尔值id1或id0特殊字符idundefined
危害表现全量泄露系统逻辑判断失效直接返回数据库中的所有数据如一下子返回 20,000 条学生信息导致严重的逻辑越权和信息泄露 。
报错泄露有时会触发数据库报错泄露 SQL 语句结构为 SQL 注入提供线索。
总结 Checklist (实战必做)搜 GitHub域名 admin找源码里的test账号。
看响应包别信前端页面盯着 Response 看有没有隐藏的身份证号。
测删除链先越权查路径再把路径填到删除接口里。
改参数为空搜不到人把搜索参数删了或者改成null试试没准出来全校名单。
ID 遍历找到一个 ID 就丢进 Burp Intruder 跑一遍看看是不是连号的。