con un clic
vertical-privilege-escalation
垂直越权检测 — 低权限账号可访问高权限功能或管理接口的风险;适用于角色权限模型、后台功能与操作审计场景。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
垂直越权检测 — 低权限账号可访问高权限功能或管理接口的风险;适用于角色权限模型、后台功能与操作审计场景。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
白盒建模——一次深度建模产出五张共享模型:项目架构(技术栈/分层/框架自有封装/闭源依赖位置)、 入口点(路由/中间件信任边界)、认证与权限(会话/角色/多租户/归属字段)、业务(实体/流程状态机/ 业务不变量/高价值资产)、全局威胁(攻击面×漏洞类别的适用性映射,供下游逐一全测)。本能力不做漏洞判定,为后续 漏洞维度分析建立共享底图。
OS 命令注入综合检测——覆盖直接命令拼接 / shell 元字符 / 参数注入 / 间接 RCE,按回显 / 时间 / 带外通道分诊。 流量中参数值含主机名 / URL / 文件名 / 命令片段、响应里出现 shell 错误关键字(`/bin/sh` / `cmd.exe` / `command not found`)、注入 `sleep N` 耗时增加、上传后异步处理链路时使用。
文件上传多策略综合检测——覆盖扩展名 / MIME / 魔术数 / 解析漏洞 / 上传链组合(LFI / Zip Slip / SVG XSS / SVG XXE)。 流量含 multipart/form-data 上传、响应回显落盘路径、上传后文件可被 GET 解析、上传字段含 filename / path 可控时使用。
IDOR 水平越权检测 — 通过替换资源标识符(ID/UUID/路径)访问他人资源的风险;适用于用户资料、订单、文档、租户隔离场景。
检测路径穿越和本地文件包含(LFI)风险;当目标存在文件读取/下载/预览功能且含路径参数时触发;适用于文件下载、日志查看、模板加载等场景。
黑盒建模 — 迭代式攻击面建模,按站点级 / 页面级 / 功能级三粒度推进;进入新页面即触发一次页面级建模、切换新身份各刷新一次,产出端点账本与页面语义模型,为后续漏洞维度的适用性判断提供依据。
| name | vertical-privilege-escalation |
| description | 垂直越权检测 — 低权限账号可访问高权限功能或管理接口的风险;适用于角色权限模型、后台功能与操作审计场景。 |
| when-to-use | 当需要验证低权限账号是否可访问高权限功能或管理接口时 |
| allowed-tools | bash,read_file,list_files,rg |
| user-invocable | false |
垂直越权成因:source(用户角色字段——JWT claim 中的 role、cookie 中的 role / is_admin、请求体 / query 中的 role 字段、自定义请求头 X-Role / X-Admin、session 里的角色态)→ sink(权限校验逻辑:高权限端点的角色判定、多角色系统的权限边界、敏感操作的角色前置条件)。判定按 sink 语义"该端点 / 该动作是否仅在高权限主体下放行"——业务命名(admin / manager / operator / supervisor)只是表层。详见同根目录 pentest/web-security-testing/SKILL.md 漏洞成因图谱 · 垂直越权行(不在本 skill 重复成因)。
以下是已知的常见垂直越权触发线索,作为基线起点而非必检硬清单。结合目标代码与上下文动态调整:
[x] done[-] n/a (原因),原因要具体到代码事实[+] added (来源)基线触发线索按"sink 语义"分类(不按业务命名):
/admin/* / /manage/* / /operator/* / /supervisor/*,应仅高权限可达/api/users/me/role / /api/roles/switch,角色变更动作/api/config/* / /api/settings/*,可改全局参数role / is_admin / is_superuser / level / scope / permissionsauth.RequireRole("admin") 调用;JWT 解析后直接信任 claim 不二次校验;mass-assignment 把请求体里的 role 直接绑定到模型加载本 skill 时按这些问题思考:
高权限账号 与 低权限账号。common/closure-verification.md 的《破坏性 / 不可逆动作的闭环边界》执行——强制哨兵自证或非破坏差分,二者都做不到就停 suspected,不得对真实业务数据执行破坏动作来强行闭环。recon-methodology 产出的 shared/models/site-model.md 端点总表)筛选"应仅高权限可达"端点(管理后台、配置、用户管理、审批等)保持请求参数不变,仅替换为低权限账号凭证并重放请求,观察是否仍能成功执行高权限操作或读取高权限数据。
X-Role: admin / X-Admin: 1 / role=admin cookie"role":"admin" / "is_admin":true,探测后端是否直接绑定role=user; role=admin 两个 cookie,探测后端取优先级差异将角色或权限标志(role、is_admin、level、scope)置空、缺省、置 0 或降级提交,探测后端是否在标志缺失时 fail-open 到高权限或跳过角色校验(典型 mass-assignment / 默认角色缺陷)。对写操作执行"写后读"验证;若为删除/覆盖/不可逆写,按《破坏性 / 不可逆动作的闭环边界》改走哨兵自证或非破坏差分。
次级向量:HTTP 方法 / 路径变体(
/admin/usersvs/api/admin/usersvs/v2/admin/users)/ 大小写绕过路由前缀匹配,鉴权严格度可能不一致。
router.GET("/admin/users", handlers.ListUsers) — admin 端点漏挂角色校验中间件(low-role-admin-endpoint-no-check-vpe)db.Model(&user).Updates(c.Bind(req)) — 请求体 role 字段被 mass-assignment 直接绑定(body-role-field-mass-assignment-vpe)claims := jwt.Parse(token); if claims["role"] == "admin" { ... } — JWT claim 直接信任,未做签名 / 角色二次校验(jwt-role-claim-tamper-vpe)if cookies["role"][0] == "user" { reject } — 多角色 cookie 共存时取首条,可绕过(multi-role-cookie-low-priority-vpe)以下是垂直越权维度的典型窄化误判:
/api/admin/* → 其他 admin 接口都有" — 错。每个 admin 端点的角色校验独立(中间件按路由分组 / handler 内独立判定),需按端点账本逐项测/api/v1/admin/* vs /v2/...)、改方法(GET → POST)、改参数(加 role 字段)、改路径编码为什么这里是「必须」:反例义务属于交付契约——"未发现垂直越权"或"角色校验已生效"结论是覆盖完整性的产物声明,缺失反向验证清单会让下游误信"该维度全站安全"。
写"未发现垂直越权"或"角色校验已生效"前,产物必须包含:
清单不完整 → 结论降级为 partial-coverage 并显式声明未覆盖范围(例如:仅测了 /admin/*、未测配置 / 审批 / 用户管理类)。
通用闭环口径见同根目录 common/closure-verification.md(技能表 path 列同一抽取根下,需要时 read_file 读取)。核心:结论须形成「输入 → 处理 → 真实危害 → 可复核证据」完整证据链;仅凭菜单可见、按钮 200、前端展示等中间信号最多判 suspected,证明低权限主体真实读到/操作了高权限数据或能力才判 confirmed。
confirmed| 现象 | 判定 |
|---|---|
| 低权限账号可读取管理数据或执行高权限操作,并通过真实数据/状态变化证明权限突破已生效 | confirmed |
| 响应异常,但尚未证明真实高权限数据暴露或操作已生效 | suspected |
| 低权限账号稳定被拒绝(401/403/权限错误) | not vulnerable |
只测了部分高权限端点(如仅 /admin/*),未覆盖配置 / 审批 / 用户管理 | partial-coverage(不得宣称 safe) |
不可逆动作例外:上表 confirmed 行涉及删除/覆盖/不可逆写时,按
common/closure-verification.md《破坏性 / 不可逆动作的闭环边界》——不得对真实业务数据执行,改走哨兵自证或非破坏差分,二者都做不到则降suspected。