记一次众测某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 内网服务探测

  1. 使用Burp Suite爆破同网段开启80端口的主机
  2. 发现的服务包括:
    • phpMyAdmin
    • Portainer(Docker管理界面)
    • 远程桌面服务
    • Zabbix监控系统
  3. 未在这些服务中发现可利用漏洞

3. 弱口令漏洞

3.1 发现Django管理后台

  • 通过目录扫描发现xadmin管理界面
  • 尝试默认凭证:admin/123456

3.2 漏洞利用限制

  • 成功登录但后台功能有限
  • 评估危害性较低

4. 逻辑漏洞分析与利用

4.1 加密参数分析

  • 系统使用加密参数开启毕业报告
  • 推测加密内容可能包含学号和密码

4.2 前端调试

  1. 使用浏览器开发者工具
  2. 在网络面板中监控登录请求
  3. 在启动项相关请求上设置断点
  4. 逐步调试JavaScript代码

4.3 加密算法识别

  • 确认系统使用AES加密
  • 模式为ECB(电子密码本模式)
  • 通过调试找到加密密钥

4.4 加密解密测试

  1. 构造测试数据:{"XH":"202110120235"}
  2. 使用发现的密钥进行加密
  3. 发送加密后的请求
  4. 成功获取学生个人信息

4.5 漏洞验证

  • 发现系统仅需学号即可返回完整个人信息
  • 不需要证件号后6位验证
  • 泄露信息包括:
    • 身份证号码
    • 学号
    • 姓名
    • 班级信息

5. 批量信息泄露攻击

5.1 工具准备

  • 使用Burp Suite的BurpCrypto插件
  • 配置加密处理器(processor)

5.2 攻击步骤

  1. 编写Python脚本生成21届学生学号列表
  2. 配置Burp Intruder:
    • 设置攻击类型
    • 加载学号字典
    • 配置加密处理器自动加密payload
  3. 发起批量请求

5.3 攻击结果

  • 成功获取所有21届毕业生的身份证等敏感信息
  • 评估为高危漏洞

6. 漏洞总结与修复建议

6.1 漏洞总结

  1. SSRF漏洞:

    • 允许攻击者探测内网服务
    • 虽然未发现可利用服务,但仍存在风险
  2. 弱口令:

    • 管理后台使用简单密码
    • 虽然危害有限,但应避免
  3. 逻辑漏洞:

    • 加密实现不安全(ECB模式)
    • 身份验证不完整(仅需学号)
    • 导致大规模信息泄露

6.2 修复建议

  1. SSRF防护:

    • 限制请求的目标地址
    • 使用白名单机制
  2. 加密改进:

    • 改用更安全的加密模式(如CBC或GCM)
    • 定期更换加密密钥
    • 服务端验证解密后的数据完整性
  3. 身份验证:

    • 强制多因素验证
    • 确保关键操作需要完整凭证
  4. 其他:

    • 禁用或加强管理后台访问
    • 实施请求频率限制
    • 加强日志监控

7. 技术要点备忘

7.1 AES ECB模式特点

  • 相同的明文块加密后得到相同的密文块
  • 不适合加密结构化数据
  • 容易受到重放攻击

7.2 BurpCrypto使用要点

  1. 添加加密处理器:

    • 配置加密算法和密钥
    • 设置加密前后数据处理
  2. Intruder配置:

    • 选择加密位置
    • 设置payload处理链

7.3 信息泄露攻击预防

  • 实施最小权限原则
  • 敏感数据脱敏处理
  • 加强API访问控制
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访问控制