记一次学校越权登录的神奇案例
字数 1444 2025-08-20 18:18:05

学校采购与招投标管理系统越权登录漏洞分析教学文档

1. 漏洞概述

本案例展示了一个典型的URL构造越权登录漏洞,发生在某大学的采购与招投标管理系统中。该系统存在两个不同的用户登录接口(供应商和代理机构),由于设计缺陷导致可以通过URL构造实现越权访问。

2. 漏洞发现过程

2.1 系统接口识别

系统存在两个关键登录接口:

  1. 供应商登录接口:

    • 登录前URL: https://xxxx.edu.cn/gysUser.do?login
    • 登录后URL: https://xxxx.edu.cn/gysUser.do?gyslogin
  2. 代理机构登录接口:

    • 登录前URL: https://xxxx.edu.cn/dljgUser.do?login

2.2 正常登录流程

  1. 供应商接口允许公开注册,攻击者可以注册一个供应商账号
  2. 使用注册的账号登录供应商接口
  3. 登录成功后观察到URL从...?login变为...?gyslogin

2.3 越权攻击步骤

  1. 在已登录供应商账号的状态下
  2. 将浏览器地址栏的URL从gysUser.do?gyslogin修改为dljgUser.do?dljglogin
  3. 访问修改后的URL,成功以代理机构身份登录系统
  4. 获取了大量本应只有代理机构才能查看的项目公文信息

3. 漏洞原理分析

3.1 技术原因

  1. URL路由设计缺陷:系统使用简单的URL参数(?login?xxxlogin)来区分登录状态
  2. 会话管理不当:系统没有对不同用户类型的会话进行严格区分
  3. 缺乏权限验证:登录后没有对每个请求进行用户类型验证
  4. 接口相似性:多个接口使用相同的后台管理系统和数据库

3.2 攻击面扩大

这种漏洞模式可以扩展到:

  1. 系统中其他使用类似URL结构的接口
  2. 任何使用相同后台管理系统的不同用户类型接口
  3. 具有相似UI和URL变换方式的其他系统

4. 漏洞挖掘方法论

4.1 识别潜在目标

  1. 寻找系统中的多个登录入口
  2. 观察不同登录入口的UI相似性
  3. 分析URL结构模式

4.2 测试方法

  1. 注册/登录一个可公开注册的账户
  2. 记录登录前后URL的变化规律
  3. 将发现的URL变化模式应用到其他看似相似的接口
  4. 尝试构造新的URL访问其他用户类型的界面

4.3 判断依据

  1. 多个登录接口使用相同或相似的UI
  2. URL变换遵循可预测的模式
  3. 系统可能共享同一个后台管理

5. 防御措施

5.1 开发层面

  1. 严格的权限验证:每个请求都应验证用户类型和权限
  2. 会话隔离:不同用户类型使用完全独立的会话机制
  3. URL设计:避免使用可预测的URL模式表示权限状态
  4. 后端验证:前端URL变化不应影响后端权限判断

5.2 架构层面

  1. 微服务隔离:不同用户类型的接口使用独立的服务
  2. API网关:在网关层进行统一的权限验证
  3. 权限最小化:遵循最小权限原则设计用户权限

5.3 运维层面

  1. 定期安全审计:检查系统中的URL路由设计
  2. 渗透测试:模拟攻击者尝试各种URL构造方式
  3. 日志监控:监控异常的URL访问模式

6. 总结与启示

本案例展示了一个典型的URL构造越权漏洞,其核心问题在于系统设计时没有充分考虑不同用户类型之间的安全边界。安全开发人员应注意:

  1. 不要依赖前端URL或参数来判断用户权限
  2. 相似UI的接口可能存在相同的安全风险
  3. URL模式可预测性会带来安全隐患
  4. 每个请求都应进行完整的权限验证

这种类型的漏洞在各类管理系统中较为常见,安全测试时应特别关注具有多个用户类型和相似UI的系统。

学校采购与招投标管理系统越权登录漏洞分析教学文档 1. 漏洞概述 本案例展示了一个典型的URL构造越权登录漏洞,发生在某大学的采购与招投标管理系统中。该系统存在两个不同的用户登录接口(供应商和代理机构),由于设计缺陷导致可以通过URL构造实现越权访问。 2. 漏洞发现过程 2.1 系统接口识别 系统存在两个关键登录接口: 供应商登录接口: 登录前URL: https://xxxx.edu.cn/gysUser.do?login 登录后URL: https://xxxx.edu.cn/gysUser.do?gyslogin 代理机构登录接口: 登录前URL: https://xxxx.edu.cn/dljgUser.do?login 2.2 正常登录流程 供应商接口允许公开注册,攻击者可以注册一个供应商账号 使用注册的账号登录供应商接口 登录成功后观察到URL从 ...?login 变为 ...?gyslogin 2.3 越权攻击步骤 在已登录供应商账号的状态下 将浏览器地址栏的URL从 gysUser.do?gyslogin 修改为 dljgUser.do?dljglogin 访问修改后的URL,成功以代理机构身份登录系统 获取了大量本应只有代理机构才能查看的项目公文信息 3. 漏洞原理分析 3.1 技术原因 URL路由设计缺陷 :系统使用简单的URL参数( ?login 和 ?xxxlogin )来区分登录状态 会话管理不当 :系统没有对不同用户类型的会话进行严格区分 缺乏权限验证 :登录后没有对每个请求进行用户类型验证 接口相似性 :多个接口使用相同的后台管理系统和数据库 3.2 攻击面扩大 这种漏洞模式可以扩展到: 系统中其他使用类似URL结构的接口 任何使用相同后台管理系统的不同用户类型接口 具有相似UI和URL变换方式的其他系统 4. 漏洞挖掘方法论 4.1 识别潜在目标 寻找系统中的多个登录入口 观察不同登录入口的UI相似性 分析URL结构模式 4.2 测试方法 注册/登录一个可公开注册的账户 记录登录前后URL的变化规律 将发现的URL变化模式应用到其他看似相似的接口 尝试构造新的URL访问其他用户类型的界面 4.3 判断依据 多个登录接口使用相同或相似的UI URL变换遵循可预测的模式 系统可能共享同一个后台管理 5. 防御措施 5.1 开发层面 严格的权限验证 :每个请求都应验证用户类型和权限 会话隔离 :不同用户类型使用完全独立的会话机制 URL设计 :避免使用可预测的URL模式表示权限状态 后端验证 :前端URL变化不应影响后端权限判断 5.2 架构层面 微服务隔离 :不同用户类型的接口使用独立的服务 API网关 :在网关层进行统一的权限验证 权限最小化 :遵循最小权限原则设计用户权限 5.3 运维层面 定期安全审计 :检查系统中的URL路由设计 渗透测试 :模拟攻击者尝试各种URL构造方式 日志监控 :监控异常的URL访问模式 6. 总结与启示 本案例展示了一个典型的URL构造越权漏洞,其核心问题在于系统设计时没有充分考虑不同用户类型之间的安全边界。安全开发人员应注意: 不要依赖前端URL或参数来判断用户权限 相似UI的接口可能存在相同的安全风险 URL模式可预测性会带来安全隐患 每个请求都应进行完整的权限验证 这种类型的漏洞在各类管理系统中较为常见,安全测试时应特别关注具有多个用户类型和相似UI的系统。