挖洞经验 | 看我如何挖掘并成功利用印度Popular Sports公司网站主机头的SQL注入漏洞
字数 1201 2025-08-18 11:37:23
利用主机头挖掘SQL注入漏洞的完整指南
漏洞背景
本文档详细记录了如何通过分析HTTP主机头发现并利用SQL注入漏洞的过程,目标为印度一家流行体育公司的网站。该漏洞存在于AWS云环境下的Web应用中,通过精心构造的HTTP头实现了数据库信息泄露。
初始侦察
-
环境识别:
- 发现IP被立即阻止时,通过错误信息判断应用运行在AWS环境
- 确认标志:HTTP响应中包含
X-Amz-Cf-Id头,表明使用了CloudFront服务
-
测试策略调整:
- 由于直接IP被阻止,转向测试HTTP头漏洞
- 重点测试
Host头和X-Forwarded-Host头
漏洞发现过程
主机头测试
- 直接修改
Host头无效 - 添加
X-Forwarded-Host头测试:- 设置为
www.google.com→ 302重定向到Google - 设置为
www.evil.com→ 403 Forbidden响应
- 设置为
漏洞分析
-
安全机制推断:
- 应用后端有主机值白名单检查
- 两种可能实现方式:
- 数组/列表硬编码检查
- 数据库查询验证
-
SQL注入验证:
- 构造延迟注入测试:
X-Forwarded-Host: www.evil.com' OR (SELECT 1 FROM (SELECT SLEEP(10))a)-- - 观察到9.4秒的响应时间,确认存在时间型SQL注入
- 构造延迟注入测试:
漏洞利用
初始尝试
- 直接使用sqlmap失败,连接被拒绝
- 调整参数(
--delay,--timeout)仍无效
绕过限制
-
黑名单分析:
- 测试输入
<script>alert(1)</script>→ 400 Bad Request - 确认
<,>,script等字符被过滤
- 测试输入
-
使用sqlmap tamper脚本:
- 选择
between.py脚本:- 将
<替换为NOT BETWEEN - 将
>替换为NOT BETWEEN
- 将
- 成功绕过字符过滤
- 选择
数据提取
- 成功获取数据库信息:
- 用户凭据
- 电子邮件地址
- 其他敏感数据
关键知识点总结
-
AWS环境特征:
X-Amz-Cf-Id头表明使用CloudFront- 弹性负载均衡(ELB)常见配置
-
HTTP头注入测试:
Host和X-Forwarded-Host是常见测试点- 不同值的响应差异可揭示后端逻辑
-
SQL注入技巧:
- 时间延迟是验证盲注的有效方法
- 通过响应时间差异确认漏洞存在
-
绕过防御机制:
- 识别黑名单字符
- 使用等价语法替换被过滤字符
- sqlmap tamper脚本的灵活应用
-
漏洞利用流程:
初始测试 → 发现异常 → 构造POC → 绕过限制 → 数据提取
防御建议
- 对HTTP头输入实施严格验证
- 使用参数化查询而非字符串拼接
- 实施多层防御而非仅依赖黑名单
- 对数据库查询实施最小权限原则
- 监控异常查询模式
时间线参考
- 报告厂商:2018.5.3
- 修复确认:2018.5.3
- 重新测试:2018.5.3
- 获得奖励:2018.5.5
通过本案例,安全研究人员可以学习到如何在现代Web应用中通过非常规入口点发现SQL注入漏洞,以及如何绕过常见的防御机制实现数据提取。