记一次edu渗透
字数 1218 2025-08-29 08:31:35
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策略
- 对输出进行编码
总结与防御建议
系统性问题
- 过度依赖框架默认配置
- 日志管理不当
- 输入输出缺乏过滤
- 权限控制不严格
整体修复方案
- 升级框架版本
- 实施安全开发规范
- 进行代码审计
- 加强日志安全管理
- 完善权限验证机制
通过本案例可以看出,即使是简单的信息泄露也可能导致严重的连锁安全问题。开发过程中应遵循最小权限原则和防御性编程思想,对每个功能点进行安全评估。