Pikachu 靶场:权限绕过漏洞(水平越权与垂直越权)
Pikachu 靶场:权限绕过漏洞(水平越权与垂直越权)
一、前言
权限绕过漏洞是 Web 应用中常见的安全问题,分为水平越权和垂直越权两种类型。这类漏洞源于后端未对用户权限进行严格校验,允许攻击者访问未授权的数据或执行受限操作。本文基于 Pikachu 靶场 的 Over Permission 模块,详细讲解水平越权和垂直越权的成因、危害、利用方式及修复方法,旨在帮助安全从业者和开发者深入理解并防范此类漏洞。
二、权限绕过漏洞概述
1. 什么是权限绕过漏洞?
权限绕过漏洞是指 Web 应用未正确验证用户权限,导致攻击者能够访问或操作超出其权限范围的资源或功能。按权限方向分为两种类型:
| 类型 | 定义 |
|---|---|
| 水平越权 | 普通用户 A 能访问普通用户 B 的资源或数据(如查看其他用户的隐私信息) |
| 垂直越权 | 普通用户通过伪造参数,执行只有管理员才能完成的操作(如用户管理) |
2. 危害
- 水平越权:
- 泄露其他用户的敏感信息(如个人信息、订单记录)
- 篡改其他用户的数据
- 垂直越权:
- 执行管理功能(如创建/删除用户、修改系统配置)
- 完全控制 Web 应用
- 潜在后果:
- 数据泄露
- 系统功能滥用
- 服务器被接管
三、靶场环境
1. 靶场信息
- 地址:
http://192.168.147.137/pikachu/ - 监听端口:81
- 漏洞模块:
- 水平越权:
/vul/overpermission/op1/ - 垂直越权:
/vul/overpermission/op2/
- 水平越权:
- 测试工具:
- Burp Suite(抓包与请求重放)
- 浏览器(推荐 Firefox)
2. 用户信息
| 用户名 | 密码 | 角色 |
|---|---|---|
kobe |
(任意) | 普通用户 |
lucy |
(任意) | 普通用户 |
admin |
123456 |
管理员 |
pikachu |
000000 |
普通用户 |
四、水平越权漏洞实战 🎯
1. 场景说明
Pikachu 靶场的水平越权模块模拟了一个用户信息查询接口:
1 | |
普通用户(如 kobe)登录后,可通过该接口查看自己的信息。但由于后端未验证请求参数 username 是否与当前用户匹配,攻击者可通过修改 username 参数,访问其他用户(如 lucy)的私有信息。
2. 攻击步骤
- 登录 kobe 账户:
- 访问
http://192.168.147.137:81/pikachu/,使用kobe登录。
- 访问
- 抓取请求:
- 打开 Burp Suite,配置代理(默认:
127.0.0.1:8080)。 - 使用 Firefox 访问:
- 打开 Burp Suite,配置代理(默认:
1 | |
- Burp 拦截到类似以下请求:
1
2
3
4
5
6GET /vul/overpermission/op1/op1_mem.php?username=kobe HTTP/1.1
Host: 192.168.147.137:81
Cookie: PHPSESSID=<kobe的session>
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html
Connection: close
- 修改参数:
- 在 Burp 的 Repeater 模块中,将
username=kobe改为username=lucy:1
2
3
4GET /vul/overpermission/op1/op1_mem.php?username=lucy HTTP/1.1
Host: 192.168.147.137:81
Cookie: PHPSESSID=<kobe的session>
...
- 在 Burp 的 Repeater 模块中,将
- 发送请求:
- 点击发送,页面返回
lucy的隐私数据(如邮箱、电话等)。
- 点击发送,页面返回
3. 安全问题
- 后端直接信任 GET 参数
username,未验证是否与当前会话用户($_SESSION['user'])匹配。 - 缺乏用户身份校验,导致普通用户可访问任意用户的数据。
4. 修复建议
在后端添加用户身份校验逻辑,确保请求的用户与会话用户一致:
1 | |
五、垂直越权漏洞实战
1. 场景说明
Pikachu 靶场的垂直越权模块模拟了一个管理员管理接口:
1 | |
- 管理员(
admin/123456)可通过该接口创建或修改用户信息。 - 普通用户(
pikachu/000000)本应无权访问该接口。 - 由于后端未验证用户角色,普通用户可伪造请求执行管理操作。
2. 攻击流程
- 登录普通用户 pikachu:
- 访问
http://192.168.147.137:81/pikachu/,使用pikachu/000000登录。
- 访问
- 抓取管理员请求:
使用
admin账户登录,访问管理接口,抓取 POST 请求:1
2
3
4
5
6
7POST /vul/overpermission/op2/op2_admin_edit.php HTTP/1.1
Host: 192.168.147.137:81
Cookie: PHPSESSID=<admin的session>
Content-Type: application/x-www-form-urlencoded
Content-Length: 133
username=t3&password=123456&sex=女&phonenum=12345678908&email=t3@qq.com&address=北京&submit=创建
- 替换 Cookie:
在 Burp Repeater 中,将请求的
Cookie替换为pikachu的会话:1
Cookie: PHPSESSID=<pikachu的session>
- 重放请求:
- 发送修改后的 POST 请求,观察响应。
- 如果成功,系统创建新用户
t3。
3. 安全问题
- 管理员功能接口仅由前端隐藏(如菜单不可见),后端未验证用户角色。
- 普通用户通过伪造请求即可执行敏感操作(如创建用户)。
4. 修复建议
在后端添加角色校验逻辑,确保只有管理员可访问管理接口:
1 | |
六、漏洞原理总结
| 项目 | 水平越权 | 垂直越权 |
|---|---|---|
| 漏洞位置 | 用户间数据接口 | 后台管理功能接口 |
| 攻击方式 | 修改 username 参数 |
重放管理员请求,伪造普通用户身份 |
| 问题本质 | 未验证请求是否属于当前用户 | 未验证用户是否具有管理员权限 |
| 危害 | 数据泄露 | 非授权操作、管理功能滥用 |
| 修复重点 | 接口绑定用户身份校验 | 严格校验接口访问者的角色 |
1. 成因
- 水平越权:后端信任用户输入(如
username),未校验与会话用户的一致性。 - 垂直越权:管理接口未验证用户角色,允许任意用户通过伪造请求访问。
2. 利用方式
- 水平越权:通过修改 URL 参数(如
username),访问其他用户数据。 - 垂直越权:使用 Burp Suite 重放管理员请求,替换为普通用户的会话。
3. 危害
- 水平越权:导致用户隐私泄露,可能引发后续社会工程学攻击。
- 垂直越权:可能导致系统完全失控,如创建恶意管理员账户。
七、防护建议
严格权限校验
- 水平越权:确保请求参数与当前会话用户一致(如
$_SESSION['user'] == $_GET['username'])。 - 垂直越权:验证用户角色,确保管理接口仅管理员可访问(如
$_SESSION['role'] == 'admin')。
- 水平越权:确保请求参数与当前会话用户一致(如
最小权限原则
- 配置 Web 应用以最低权限运行,限制普通用户的功能访问。
- 确保敏感接口(如用户管理)仅对特定角色开放。
安全编码
- 对所有用户输入进行严格校验,防止参数篡改。
- 使用安全的会话管理机制(如 CSRF 令牌)。
部署 WAF
- 配置 Web 应用防火墙,拦截异常请求(如非法的
username参数或未授权的管理请求)。 - 使用正则规则检测可疑参数。
- 配置 Web 应用防火墙,拦截异常请求(如非法的
日志监控
- 记录所有接口访问日志,监控异常的权限请求。
- 定期审计日志,及时发现潜在越权行为。
前端与后端协同
- 前端隐藏敏感功能(如管理员菜单),但不能仅依赖前端控制。
- 后端必须独立验证所有请求的权限。
八、总结
| 项目 | 信息 |
|---|---|
| 漏洞类型 | 权限绕过(水平越权、垂直越权) |
| 靶场 | Pikachu(http://192.168.147.137:81/pikachu/) |
| 漏洞模块 | /vul/overpermission/op1/(水平越权)/vul/overpermission/op2/(垂直越权) |
| 危害 | 数据泄露、未经授权的操作、系统失控 |
| 修复核心 | 用户身份校验、角色权限验证 |
Pikachu 靶场的 Over Permission 模块 通过模拟水平越权和垂直越权场景,展示了权限校验缺失的严重后果。水平越权允许普通用户访问其他用户数据,垂直越权则让普通用户执行管理员操作。通过本文的复现,读者可以深入理解越权漏洞的成因、利用方式及修复方法。开发者应在开发中始终遵循“后端校验优先”原则,结合 WAF 和日志监控,构建安全的 Web 应用。
免责声明:本文内容仅供安全研究和防护参考,请勿用于非法攻击活动。