记一次校内站点的渗透测试
字数 1431 2025-08-24 16:48:15
校内站点渗透测试教学文档
前言
本文档基于一次对校内获奖申报平台的渗透测试实例,详细记录了测试过程中发现的多个高危漏洞,包括越权访问、任意文件上传、任意文件下载和任意用户添加等。这些漏洞的发现和利用过程将作为教学案例,帮助安全人员理解常见Web应用漏洞的检测和利用方法。
0x01 越权漏洞
漏洞发现
- 首先在申报平台添加一次申报记录
- 点击编辑功能并抓包(使用Burp Suite等工具)
- 观察请求参数,发现使用
id参数控制返回的数据
漏洞验证
- 越权读取:修改
id参数为其他用户的记录ID,可以返回其他用户的敏感数据 - 越权修改:构造修改请求,更改
id为其他用户记录,可成功修改 - 越权删除:同样方法可删除其他用户记录
漏洞原理
服务端未对请求进行身份验证和权限检查,仅依赖客户端提供的id参数返回数据,导致水平越权漏洞。
0x02 任意文件上传漏洞
漏洞发现
- 在提交申报功能中尝试添加文件附件
- 抓取文件上传请求
漏洞特征
- 上传后响应中未直接返回文件路径,但返回了文件
id - 需要结合前述越权接口获取上传文件信息
漏洞利用
- 上传Webshell文件(如.jsp、.php等)
- 通过越权接口获取文件存储信息
- 访问上传的恶意文件,确认解析执行
0x03 任意文件下载漏洞
漏洞发现
- 在
viewPage接口返回数据中发现调用了downloadFile的JS函数 - 查看前端源码,发现文件下载功能
漏洞验证
请求参数:
fileName:文件名fileType:文件后缀
测试步骤:
- 随意构造参数请求下载接口
- 发现接口不仅无限制,还返回当前目录列表
- 构造目录穿越payload(如
../../etc/passwd)
风险
可下载服务器任意敏感文件,包括配置文件、密码文件等。
0x04 任意权限用户添加
漏洞发现
- 观察接口命名规律(如
addPage、studentward等) - 通过模糊测试发现
/user/addPage接口
接口分析
/user/addPage返回的HTML包含:
- 表单字段定义
- 相关数据加载接口(如
/role/tree加载角色信息) - 提交地址
/user/add
用户添加流程
-
获取必要参数:
loginName:学工号/登录名name:姓名password:密码sex:性别(通过/dict/loadcombobox?code=sex获取)userType:用户类型(通过/dict/loadcombobox?code=userType获取)organizationId:部门ID(通过/organization/tree获取)roleIds:角色ID(通过/role/tree获取)status:用户状态
-
构造添加管理员用户的请求:
POST /user/add HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
loginName=admin123&name=Admin&password=admin123&sex=1&userType=1&organizationId=1&roleIds=1&status=1
防御建议
-
越权防护:
- 实施严格的权限验证
- 使用会话关联用户数据,不依赖客户端传参
-
文件上传防护:
- 限制上传文件类型
- 随机化存储文件名
- 将上传文件存储在非Web目录
-
文件下载防护:
- 验证文件路径
- 禁止目录遍历
- 实施白名单机制
-
用户管理防护:
- 关键操作需要高权限验证
- 实施操作日志审计
- 对用户添加等敏感操作进行二次验证
-
其他建议:
- 部署WAF防护
- 定期安全审计
- 实施最小权限原则
总结
本案例展示了由于缺乏基本安全防护导致的多个高危漏洞。开发人员应重视安全编码实践,安全团队应定期进行渗透测试,确保系统安全。