“三员系统”中常见的越权问题
字数 1549 2025-08-15 21:30:55

三员系统中的越权访问问题详解

一、越权访问概述

越权访问(Broken Access Control, BAC)是Web应用程序中一种常见的漏洞,被OWASP列为Web应用十大安全隐患的第二名。

1.1 越权访问的产生原理

以订单系统为例:

  • 正常情况:用户A查询自己的订单,执行SQL:select * from tablename where orderid = A
  • 漏洞情况:用户B修改参数为orderid=A,执行SQL:select * from tablename where orderid = A,获取A的订单信息

1.2 越权访问的种类

1.2.1 水平越权

  • 定义:相同权限等级用户之间的越权操作
  • 示例:用户A和用户B同属角色X,用户A能访问用户B的私有数据

1.2.2 垂直越权

  • 定义:不同权限等级用户之间的越权操作(权限提升攻击)
  • 原理:Web应用未做完整权限控制,恶意用户可通过猜测URL访问高权限功能

1.2.3 交叉越权

  • 定义:不同角色用户之间的越权操作

二、三员系统简介

三员系统初始有三个不同权限的管理员:

  1. 系统管理员
  2. 安全保密管理员
  3. 安全审计员

此外还可能包含:

  • 三员的子用户
  • 普通用户(可能进一步细分如操作员、监控员等)

特点:权限划分细致且众多,权限控制难度高,越权漏洞概率高

三、越权访问测试方法

3.1 三员之间的交叉越权测试

  1. 登录A管理员,执行功能x,抓取请求包
  2. 退出A,登录B管理员,抓取B的COOKIE
  3. 将x功能包中的COOKIE替换为B的COOKIE
  4. 发送修改后的请求包
  5. 验证请求是否成功

注意事项

  • 身份认证可能不通过COOKIE,需替换系统认证身份的关键字段
  • 遇到COOKIE共用的系统,直接替换当前用户测试
  • 需先排除未授权漏洞和COOKIE退出不清除问题
  • 常见于同一功能模块下的不同子功能

3.2 三员管理员的垂直越权测试

测试步骤

  1. 抓取角色添加功能请求(如roles=1)
  2. 修改角色字段值(如改为roleid=2)
  3. 发送请求并验证是否成功

注意事项

  • 角色字段可能不明显,需仔细分析请求中各字段含义
  • 常见于用户添加、角色赋予等与权限相关的功能

3.3 三员子用户/普通用户的垂直越权测试

  1. 登录高权限用户C,执行功能y,抓取请求包
  2. 退出C,登录低权限用户D,抓取D的COOKIE
  3. 将y功能包中的COOKIE替换为D的COOKIE
  4. 发送请求并验证是否成功

3.4 三员子用户/普通用户的水平越权测试

  1. 登录用户E,执行功能z,抓取请求包
  2. 修改请求中的用户标识(如username=E改为username=F)
  3. 发送请求并验证F用户的数据是否被修改

四、未授权访问漏洞

4.1 定义

需要安全配置或权限认证的地址存在缺陷,导致其他用户可直接访问敏感功能或数据

4.2 常见第三方未授权访问漏洞

  1. MongoDB未授权访问
  2. Redis未授权访问
  3. Memcached未授权访问(CVE-2013-7239)
  4. JBOSS未授权访问
  5. VNC未授权访问
  6. Docker未授权访问
  7. ZooKeeper未授权访问
  8. Rsync未授权访问

4.3 Web应用本身的未授权访问

  1. 完全缺乏用户身份认证
    • 测试方法:清空或修改请求中的认证信息后发送
  2. 特定页面/文件未做认证
    • 常见于:可下载文件、用户手册、新添加的功能页面

五、认证信息失效机制问题

问题描述:用户注销后认证信息未立即失效,仍可用于请求

解决方案:用户退出时应同步注销服务端认证信息

六、防护建议

  1. 服务端实施严格的权限验证:
    • 用户和角色一对一验证
    • 角色和功能一对一验证
    • 用户和功能一对一验证
  2. 对所有敏感操作进行完整的权限校验
  3. 及时更新存在未授权漏洞的第三方组件
  4. 确保注销功能完全清除服务端会话
三员系统中的越权访问问题详解 一、越权访问概述 越权访问(Broken Access Control, BAC)是Web应用程序中一种常见的漏洞,被OWASP列为Web应用十大安全隐患的第二名。 1.1 越权访问的产生原理 以订单系统为例: 正常情况:用户A查询自己的订单,执行SQL: select * from tablename where orderid = A 漏洞情况:用户B修改参数为 orderid=A ,执行SQL: select * from tablename where orderid = A ,获取A的订单信息 1.2 越权访问的种类 1.2.1 水平越权 定义:相同权限等级用户之间的越权操作 示例:用户A和用户B同属角色X,用户A能访问用户B的私有数据 1.2.2 垂直越权 定义:不同权限等级用户之间的越权操作(权限提升攻击) 原理:Web应用未做完整权限控制,恶意用户可通过猜测URL访问高权限功能 1.2.3 交叉越权 定义:不同角色用户之间的越权操作 二、三员系统简介 三员系统初始有三个不同权限的管理员: 系统管理员 安全保密管理员 安全审计员 此外还可能包含: 三员的子用户 普通用户(可能进一步细分如操作员、监控员等) 特点:权限划分细致且众多,权限控制难度高,越权漏洞概率高 三、越权访问测试方法 3.1 三员之间的交叉越权测试 登录A管理员,执行功能x,抓取请求包 退出A,登录B管理员,抓取B的COOKIE 将x功能包中的COOKIE替换为B的COOKIE 发送修改后的请求包 验证请求是否成功 注意事项 : 身份认证可能不通过COOKIE,需替换系统认证身份的关键字段 遇到COOKIE共用的系统,直接替换当前用户测试 需先排除未授权漏洞和COOKIE退出不清除问题 常见于同一功能模块下的不同子功能 3.2 三员管理员的垂直越权测试 测试步骤 : 抓取角色添加功能请求(如roles=1) 修改角色字段值(如改为roleid=2) 发送请求并验证是否成功 注意事项 : 角色字段可能不明显,需仔细分析请求中各字段含义 常见于用户添加、角色赋予等与权限相关的功能 3.3 三员子用户/普通用户的垂直越权测试 登录高权限用户C,执行功能y,抓取请求包 退出C,登录低权限用户D,抓取D的COOKIE 将y功能包中的COOKIE替换为D的COOKIE 发送请求并验证是否成功 3.4 三员子用户/普通用户的水平越权测试 登录用户E,执行功能z,抓取请求包 修改请求中的用户标识(如username=E改为username=F) 发送请求并验证F用户的数据是否被修改 四、未授权访问漏洞 4.1 定义 需要安全配置或权限认证的地址存在缺陷,导致其他用户可直接访问敏感功能或数据 4.2 常见第三方未授权访问漏洞 MongoDB未授权访问 Redis未授权访问 Memcached未授权访问(CVE-2013-7239) JBOSS未授权访问 VNC未授权访问 Docker未授权访问 ZooKeeper未授权访问 Rsync未授权访问 4.3 Web应用本身的未授权访问 完全缺乏用户身份认证 测试方法:清空或修改请求中的认证信息后发送 特定页面/文件未做认证 常见于:可下载文件、用户手册、新添加的功能页面 五、认证信息失效机制问题 问题描述 :用户注销后认证信息未立即失效,仍可用于请求 解决方案 :用户退出时应同步注销服务端认证信息 六、防护建议 服务端实施严格的权限验证: 用户和角色一对一验证 角色和功能一对一验证 用户和功能一对一验证 对所有敏感操作进行完整的权限校验 及时更新存在未授权漏洞的第三方组件 确保注销功能完全清除服务端会话