CNVD证书挖掘(两小时极速版)
字数 1257 2025-08-29 08:30:30

CNVD证书挖掘实战教学文档

1. 前言

本文档基于奇安信攻防社区分享的CNVD证书挖掘实战经验整理而成,重点讲解在实际渗透测试过程中发现的SQL注入和越权漏洞的挖掘技巧与利用方法。

2. 注入漏洞挖掘

2.1 发现注入点

  1. 从JS文件中发现可疑API端点(如log API)
  2. 原始请求会因未登录而报错(NULL值错误)
  3. 通过修改参数触发SQL注入

2.2 INSERT注入分析

  1. 报错信息"无法从NULL插入..."表明是INSERT语句
  2. 语句结构推测为:INSERT INTO XXX VALUES(A,B,C,*,D)
  3. 重要注意事项:
    • INSERT语句具有高风险性,直接使用sqlmap可能导致数据篡改
    • 由于列约束条件,注入可能被短路

2.3 注入测试方法

  1. 布尔注入:在INSERT语句中效果有限,只有执行成功/失败的区别
  2. 报错注入
    • 构造除零报错:1/0
    • 但某些环境下报错信息不会显示
  3. 时间盲注
    • 尝试各种延时函数但未成功
  4. 堆叠注入
    • 测试失败,出现意外错误(如缺少右括号、不允许字符等)

2.4 Oracle环境特性

  1. 列约束可能导致语句提前终止(短路效应)
  2. 报错信息可能不完整
  3. 需要特别注意Oracle特有的语法和函数

3. 越权漏洞挖掘

3.1 登录口测试

  1. 修改响应中的success字段为true
  2. 观察跳转行为:
    • 选择角色时出现null报错
    • 修改任意值可继续流程
    • 最终跳转到后台根地址

3.2 302跳转利用

  1. 直接访问后台地址返回302状态
  2. 分析发现:
    • 跳转是在原始HTML上添加的
    • 修改响应:
      • 将状态码改为200
      • 删除跳转相关的HTML部分
  3. 成功绕过进入后台

4. 后台注入漏洞

4.1 报错信息分析

  1. 获取到详细的Oracle错误代码
  2. 显示原始SQL语句,便于构造payload

4.2 过滤机制分析

  1. 常见问题:
    • 缺少引号
    • 缺少右括号
  2. WAF可能性测试:
    • 超长输入测试(未截断)
    • 关键字测试(如IF语句)
  3. 过滤特点:
    • 针对括号+特定关键字
    • 普通算式可正常执行

4.3 绕过技巧

  1. 双写绕过测试(右括号、END等)失败
  2. 替代方案:
    • 避免使用IF+括号结构
    • 使用除零报错替代时间盲注
    • 示例payload:1/(select case when 1=1 then 1 else 0 end from dual)

5. 实战技巧总结

  1. JS文件审计:是发现API端点的有效方法
  2. 错误分析:仔细解读报错信息可推断SQL语句结构
  3. 安全测试原则
    • 对INSERT操作保持高度谨慎
    • 优先使用信息泄露而非数据修改的技术
  4. 环境适配
    • 不同数据库(如Oracle)需要特定语法
    • 注意WAF/过滤机制的特性
  5. 漏洞组合
    • 越权+注入的组合利用可扩大攻击面

6. 防御建议

  1. 对所有用户输入进行严格过滤和参数化查询
  2. 避免在前端暴露敏感API端点
  3. 权限验证应放在服务端严格实现
  4. 对数据库错误信息进行适当处理,避免泄露细节
  5. 实施完善的WAF规则,但要注意避免仅依赖WAF

7. 附录:Oracle注入常用函数

UTL_HTTP.request - HTTP请求
DBMS_LOCK.SLEEP - 延时函数
CTXSYS.DRITHSX.SN - 报错注入
SYS.DBMS_EXPORT_EXTENSION - 执行系统命令
CNVD证书挖掘实战教学文档 1. 前言 本文档基于奇安信攻防社区分享的CNVD证书挖掘实战经验整理而成,重点讲解在实际渗透测试过程中发现的SQL注入和越权漏洞的挖掘技巧与利用方法。 2. 注入漏洞挖掘 2.1 发现注入点 从JS文件中发现可疑API端点(如log API) 原始请求会因未登录而报错(NULL值错误) 通过修改参数触发SQL注入 2.2 INSERT注入分析 报错信息"无法从NULL插入..."表明是INSERT语句 语句结构推测为: INSERT INTO XXX VALUES(A,B,C,*,D) 重要注意事项: INSERT语句具有高风险性,直接使用sqlmap可能导致数据篡改 由于列约束条件,注入可能被短路 2.3 注入测试方法 布尔注入 :在INSERT语句中效果有限,只有执行成功/失败的区别 报错注入 : 构造除零报错: 1/0 但某些环境下报错信息不会显示 时间盲注 : 尝试各种延时函数但未成功 堆叠注入 : 测试失败,出现意外错误(如缺少右括号、不允许字符等) 2.4 Oracle环境特性 列约束可能导致语句提前终止(短路效应) 报错信息可能不完整 需要特别注意Oracle特有的语法和函数 3. 越权漏洞挖掘 3.1 登录口测试 修改响应中的 success 字段为 true 观察跳转行为: 选择角色时出现null报错 修改任意值可继续流程 最终跳转到后台根地址 3.2 302跳转利用 直接访问后台地址返回302状态 分析发现: 跳转是在原始HTML上添加的 修改响应: 将状态码改为200 删除跳转相关的HTML部分 成功绕过进入后台 4. 后台注入漏洞 4.1 报错信息分析 获取到详细的Oracle错误代码 显示原始SQL语句,便于构造payload 4.2 过滤机制分析 常见问题: 缺少引号 缺少右括号 WAF可能性测试: 超长输入测试(未截断) 关键字测试(如IF语句) 过滤特点: 针对括号+特定关键字 普通算式可正常执行 4.3 绕过技巧 双写绕过测试(右括号、END等)失败 替代方案: 避免使用IF+括号结构 使用除零报错替代时间盲注 示例payload: 1/(select case when 1=1 then 1 else 0 end from dual) 5. 实战技巧总结 JS文件审计 :是发现API端点的有效方法 错误分析 :仔细解读报错信息可推断SQL语句结构 安全测试原则 : 对INSERT操作保持高度谨慎 优先使用信息泄露而非数据修改的技术 环境适配 : 不同数据库(如Oracle)需要特定语法 注意WAF/过滤机制的特性 漏洞组合 : 越权+注入的组合利用可扩大攻击面 6. 防御建议 对所有用户输入进行严格过滤和参数化查询 避免在前端暴露敏感API端点 权限验证应放在服务端严格实现 对数据库错误信息进行适当处理,避免泄露细节 实施完善的WAF规则,但要注意避免仅依赖WAF 7. 附录:Oracle注入常用函数