记一次众测某Django网站的测试
字数 1452 2025-09-01 11:26:02
Django网站渗透测试实战教学文档
1. 目标识别与初步分析
1.1 目标系统识别
- 目标系统是一个基于Django框架开发的毕业报告系统
- 发现系统存在Django管理界面xadmin
1.2 初始发现
- 系统"立即开启"功能向内部网络发送请求
- 初步判断可能存在SSRF(服务器端请求伪造)漏洞
2. SSRF漏洞验证与利用
2.1 漏洞验证
- 使用Burp Suite自带的DNSlog功能验证SSRF漏洞
- 确认漏洞存在且可利用
2.2 协议限制
- 仅支持HTTP和HTTPS协议
- 推测系统使用Python的requests库发起请求
- 支持POST和GET传参
2.3 内网服务探测
- 使用Burp Suite爆破同网段开启80端口的主机
- 发现的服务包括:
- phpMyAdmin
- Portainer(Docker管理界面)
- 远程桌面服务
- Zabbix监控系统
- 未在这些服务中发现可利用漏洞
3. 弱口令漏洞
3.1 发现Django管理后台
- 通过目录扫描发现xadmin管理界面
- 尝试默认凭证:admin/123456
3.2 漏洞利用限制
- 成功登录但后台功能有限
- 评估危害性较低
4. 逻辑漏洞分析与利用
4.1 加密参数分析
- 系统使用加密参数开启毕业报告
- 推测加密内容可能包含学号和密码
4.2 前端调试
- 使用浏览器开发者工具
- 在网络面板中监控登录请求
- 在启动项相关请求上设置断点
- 逐步调试JavaScript代码
4.3 加密算法识别
- 确认系统使用AES加密
- 模式为ECB(电子密码本模式)
- 通过调试找到加密密钥
4.4 加密解密测试
- 构造测试数据:
{"XH":"202110120235"} - 使用发现的密钥进行加密
- 发送加密后的请求
- 成功获取学生个人信息
4.5 漏洞验证
- 发现系统仅需学号即可返回完整个人信息
- 不需要证件号后6位验证
- 泄露信息包括:
- 身份证号码
- 学号
- 姓名
- 班级信息
5. 批量信息泄露攻击
5.1 工具准备
- 使用Burp Suite的BurpCrypto插件
- 配置加密处理器(processor)
5.2 攻击步骤
- 编写Python脚本生成21届学生学号列表
- 配置Burp Intruder:
- 设置攻击类型
- 加载学号字典
- 配置加密处理器自动加密payload
- 发起批量请求
5.3 攻击结果
- 成功获取所有21届毕业生的身份证等敏感信息
- 评估为高危漏洞
6. 漏洞总结与修复建议
6.1 漏洞总结
-
SSRF漏洞:
- 允许攻击者探测内网服务
- 虽然未发现可利用服务,但仍存在风险
-
弱口令:
- 管理后台使用简单密码
- 虽然危害有限,但应避免
-
逻辑漏洞:
- 加密实现不安全(ECB模式)
- 身份验证不完整(仅需学号)
- 导致大规模信息泄露
6.2 修复建议
-
SSRF防护:
- 限制请求的目标地址
- 使用白名单机制
-
加密改进:
- 改用更安全的加密模式(如CBC或GCM)
- 定期更换加密密钥
- 服务端验证解密后的数据完整性
-
身份验证:
- 强制多因素验证
- 确保关键操作需要完整凭证
-
其他:
- 禁用或加强管理后台访问
- 实施请求频率限制
- 加强日志监控
7. 技术要点备忘
7.1 AES ECB模式特点
- 相同的明文块加密后得到相同的密文块
- 不适合加密结构化数据
- 容易受到重放攻击
7.2 BurpCrypto使用要点
-
添加加密处理器:
- 配置加密算法和密钥
- 设置加密前后数据处理
-
Intruder配置:
- 选择加密位置
- 设置payload处理链
7.3 信息泄露攻击预防
- 实施最小权限原则
- 敏感数据脱敏处理
- 加强API访问控制