地级市HVV | SQL注入分享
字数 1455 2025-08-11 17:40:26
SQL注入实战案例分析与防御教学文档
1. 案例一分析:汽车检测公司SQL注入到后台入侵
1.1 漏洞发现过程
- 初始发现:在资产中发现汽车检测公司的报告查询系统
- 注入点识别:发现
key参数存在SQL注入漏洞 - 工具利用:直接使用sqlmap进行自动化注入测试
1.2 攻击路径
-
数据库渗透:
- 通过SQL注入获取数据库所有数据
- 尝试上传webshell失败(物理路径未知,MSSQL限制)
-
CMS识别:
- 通过数据库名
jz_前缀识别出系统使用"极致CMS" - 拼接CMS默认路径成功访问后台
- 通过数据库名
-
凭证获取:
- 在数据库转储(--dump)过程中发现邮箱和密码组合
- 使用这些凭证成功登录后台
1.3 技术要点
- CMS识别技巧:通过数据库命名习惯推测CMS类型
- 凭证提取策略:大规模转储时关注敏感字段组合
- 路径猜测:利用CMS默认路径访问后台
2. 案例二分析:大数据公司弱口令到SQL注入
2.1 初始入侵
-
弱口令利用:
- 发现admin/123456弱口令组合
- 成功登录系统
-
上传限制:
- 上传接口安全限制严格,无法利用
2.2 二次渗透路径
-
框架识别:
- 确认系统使用ThinkPHP框架
-
日志泄露漏洞:
- 发现日志泄露漏洞
- 日志中包含SQL查询语句,提示SQL注入可能性
-
SQL注入利用:
- 使用sqlmap测试登录认证接口
- 成功获取
-sql-shell权限(DBA级别) - 因权限限制无法上传webshell
2.3 技术要点
- 框架特性利用:ThinkPHP常见漏洞利用
- 日志泄露风险:日志中敏感信息暴露导致二次漏洞
- 认证接口测试:针对登录认证机制进行SQL注入测试
3. SQL注入防御措施
3.1 开发层面防御
-
参数化查询:
- 使用预处理语句(Prepared Statements)
- 避免直接拼接SQL语句
-
输入验证:
- 实施严格的白名单验证
- 对特殊字符进行转义处理
-
最小权限原则:
- 数据库账户使用最低必要权限
- 避免使用DBA账户连接应用
3.2 系统层面防御
-
WAF部署:
- 部署Web应用防火墙拦截注入尝试
- 配置SQL注入特征规则
-
错误处理:
- 禁用详细错误信息显示
- 使用自定义错误页面
-
日志管理:
- 确保日志不包含敏感信息
- 严格控制日志访问权限
3.3 运维层面防御
-
定期更新:
- 及时更新CMS和框架补丁
- 关注安全公告修复已知漏洞
-
安全配置:
- 修改默认后台路径
- 禁用不必要的数据库功能
-
监控审计:
- 实施SQL注入尝试监控
- 定期进行安全审计
4. 渗透测试方法论
4.1 信息收集阶段
-
资产识别:
- 全面收集目标系统信息
- 识别使用的技术栈(CMS、框架等)
-
路径猜测:
- 尝试默认路径和常见组合
- 利用命名习惯推测隐藏资源
4.2 漏洞探测阶段
-
自动化工具使用:
- sqlmap等工具的高效利用
- 注意工具参数调整(--forms, --dump等)
-
手动验证:
- 对自动化工具结果进行人工验证
- 结合上下文判断漏洞可利用性
4.3 漏洞利用阶段
-
权限提升:
- 从SQL注入到系统权限获取
- 利用数据库功能尝试进一步渗透
-
横向移动:
- 通过获取的凭证尝试其他系统
- 利用相同技术栈的共性漏洞
5. 总结与建议
-
漏洞关联性:
- 初级漏洞(SQL注入)可能导致严重连锁反应
- 重视看似低危漏洞的潜在影响
-
防御纵深:
- 建立多层防御体系
- 单一防护措施不足以应对复杂攻击
-
安全意识:
- 加强开发人员安全培训
- 定期进行安全演练和渗透测试
-
持续监控:
- 实施实时安全监控
- 建立快速响应机制