记一次校内站点的渗透测试
字数 1431 2025-08-24 16:48:15

校内站点渗透测试教学文档

前言

本文档基于一次对校内获奖申报平台的渗透测试实例,详细记录了测试过程中发现的多个高危漏洞,包括越权访问、任意文件上传、任意文件下载和任意用户添加等。这些漏洞的发现和利用过程将作为教学案例,帮助安全人员理解常见Web应用漏洞的检测和利用方法。

0x01 越权漏洞

漏洞发现

  1. 首先在申报平台添加一次申报记录
  2. 点击编辑功能并抓包(使用Burp Suite等工具)
  3. 观察请求参数,发现使用id参数控制返回的数据

漏洞验证

  • 越权读取:修改id参数为其他用户的记录ID,可以返回其他用户的敏感数据
  • 越权修改:构造修改请求,更改id为其他用户记录,可成功修改
  • 越权删除:同样方法可删除其他用户记录

漏洞原理

服务端未对请求进行身份验证和权限检查,仅依赖客户端提供的id参数返回数据,导致水平越权漏洞。

0x02 任意文件上传漏洞

漏洞发现

  1. 在提交申报功能中尝试添加文件附件
  2. 抓取文件上传请求

漏洞特征

  • 上传后响应中未直接返回文件路径,但返回了文件id
  • 需要结合前述越权接口获取上传文件信息

漏洞利用

  1. 上传Webshell文件(如.jsp、.php等)
  2. 通过越权接口获取文件存储信息
  3. 访问上传的恶意文件,确认解析执行

0x03 任意文件下载漏洞

漏洞发现

  1. viewPage接口返回数据中发现调用了downloadFile的JS函数
  2. 查看前端源码,发现文件下载功能

漏洞验证

请求参数:

  • fileName:文件名
  • fileType:文件后缀

测试步骤:

  1. 随意构造参数请求下载接口
  2. 发现接口不仅无限制,还返回当前目录列表
  3. 构造目录穿越payload(如../../etc/passwd

风险

可下载服务器任意敏感文件,包括配置文件、密码文件等。

0x04 任意权限用户添加

漏洞发现

  1. 观察接口命名规律(如addPagestudentward等)
  2. 通过模糊测试发现/user/addPage接口

接口分析

/user/addPage返回的HTML包含:

  • 表单字段定义
  • 相关数据加载接口(如/role/tree加载角色信息)
  • 提交地址/user/add

用户添加流程

  1. 获取必要参数:

    • loginName:学工号/登录名
    • name:姓名
    • password:密码
    • sex:性别(通过/dict/loadcombobox?code=sex获取)
    • userType:用户类型(通过/dict/loadcombobox?code=userType获取)
    • organizationId:部门ID(通过/organization/tree获取)
    • roleIds:角色ID(通过/role/tree获取)
    • status:用户状态
  2. 构造添加管理员用户的请求:

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

防御建议

  1. 越权防护

    • 实施严格的权限验证
    • 使用会话关联用户数据,不依赖客户端传参
  2. 文件上传防护

    • 限制上传文件类型
    • 随机化存储文件名
    • 将上传文件存储在非Web目录
  3. 文件下载防护

    • 验证文件路径
    • 禁止目录遍历
    • 实施白名单机制
  4. 用户管理防护

    • 关键操作需要高权限验证
    • 实施操作日志审计
    • 对用户添加等敏感操作进行二次验证
  5. 其他建议

    • 部署WAF防护
    • 定期安全审计
    • 实施最小权限原则

总结

本案例展示了由于缺乏基本安全防护导致的多个高危漏洞。开发人员应重视安全编码实践,安全团队应定期进行渗透测试,确保系统安全。

校内站点渗透测试教学文档 前言 本文档基于一次对校内获奖申报平台的渗透测试实例,详细记录了测试过程中发现的多个高危漏洞,包括越权访问、任意文件上传、任意文件下载和任意用户添加等。这些漏洞的发现和利用过程将作为教学案例,帮助安全人员理解常见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 :用户状态 构造添加管理员用户的请求: 防御建议 越权防护 : 实施严格的权限验证 使用会话关联用户数据,不依赖客户端传参 文件上传防护 : 限制上传文件类型 随机化存储文件名 将上传文件存储在非Web目录 文件下载防护 : 验证文件路径 禁止目录遍历 实施白名单机制 用户管理防护 : 关键操作需要高权限验证 实施操作日志审计 对用户添加等敏感操作进行二次验证 其他建议 : 部署WAF防护 定期安全审计 实施最小权限原则 总结 本案例展示了由于缺乏基本安全防护导致的多个高危漏洞。开发人员应重视安全编码实践,安全团队应定期进行渗透测试,确保系统安全。