渗透(二)
字数 1375 2025-08-05 12:50:26

渗透测试实战教学:从SQL注入到验证码漏洞利用

1. 案例背景分析

本次渗透测试案例展示了从发现漏洞到实际利用的全过程,主要涉及两种漏洞类型:

  • SQL注入漏洞(在登录处)
  • 验证码逻辑缺陷(在移动APP密码找回功能)

攻击者通过学校系统的渗透测试开始,逐步扩展到厂商其他系统,最终发现移动APP的严重漏洞。

2. SQL注入漏洞分析

2.1 漏洞发现

  • 注入点位置:系统登录处的newpass参数
  • 检测工具:使用sqlmap进行自动化测试
  • 特殊发现:系统支持堆叠注入(stacked queries),但常规命令执行受阻

2.2 深入利用尝试

  1. 尝试使用sp_oacreate函数进行命令执行未果
  2. 可能原因:
    • 数据库权限限制
    • 安全防护机制拦截
    • 函数被禁用

2.3 信息收集

  • 通过页面底部版权信息识别厂商
  • 使用FOFA搜索引擎进行资产发现:
    • 语法示例:app="厂商名称"
    • 发现同厂商其他系统存在类似注入漏洞

3. 移动APP验证码漏洞分析

3.1 测试环境搭建

  • 使用安卓模拟器运行目标APP
  • 配置Burp Suite进行流量拦截和修改

3.2 漏洞发现过程

  1. 测试密码找回功能
  2. 关键参数发现:codeNum控制验证码长度
    • 默认值为6(生成6位验证码)
  3. 修改测试:
    • codeNum改为1 → 验证码变为1位
    • 爆破可能性大幅提高(从10^6降到10^1)

3.3 漏洞利用

  1. 拦截密码找回请求
  2. 修改codeNum=1
  3. 系统返回1位验证码
  4. 轻松爆破完成任意用户密码重置

4. 渗透测试技巧总结

4.1 信息收集技巧

  • 版权信息利用:页面底部信息往往透露关键厂商信息
  • FOFA资产发现:通过已知特征发现关联系统
  • 历史经验复用:相似系统可能存在相同漏洞

4.2 漏洞挖掘技巧

  1. 参数篡改测试

    • 特别关注控制业务逻辑的参数(如codeNum
    • 尝试修改看似"只读"的参数
  2. 验证码漏洞挖掘方法论

    • 测试验证码长度是否可控
    • 检查验证码复杂度是否可降级
    • 验证码是否可预测或重放
  3. SQL注入深入利用

    • 即使无法直接执行命令,也应尝试:
      • 数据窃取
      • 权限提升
      • 跳板攻击内网

4.3 移动APP测试要点

  • 必须配置中间人代理(Burp/Fiddler)
  • 关注非UI参数(隐藏在请求中的业务参数)
  • 模拟器环境要配置证书以解密HTTPS流量

5. 防御建议

5.1 针对SQL注入

  • 使用参数化查询
  • 最小权限原则配置数据库账户
  • 禁用危险函数(如sp_oacreate

5.2 针对验证码漏洞

  • 服务端严格控制验证码生成逻辑
  • 禁止客户端控制验证码属性(长度、复杂度)
  • 增加验证码使用的一次性token
  • 实施合理的尝试次数限制

5.3 通用防御措施

  • 敏感操作多重验证
  • 定期安全审计
  • 建立漏洞响应机制

6. 扩展思考

  1. 漏洞联动利用:

    • 结合SQL注入获取用户手机号
    • 利用APP漏洞重置这些用户的密码
    • 形成完整攻击链
  2. 企业级安全影响:

    • 同厂商多产品存在相似漏洞
    • 反映开发过程中缺乏安全SDLC
    • 需要建立统一的代码安全标准
  3. 自动化漏洞挖掘:

    • 可编写脚本批量检测codeNum类参数
    • 自动化FOFA资产收集与漏洞验证

本案例展示了从简单漏洞发现到深入利用的过程,强调了渗透测试中细致观察和勇于尝试的重要性,同时也提醒开发者在设计验证机制时需要从攻击者角度思考问题。

渗透测试实战教学:从SQL注入到验证码漏洞利用 1. 案例背景分析 本次渗透测试案例展示了从发现漏洞到实际利用的全过程,主要涉及两种漏洞类型: SQL注入漏洞(在登录处) 验证码逻辑缺陷(在移动APP密码找回功能) 攻击者通过学校系统的渗透测试开始,逐步扩展到厂商其他系统,最终发现移动APP的严重漏洞。 2. SQL注入漏洞分析 2.1 漏洞发现 注入点位置:系统登录处的 newpass 参数 检测工具:使用sqlmap进行自动化测试 特殊发现:系统支持堆叠注入(stacked queries),但常规命令执行受阻 2.2 深入利用尝试 尝试使用 sp_oacreate 函数进行命令执行未果 可能原因: 数据库权限限制 安全防护机制拦截 函数被禁用 2.3 信息收集 通过页面底部版权信息识别厂商 使用FOFA搜索引擎进行资产发现: 语法示例: app="厂商名称" 发现同厂商其他系统存在类似注入漏洞 3. 移动APP验证码漏洞分析 3.1 测试环境搭建 使用安卓模拟器运行目标APP 配置Burp Suite进行流量拦截和修改 3.2 漏洞发现过程 测试密码找回功能 关键参数发现: codeNum 控制验证码长度 默认值为6(生成6位验证码) 修改测试: 将 codeNum 改为1 → 验证码变为1位 爆破可能性大幅提高(从10^6降到10^1) 3.3 漏洞利用 拦截密码找回请求 修改 codeNum=1 系统返回1位验证码 轻松爆破完成任意用户密码重置 4. 渗透测试技巧总结 4.1 信息收集技巧 版权信息利用 :页面底部信息往往透露关键厂商信息 FOFA资产发现 :通过已知特征发现关联系统 历史经验复用 :相似系统可能存在相同漏洞 4.2 漏洞挖掘技巧 参数篡改测试 : 特别关注控制业务逻辑的参数(如 codeNum ) 尝试修改看似"只读"的参数 验证码漏洞挖掘方法论 : 测试验证码长度是否可控 检查验证码复杂度是否可降级 验证码是否可预测或重放 SQL注入深入利用 : 即使无法直接执行命令,也应尝试: 数据窃取 权限提升 跳板攻击内网 4.3 移动APP测试要点 必须配置中间人代理(Burp/Fiddler) 关注非UI参数(隐藏在请求中的业务参数) 模拟器环境要配置证书以解密HTTPS流量 5. 防御建议 5.1 针对SQL注入 使用参数化查询 最小权限原则配置数据库账户 禁用危险函数(如 sp_oacreate ) 5.2 针对验证码漏洞 服务端严格控制验证码生成逻辑 禁止客户端控制验证码属性(长度、复杂度) 增加验证码使用的一次性token 实施合理的尝试次数限制 5.3 通用防御措施 敏感操作多重验证 定期安全审计 建立漏洞响应机制 6. 扩展思考 漏洞联动利用: 结合SQL注入获取用户手机号 利用APP漏洞重置这些用户的密码 形成完整攻击链 企业级安全影响: 同厂商多产品存在相似漏洞 反映开发过程中缺乏安全SDLC 需要建立统一的代码安全标准 自动化漏洞挖掘: 可编写脚本批量检测 codeNum 类参数 自动化FOFA资产收集与漏洞验证 本案例展示了从简单漏洞发现到深入利用的过程,强调了渗透测试中细致观察和勇于尝试的重要性,同时也提醒开发者在设计验证机制时需要从攻击者角度思考问题。