记一次对学校的渗透测试
字数 1423 2025-08-10 08:28:42
学校渗透测试实战教学文档
1. 渗透测试概述
本次渗透测试针对某学校系统,展示了从信息收集到漏洞利用的完整流程。测试者通过多种技术手段成功发现并利用了多个安全漏洞。
2. 信息收集阶段
2.1 目标识别
- 主站: http://www.xxxx.edu.cn
- 策略: 主站通常防护较强,优先寻找子系统和子站点
2.2 子站发现
- 方法: 使用各种子域名扫描技术
- 发现关键系统: 图书馆系统
2.3 学号枚举技术
- 默认密码测试: 尝试"123456"等常见默认密码
- 学号构造规则:
- 格式: 入校年份(如2019) + 专业代码 + 班级 + 序号
- 示例: 2019** (302个成功跳转)
- 批量测试: 基于构造规则进行批量尝试
3. 漏洞挖掘与利用
3.1 SQL注入漏洞
-
发现方法:
- 使用Google语法:
site:xxx.edu.cn inurl:?= - 识别可能存在注入点的URL参数
- 使用Google语法:
-
加密参数处理:
- 发现参数可能使用Base64编码(如MTE=)
- 解决方案: 使用base64encode.py脚本处理
-
自动化工具使用:
sqlmap -u "目标URL" --其他参数 -
安全狗绕过技术:
- 使用特定tamper脚本:
- equaltolike
- space2mysqldash
- 完整命令示例:
sqlmap.py -r c:/2.txt --dbms mssql --skip-waf --random-agent --technique SBT -v 3 -p newpass --tamper equaltolike,space2mysqldash
- 使用特定tamper脚本:
3.2 任意文件上传
- 发现点: 通过SQL注入获取的管理后台
- 结果: 成功获取webshell
3.3 逻辑漏洞
- 发现点: 继续教育平台
- 绕过方法:
- 拦截响应包
- 修改关键参数值为1(如将响应中的0改为1)
3.4 其他发现
- 数据库执行接口: 通过目录扫描发现
- 阅卷系统: 通过IP扫描发现
- 测试方法:
- 查看JS源码寻找线索
- 尝试test/test等默认凭证
- 修改返回包测试
- 测试方法:
4. 高级技巧
4.1 内存消耗攻击
- 场景: 存在WAF防护时
- 方法: 发送大量"脏数据"消耗WAF内存资源
- 目的: 使WAF性能下降或崩溃,从而绕过防护
4.2 权限提升
- 发现DBA权限的SQL注入点
- 但未找到后台管理入口
5. 经验总结
-
信息收集至关重要:
- 资产发现(子站、子系统)
- 学号规则推断
- 默认凭证测试
-
测试全面性:
- 不放过任何可疑点
- "宁可浪费一千也不可漏掉一个"
-
技术要点:
- 熟悉常见WAF绕过技术
- 掌握多种漏洞利用方式(SQL注入、文件上传、逻辑漏洞等)
- 灵活使用自动化工具(sqlmap)与手动测试结合
-
渗透测试思维:
- 从攻击者角度思考
- 利用系统设计缺陷(如可预测的学号)
- 关注不明显的攻击面(如JS源码分析)
6. 防御建议
- 对学号等标识符使用不可预测的随机生成方式
- 禁用或严格限制默认密码
- 对所有输入参数进行严格过滤和编码
- 实施完善的WAF规则,定期更新防护策略
- 对敏感操作(如密码修改)实施多重验证
- 前端验证必须配合后端验证
- 定期进行安全审计和渗透测试
7. 工具与资源
- sqlmap: SQL注入自动化工具
- base64encode.py: Base64编码处理脚本
- Burp Suite: 用于拦截和修改请求
- 子域名扫描工具
- 目录扫描工具
- WAF绕过tamper脚本:
- equaltolike
- space2mysqldash
8. 扩展学习
- 深入研究各种WAF绕过技术
- 学习更多Google hacking技巧
- 掌握更多逻辑漏洞挖掘方法
- 了解不同数据库的注入技术差异
- 学习权限维持和横向移动技术
通过本案例的系统学习,可以掌握针对教育系统的渗透测试方法论和实用技巧。