记一次水平越权漏洞的利用
字数 1613 2025-08-12 12:08:18

水平越权漏洞利用实战教学文档

0x00 前言

水平越权(Horizontal Privilege Escalation)是指攻击者能够访问或操作与其权限级别相同的其他用户的资源。本文档将详细记录一次水平越权漏洞的完整利用过程,包含多种越权方式的实战演示。

0x01 越权查看和删除

漏洞发现过程

  1. 初始测试:注册登录进入个人中心后,通过修改参数测试越权可能性
  2. 教育经历操作流程
    • 先创建自己的教育经历
    • 再进入编辑状态

漏洞利用步骤

  1. 抓包分析

    • 拦截编辑请求,发现通过infoId参数引用对象
    • 服务端返回用户信息并进入编辑状态
  2. 参数篡改测试

    • 尝试SQL注入无果
    • 修改infoId值为其他用户ID,成功返回其他用户信息
    • 同样方法可越权删除任意用户信息
  3. REST风格参数测试

    • 发现编辑操作后infoId值出现在URL路径中
    • 修改路径中的ID值,成功越权修改其他用户资料
    • 注意:测试时应使用自己的测试账号,避免影响真实用户

技术原理

  • 不安全的直接对象引用(IDOR):系统仅通过客户端提供的ID进行权限判断,未在服务端验证请求者是否有权访问该ID对应的资源
  • REST风格参数:URL路径中的参数同样需要验证权限

0x02 绕过登录未授权访问

漏洞发现过程

  1. 初始观察:预览资料请求中无GET/POST参数,推测通过cookie鉴别
  2. cookie分析
    • 发现多个cookie字段值均为base64编码
    • 使用控制变量法逐个删除字段测试

漏洞利用步骤

  1. 关键字段定位

    • 删除career_id字段后页面异常
    • 确认服务端仅校验该字段
  2. 字段解码分析

    • base64解码career_id发现包含用户ID(如5160397)
  3. 暴力枚举测试

    • 使用Burp Intruder模块遍历career_id
    • 成功获取其他用户ID
  4. cookie替换攻击

    • 复制目标用户career_id替换自己cookie中的值
    • 成功绕过登录,未授权访问其他用户个人中心

技术原理

  • 脆弱的身份验证:仅依赖单个未加密的cookie字段进行身份验证
  • 信息暴露:使用可逆的编码方式(如base64)存储敏感信息

0x03 利用"self-xss"获取更多权限

组合攻击思路

  1. 权限限制分析

    • 个人中心仅校验career_id
    • 其他页面校验更多字段,限制更多操作
  2. 存储型XSS发现

    • 简历编辑页存在存储型XSS
    • 正常情况下为self-XSS(仅影响自己)
  3. 组合攻击

    • 越权编辑他人简历植入XSS payload
    • 等待目标用户访问触发
    • 可获取目标用户完整cookie或其他敏感信息
  4. CSRF组合攻击

    • 资料编辑操作存在CSRF漏洞
    • 可构造"CSRF + self-XSS"攻击链
    • 但越权编辑方式更可靠

0x04 测试方法论总结

水平越权测试基本思路

  1. 参数定位

    • 使用控制变量法删除参数或cookie字段
    • 找出真正有效的鉴权参数
  2. 信息去模糊化

    • 对参数或cookie字段进行解码/解密
    • 分析其结构和含义
  3. 全面测试

    • 修改参数值或cookie字段
    • 对增删改查等所有操作进行越权测试
    • 包括GET/POST参数和URL路径参数
  4. 漏洞组合

    • 结合其他漏洞(XSS、CSRF等)提升危害
    • 构建攻击链实现更大影响

自动化测试工具

  • 可使用Burp Suite的Authz等插件辅助测试
  • 但主要适用于查看操作的越权检测

0x05 防御建议

  1. 服务端验证

    • 所有操作必须在服务端验证请求者权限
    • 不能依赖客户端提供的参数或隐藏字段
  2. 强身份验证

    • 使用不可逆的token代替直接ID
    • 多因素认证关键操作
  3. 安全编码

    • 避免在客户端存储敏感信息
    • 如需存储,应使用强加密而非简单编码
  4. 输入输出处理

    • 对所有输入进行严格验证
    • 输出编码防止XSS等二次攻击
  5. 最小权限原则

    • 用户只能访问必要的功能和数据
    • 默认拒绝所有非明确允许的请求
水平越权漏洞利用实战教学文档 0x00 前言 水平越权(Horizontal Privilege Escalation)是指攻击者能够访问或操作与其权限级别相同的其他用户的资源。本文档将详细记录一次水平越权漏洞的完整利用过程,包含多种越权方式的实战演示。 0x01 越权查看和删除 漏洞发现过程 初始测试 :注册登录进入个人中心后,通过修改参数测试越权可能性 教育经历操作流程 : 先创建自己的教育经历 再进入编辑状态 漏洞利用步骤 抓包分析 : 拦截编辑请求,发现通过 infoId 参数引用对象 服务端返回用户信息并进入编辑状态 参数篡改测试 : 尝试SQL注入无果 修改 infoId 值为其他用户ID,成功返回其他用户信息 同样方法可越权删除任意用户信息 REST风格参数测试 : 发现编辑操作后 infoId 值出现在URL路径中 修改路径中的ID值,成功越权修改其他用户资料 注意:测试时应使用自己的测试账号,避免影响真实用户 技术原理 不安全的直接对象引用(IDOR) :系统仅通过客户端提供的ID进行权限判断,未在服务端验证请求者是否有权访问该ID对应的资源 REST风格参数 :URL路径中的参数同样需要验证权限 0x02 绕过登录未授权访问 漏洞发现过程 初始观察 :预览资料请求中无GET/POST参数,推测通过cookie鉴别 cookie分析 : 发现多个cookie字段值均为base64编码 使用控制变量法逐个删除字段测试 漏洞利用步骤 关键字段定位 : 删除 career_id 字段后页面异常 确认服务端仅校验该字段 字段解码分析 : base64解码 career_id 发现包含用户ID(如5160397) 暴力枚举测试 : 使用Burp Intruder模块遍历 career_id 值 成功获取其他用户ID cookie替换攻击 : 复制目标用户 career_id 替换自己cookie中的值 成功绕过登录,未授权访问其他用户个人中心 技术原理 脆弱的身份验证 :仅依赖单个未加密的cookie字段进行身份验证 信息暴露 :使用可逆的编码方式(如base64)存储敏感信息 0x03 利用"self-xss"获取更多权限 组合攻击思路 权限限制分析 : 个人中心仅校验 career_id 其他页面校验更多字段,限制更多操作 存储型XSS发现 : 简历编辑页存在存储型XSS 正常情况下为self-XSS(仅影响自己) 组合攻击 : 越权编辑他人简历植入XSS payload 等待目标用户访问触发 可获取目标用户完整cookie或其他敏感信息 CSRF组合攻击 : 资料编辑操作存在CSRF漏洞 可构造"CSRF + self-XSS"攻击链 但越权编辑方式更可靠 0x04 测试方法论总结 水平越权测试基本思路 参数定位 : 使用控制变量法删除参数或cookie字段 找出真正有效的鉴权参数 信息去模糊化 : 对参数或cookie字段进行解码/解密 分析其结构和含义 全面测试 : 修改参数值或cookie字段 对增删改查等所有操作进行越权测试 包括GET/POST参数和URL路径参数 漏洞组合 : 结合其他漏洞(XSS、CSRF等)提升危害 构建攻击链实现更大影响 自动化测试工具 可使用Burp Suite的Authz等插件辅助测试 但主要适用于查看操作的越权检测 0x05 防御建议 服务端验证 : 所有操作必须在服务端验证请求者权限 不能依赖客户端提供的参数或隐藏字段 强身份验证 : 使用不可逆的token代替直接ID 多因素认证关键操作 安全编码 : 避免在客户端存储敏感信息 如需存储,应使用强加密而非简单编码 输入输出处理 : 对所有输入进行严格验证 输出编码防止XSS等二次攻击 最小权限原则 : 用户只能访问必要的功能和数据 默认拒绝所有非明确允许的请求