CNVD证书挖掘(两小时极速版)
字数 1257 2025-08-29 08:30:30
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注入常用函数
UTL_HTTP.request - HTTP请求
DBMS_LOCK.SLEEP - 延时函数
CTXSYS.DRITHSX.SN - 报错注入
SYS.DBMS_EXPORT_EXTENSION - 执行系统命令