
前言在 Web 接口渗透测试中开发常使用 UUID 复杂字符串作为业务资源 ID误以为长随机 ID 就能阻挡越权遍历这是非常典型的安全误区。本次分享海外考勤班次系统真实渗透案例系统同时存在UUID 长 ID、数字短 ID两套资源标识低权限普通员工通过替换请求内 ID 值实现越权查看、操作管理员班次记录属于高危水平越权漏洞。全文完整还原测试步骤、漏洞根源、风险危害与落地修复方案适合开发、安全测试、运维人员学习参考。一、漏洞 测试基础信息1. 目标系统业务与权限体系该平台为企业考勤班次管理系统核心功能为员工打卡、班次记录查看、下班签退Check Out划分两类基础账号低权限普通员工user_id22684363仅允许查看、操作自身创建的班次记录高权限管理员user_id22684364可查看团队全部人员班次数据。2. 漏洞核心特征资源 ID 双格式混用数据库同时存储UUID 复杂字符串 ID与纯数字简易 ID接口未做 ID 格式强校验两种 ID 均可正常访问资源缺失归属权校验接口仅校验 ID 是否存在未校验当前登录账号是否拥有该班次记录的操作权限覆盖多类风险操作不仅可越权读取他人班次详情还能执行下班签退Check Out修改他人业务数据属于读写复合型高危越权。3. 漏洞风险等级高危漏洞攻击者仅需普通员工账号即可读取团队内全部人员考勤、薪资关联班次数据还能篡改管理员考勤记录干扰企业人事核算。二、漏洞实操 / 测试流程原文原句完整保留步骤标连续序号漏洞完整利用步骤1、使用不同权限账号登录系统各自创建一个班次记录 低权限用户 22684363高权限用户 226843642、低权限用户只能看自己能看到的记录高权限用户可以看到所有的记录3、用户访问记录时请求包中默认都是该记录的复杂 id以低权限用户为例4、此时尝试替换复杂 id 为 简单 id即 xxxxx-xxxxx-xxxxx-xxxxx 为 22xxxx 发现可以正常访问相同的数据5、尝试遍历 id发现访问团队内其他用户的 id 是 403非团队内其他用户的是 404 6、对该记录进行其他功能的使用发现 check out 存在越权 请求为https://xxxx.asdasdasdasd.xom/api/internal/shifts/xxxx-yyyyyy-asdasdadasda-dgfhdfhfghjfgh/check_out.json 替换 id https://xxxx.asdasdasdasd.xom/api/internal/shifts/226xxxxx/check_out.json 最后替换 id 为高权限用户的记录 id 22684364发现不仅能越权获取记录详情同时还可以 checkout 他人记录操作细节补充梳理系统前端展示资源时默认携带 UUID 格式长 ID 发起请求开发寄希望 UUID 无规律防止遍历抓包修改接口路径中的资源标识将 UUID 替换为数据库内对应的纯数字短 ID后端无格式拦截正常返回完整班次数据读接口存在越权后延伸测试写接口下班签退 Check Out同样替换管理员班次数字 ID服务端直接执行签退逻辑管理员班次记录被清空业务数据被恶意篡改边界测试遍历同团队其他员工 ID 返回 403跨团队陌生 ID 返回 404说明仅做了团队粗粒度隔离未做单条记录归属人精准校验。三、漏洞挖掘思路梳理测试切入点带资源 ID 的 RESTful 接口形如/api/xxx/{资源ID}/操作的路径型接口是越权重灾区尤其是考勤、订单、文件、工单类带归属关系的业务优先抓包修改路径内 ID 值测试。ID 格式双重测试思维若系统同时存在 UUID、自增数字 ID、哈希 ID 等多套标识不要只测试前端展示的 ID 格式需要替换数据库底层原始数字 ID、主键 ID 尝试绕过限制。读写联动测试逻辑先测试查询类读接口确认越权存在立刻延伸测试修改、删除、状态变更等写接口多数场景读接口存在越权时写接口同步存在风险危害会成倍放大。边界遍历辅助判断校验逻辑批量遍历不同归属、不同团队的 ID通过返回码403/404/200判断后端校验粒度仅区分团队、未区分记录所有人是本次漏洞的核心校验缺失点。底层逻辑漏洞根源开发错误认为「UUID 复杂 ID 能防越权」将安全防护寄托在 ID 复杂度上完全忽略接口必须校验当前用户是否属于本条资源归属人ID 仅作为资源定位标识不具备任何权限防护能力。四、漏洞完整总结核心问题 业务危害 修复建议 测试心得一漏洞核心问题权限校验逻辑严重缺失接口仅校验资源 ID 是否存在、是否属于同一团队未精准校验当前登录账号是否为班次记录创建人 / 归属人是越权根本诱因多格式 ID 无统一强校验系统混用 UUID、数字自增 ID 两套主键后端未对接口传入的 ID 格式做白名单拦截攻击者可随意替换两种格式 ID 访问资源防护思路本末倒置依赖 UUID 长 ID 的随机性做安全防护混淆「资源唯一标识」和「访问权限控制」的作用ID 复杂度无法抵御抓包篡改、ID 遍历攻击读写接口校验标准不统一查询、签退修改接口共用同一套薄弱校验逻辑读数据、篡改数据双重越权全部放行无差异化权限拦截。二业务安全危害敏感人事数据泄露低权限员工可越权读取管理员、同团队全员考勤打卡时间、工作地点、薪资计价标准等隐私人事数据违反个人信息保护相关法规业务数据恶意篡改可对任意他人班次执行下班签退操作清空考勤记录直接干扰企业工时统计、工资核算造成财务与人事纠纷横向渗透风险放大攻击者通过遍历数字 ID批量爬取团队内部全部考勤数据若叠加其他漏洞可进一步获取员工邮箱、手机号等核心信息企业管理秩序破坏恶意篡改管理员考勤记录可伪造旷工、迟到记录引发内部管理纠纷造成企业管理公信力受损。三标准化落地修复建议增加资源归属强制校验核心修复所有班次查询、修改、签退接口在查询数据库班次数据后必须比对班次绑定的user_id与当前登录 Token/Session 内用户 ID不一致直接返回 403 权限不足统一资源 ID 格式拦截非法 ID全系统统一使用单一 UUID 作为对外暴露的业务资源 ID数据库自增数字主键仅后端内部使用禁止前端、接口传输后端增加 ID 格式正则白名单仅允许 UUID 格式字符串访问接口纯数字 ID 直接拦截读写接口分级权限控制查询接口、修改 / 删除类写接口拆分校验逻辑写接口增加更严格权限校验仅资源归属人、超级管理员可执行修改操作新增操作日志与异常监控记录班次查看、签退操作的账号、目标班次 ID监控短时间大量遍历不同用户班次 ID、频繁操作他人班次的行为实时告警拦截安全开发规范约束明确开发红线任何业务资源 ID 都不能作为权限防护手段权限控制必须基于登录身份与资源归属关系双重校验。四渗透测试心得不要被前端展示的复杂 UUID 迷惑数据库底层自增数字主键往往是越权突破口抓包替换不同格式 ID 是基础必测项越权测试不能只测查询功能修改、删除、状态变更等写接口危害更大必须联动测试很多开发存在认知误区长随机 ID 不会被遍历实际上攻击者只要获取一条有效数字 ID即可批量遍历同团队全部资源校验粒度是关键仅区分团队、部门的粗粒度校验无法抵御越权必须精确到单条资源归属用户。五、安全声明本文全部测试操作均在企业授权渗透测试环境内完成案例仅用于网络安全技术学习、企业安全体系建设参考根据《网络安全法》《数据安全法》《个人信息保护法》任何未经授权擅自检测、访问、篡改第三方信息系统数据的行为属于违法行为将承担民事、行政乃至刑事责任企业开发、安全、运维团队可直接参考文中修复方案优化接口权限逻辑上线前将 ID 篡改越权纳入自动化接口安全测试用例提前规避同类漏洞。