一次简单渗透测试
字数 1404 2025-08-11 22:57:12

一次简单渗透测试教学文档

1. 测试背景

  • 测试对象:甲方新开发的系统
  • 测试类型:授权渗透测试
  • 测试地点:湖北省(根据IP属地判断)

2. 漏洞发现与利用过程

2.1 用户名枚举漏洞

发现过程

  • 尝试常规弱口令登录失败
  • 发现系统对不存在的用户会返回"用户不存在"的明确提示

利用方法

  1. 准备用户名字典进行枚举测试
  2. 通过系统返回的不同信息判断用户名是否存在
    • 有效用户:返回"密码错误"
    • 无效用户:返回"用户不存在"

实际结果

  • 初始用户名字典未能枚举出有效用户
  • 后续通过其他途径获取了有效用户名(后门接口泄露)

2.2 验证码无效漏洞

发现过程

  • 分析系统验证流程:账号→密码→验证码
  • 验证码校验在最后一步

漏洞原理

  • 验证码校验顺序错误导致可绕过
  • 攻击者可以在不知道正确验证码的情况下尝试密码

利用方法

  1. 固定一个任意验证码值
  2. 针对已知用户名进行密码爆破

2.3 未授权访问漏洞

发现过程

  • 进行目录扫描发现Swagger API UI接口文档
  • 访问接口文档发现敏感接口

具体利用

  1. 发现"获取当前用户信息"的接口
  2. 直接访问该接口获取username字段
  3. 确认该用户名为有效账户(登录时返回"密码错误"而非"用户不存在")

2.4 密码爆破

前提条件

  • 已获取有效用户名
  • 验证码可绕过

加密分析

  1. 检查前端代码发现RSA加密
  2. 定位到公钥(public key)
  3. 使用在线加密网站制作加密后的密码字典

爆破过程

  1. 准备明文密码字典
  2. 使用获取的公钥对字典进行RSA加密
  3. 使用加密后的字典进行爆破
  4. 成功获取正确密码

3. 后续利用尝试

  • 成功登录后台后:
    • 寻找文件上传功能未果
    • 检查Swagger文档未发现上传接口
    • 未能进一步深入利用

4. 漏洞修复建议

4.1 用户名枚举修复

  • 统一登录失败提示信息(如"用户名或密码错误")
  • 增加登录失败延迟机制
  • 实施账户锁定策略(多次失败后临时锁定)

4.2 验证码漏洞修复

  • 将验证码校验提前到第一步
  • 增加验证码一次性使用机制
  • 加强验证码复杂度(如行为验证码)

4.3 未授权访问修复

  • 生产环境禁用或限制访问Swagger等开发文档
  • 对API接口实施严格的权限控制
  • 敏感接口需要身份认证

4.4 密码爆破防护

  • 实施强密码策略
  • 增加登录失败次数限制
  • 使用多因素认证
  • 考虑使用Web应用防火墙(WAF)防护爆破行为

4.5 其他建议

  • 定期进行安全审计
  • 实施安全的开发生命周期(SDL)
  • 对敏感操作增加二次验证

5. 渗透测试方法论总结

  1. 信息收集阶段

    • 尝试常规弱口令
    • 分析系统响应差异
    • 目录扫描发现敏感文件/接口
  2. 漏洞挖掘阶段

    • 识别验证流程缺陷
    • 寻找未授权访问点
    • 分析前端加密机制
  3. 漏洞利用阶段

    • 用户名枚举
    • 验证码绕过
    • 密码爆破(需处理加密机制)
  4. 权限提升与横向移动

    • 本案例中未能实现进一步利用
    • 通常需要寻找上传点或其它漏洞链
  5. 报告与修复

    • 记录所有发现的安全问题
    • 提供详细的修复建议
    • 协助验证修复效果

6. 技术要点总结

  • 响应差异分析:不同响应可能泄露系统状态信息
  • 验证流程审计:校验顺序错误会导致安全机制失效
  • 接口文档暴露:开发文档可能包含敏感信息
  • 前端加密分析:即使有加密也可能被绕过或破解
  • 漏洞链利用:通常需要组合多个漏洞实现深度渗透

本案例展示了如何通过系统设计缺陷和配置问题逐步深入系统,强调了安全开发和安全运维的重要性。

一次简单渗透测试教学文档 1. 测试背景 测试对象:甲方新开发的系统 测试类型:授权渗透测试 测试地点:湖北省(根据IP属地判断) 2. 漏洞发现与利用过程 2.1 用户名枚举漏洞 发现过程 : 尝试常规弱口令登录失败 发现系统对不存在的用户会返回"用户不存在"的明确提示 利用方法 : 准备用户名字典进行枚举测试 通过系统返回的不同信息判断用户名是否存在 有效用户:返回"密码错误" 无效用户:返回"用户不存在" 实际结果 : 初始用户名字典未能枚举出有效用户 后续通过其他途径获取了有效用户名(后门接口泄露) 2.2 验证码无效漏洞 发现过程 : 分析系统验证流程:账号→密码→验证码 验证码校验在最后一步 漏洞原理 : 验证码校验顺序错误导致可绕过 攻击者可以在不知道正确验证码的情况下尝试密码 利用方法 : 固定一个任意验证码值 针对已知用户名进行密码爆破 2.3 未授权访问漏洞 发现过程 : 进行目录扫描发现Swagger API UI接口文档 访问接口文档发现敏感接口 具体利用 : 发现"获取当前用户信息"的接口 直接访问该接口获取username字段 确认该用户名为有效账户(登录时返回"密码错误"而非"用户不存在") 2.4 密码爆破 前提条件 : 已获取有效用户名 验证码可绕过 加密分析 : 检查前端代码发现RSA加密 定位到公钥(public key) 使用在线加密网站制作加密后的密码字典 爆破过程 : 准备明文密码字典 使用获取的公钥对字典进行RSA加密 使用加密后的字典进行爆破 成功获取正确密码 3. 后续利用尝试 成功登录后台后: 寻找文件上传功能未果 检查Swagger文档未发现上传接口 未能进一步深入利用 4. 漏洞修复建议 4.1 用户名枚举修复 统一登录失败提示信息(如"用户名或密码错误") 增加登录失败延迟机制 实施账户锁定策略(多次失败后临时锁定) 4.2 验证码漏洞修复 将验证码校验提前到第一步 增加验证码一次性使用机制 加强验证码复杂度(如行为验证码) 4.3 未授权访问修复 生产环境禁用或限制访问Swagger等开发文档 对API接口实施严格的权限控制 敏感接口需要身份认证 4.4 密码爆破防护 实施强密码策略 增加登录失败次数限制 使用多因素认证 考虑使用Web应用防火墙(WAF)防护爆破行为 4.5 其他建议 定期进行安全审计 实施安全的开发生命周期(SDL) 对敏感操作增加二次验证 5. 渗透测试方法论总结 信息收集阶段 : 尝试常规弱口令 分析系统响应差异 目录扫描发现敏感文件/接口 漏洞挖掘阶段 : 识别验证流程缺陷 寻找未授权访问点 分析前端加密机制 漏洞利用阶段 : 用户名枚举 验证码绕过 密码爆破(需处理加密机制) 权限提升与横向移动 : 本案例中未能实现进一步利用 通常需要寻找上传点或其它漏洞链 报告与修复 : 记录所有发现的安全问题 提供详细的修复建议 协助验证修复效果 6. 技术要点总结 响应差异分析 :不同响应可能泄露系统状态信息 验证流程审计 :校验顺序错误会导致安全机制失效 接口文档暴露 :开发文档可能包含敏感信息 前端加密分析 :即使有加密也可能被绕过或破解 漏洞链利用 :通常需要组合多个漏洞实现深度渗透 本案例展示了如何通过系统设计缺陷和配置问题逐步深入系统,强调了安全开发和安全运维的重要性。