记一次edu渗透
字数 1218 2025-08-29 08:31:35

ThinkPHP3框架渗透实战教学文档

0x00 前言

本教学文档基于一次针对教育系统的渗透测试实战案例,涉及ThinkPHP3框架的多个安全漏洞。所有漏洞均已提交至EDUSRC并修复。

0x01 信息泄露漏洞

漏洞发现

  • 在URL后输入随机字符触发报错,暴露框架信息为ThinkPHP3
  • 默认日志路径可访问:Application/Runtime/Logs/控制器/年份_月份_日期.log

利用方法

  1. 直接访问日志路径
  2. 注意:日志每几分钟会被自动删除,需及时获取

防御措施

  • 关闭生产环境的错误显示
  • 修改默认日志存储路径
  • 设置日志目录访问权限

0x02 日志泄露导致的任意用户注册

漏洞利用流程

  1. 系统要求使用该校邮箱(@xxxxxxxxx.edu.cn)注册
  2. 通过GitHub搜索"该校域名+邮箱"关键字,获取可用邮箱凭证
  3. 登录邮箱获取激活邮件
  4. 从日志中获取accessToken
  5. 构造激活链接:http://xxxxxxxxx.edu.cn/index.php/activation?accessToken=f6d785fb9470d5fd604fb8897778f740

关键点

  • 日志中存储了敏感信息(accessToken)
  • 激活机制依赖单一token验证

修复建议

  • 不在日志中记录敏感信息
  • 实现多因素激活验证
  • 设置token有效期

0x03 SQL注入漏洞

漏洞位置

  • 手机号验证功能处

漏洞成因

  1. 使用阿里云短信服务
  2. 发送次数过多触发天级流控
  3. 后端日志记录XFF头未过滤导致SQL注入

相关参考

防御方案

  • 严格过滤所有输入参数
  • 避免在日志中记录原始输入
  • 使用参数化查询

0x04 日志泄露导致任意手机号绑定

利用步骤

  1. 随便填写手机号获取验证码
  2. 通过日志查看正确的验证码
  3. 完成绑定

问题根源

  • 验证码明文记录在日志中
  • 缺乏验证码防爆破机制

0x05 平行越权漏洞

漏洞描述

  • 作文编辑功能存在IDOR
  • 修改URL中的id参数可操作他人作文

复现步骤

  1. 新增作文
  2. 编辑时修改id参数
  3. 可查看/编辑他人作文

修复方法

  • 增加所有权验证
  • 使用不可预测的ID
  • 实现RBAC权限控制

0x06 二次SQL注入

漏洞位置

  • 删除作文功能
  • 数据包中的id参数未过滤

利用方式

  • 构造恶意id参数进行注入

0x07 存储型XSS

漏洞点

  • 个人资料处的UEditor编辑器
  • 可通过XML插入恶意脚本

攻击影响

  • 持久化攻击
  • 可能窃取会话信息

防护措施

  • 严格过滤富文本输入
  • 实现CSP策略
  • 对输出进行编码

总结与防御建议

系统性问题

  1. 过度依赖框架默认配置
  2. 日志管理不当
  3. 输入输出缺乏过滤
  4. 权限控制不严格

整体修复方案

  1. 升级框架版本
  2. 实施安全开发规范
  3. 进行代码审计
  4. 加强日志安全管理
  5. 完善权限验证机制

通过本案例可以看出,即使是简单的信息泄露也可能导致严重的连锁安全问题。开发过程中应遵循最小权限原则和防御性编程思想,对每个功能点进行安全评估。

ThinkPHP3框架渗透实战教学文档 0x00 前言 本教学文档基于一次针对教育系统的渗透测试实战案例,涉及ThinkPHP3框架的多个安全漏洞。所有漏洞均已提交至EDUSRC并修复。 0x01 信息泄露漏洞 漏洞发现 在URL后输入随机字符触发报错,暴露框架信息为ThinkPHP3 默认日志路径可访问: Application/Runtime/Logs/控制器/年份_月份_日期.log 利用方法 直接访问日志路径 注意:日志每几分钟会被自动删除,需及时获取 防御措施 关闭生产环境的错误显示 修改默认日志存储路径 设置日志目录访问权限 0x02 日志泄露导致的任意用户注册 漏洞利用流程 系统要求使用该校邮箱(@xxxxxxxxx.edu.cn)注册 通过GitHub搜索"该校域名+邮箱"关键字,获取可用邮箱凭证 登录邮箱获取激活邮件 从日志中获取accessToken 构造激活链接: http://xxxxxxxxx.edu.cn/index.php/activation?accessToken=f6d785fb9470d5fd604fb8897778f740 关键点 日志中存储了敏感信息(accessToken) 激活机制依赖单一token验证 修复建议 不在日志中记录敏感信息 实现多因素激活验证 设置token有效期 0x03 SQL注入漏洞 漏洞位置 手机号验证功能处 漏洞成因 使用阿里云短信服务 发送次数过多触发天级流控 后端日志记录XFF头未过滤导致SQL注入 相关参考 阿里云天级流控说明 防御方案 严格过滤所有输入参数 避免在日志中记录原始输入 使用参数化查询 0x04 日志泄露导致任意手机号绑定 利用步骤 随便填写手机号获取验证码 通过日志查看正确的验证码 完成绑定 问题根源 验证码明文记录在日志中 缺乏验证码防爆破机制 0x05 平行越权漏洞 漏洞描述 作文编辑功能存在IDOR 修改URL中的id参数可操作他人作文 复现步骤 新增作文 编辑时修改id参数 可查看/编辑他人作文 修复方法 增加所有权验证 使用不可预测的ID 实现RBAC权限控制 0x06 二次SQL注入 漏洞位置 删除作文功能 数据包中的id参数未过滤 利用方式 构造恶意id参数进行注入 0x07 存储型XSS 漏洞点 个人资料处的UEditor编辑器 可通过XML插入恶意脚本 攻击影响 持久化攻击 可能窃取会话信息 防护措施 严格过滤富文本输入 实现CSP策略 对输出进行编码 总结与防御建议 系统性问题 过度依赖框架默认配置 日志管理不当 输入输出缺乏过滤 权限控制不严格 整体修复方案 升级框架版本 实施安全开发规范 进行代码审计 加强日志安全管理 完善权限验证机制 通过本案例可以看出,即使是简单的信息泄露也可能导致严重的连锁安全问题。开发过程中应遵循最小权限原则和防御性编程思想,对每个功能点进行安全评估。