用途
该技能用于在获得书面授权的渗透测试中,识别并利用 Web 应用中的 SQL 注入漏洞。它适用于测试 Web 应用输入参数、验证参数化查询与输入过滤是否到位、演示已确认漏洞的业务影响、验证 WAF 与输入校验规则是否有效,以及测试存储过程、动态 SQL 和 ORM 绕过等场景。
明确禁止在无书面授权的情况下对数据库使用;禁止提取或外泄超出概念验证所需的真实客户数据;禁止对可能因利用而破坏数据完整性的生产数据库使用。
主要能力
- 注入点发现:映射 URL(GET)、请求体(POST)、HTTP 头(Cookie、Referer、User-Agent、X-Forwarded-For)以及 JSON/XML API 载荷中的所有输入向量;采用报错型、布尔型、时间型、带外(OOB)以及二阶注入检测。
- 数据库指纹识别:通过报错信息、数据库特有函数、字符串拼接差异和注释语法区分 MySQL、MSSQL、PostgreSQL、Oracle 等。
- 手工利用:UNION 提取(先用 ORDER BY 确定列数)、报错型提取(如 MySQL 的 EXTRACTVALUE/UPDATEXML)、布尔盲注逐字符提取、时间盲注逐字符提取、堆叠查询(在支持时执行 INSERT/UPDATE/DELETE)。
- sqlmap 自动化利用:基础检测、枚举数据库/表、导出数据、测试 POST 参数、Cookie 注入、尝试 OS 命令执行(需数据库用户权限足够)、使用 tamper 脚本绕过 WAF。
- 影响演示与报告:记录数据提取证据(报告中脱敏 PII)、演示认证绕过、记录权限提升与横向移动可能性、提供代码级修复建议。
使用方式
工作流分为五步:
- 注入点发现:对每个参数注入单引号观察 SQL 报错;注入 ' AND 1=1-- 与 ' AND 1=2-- 比较响应差异;注入时间延迟载荷(如 MSSQL 的 WAITFOR DELAY、MySQL 的 SLEEP、PostgreSQL 的 pg_sleep)观察 5 秒延迟;使用 Burp Collaborator 域名触发 DNS/HTTP 请求进行带外检测;测试输入被存储后在其他查询中使用的二阶注入。
- 数据库指纹识别:利用报错特征(MySQL、SQL Server、PG、ORA-)、数据库特有函数(VERSION()、@@version、DB_NAME()、v$version)、字符串拼接差异(CONCAT、+、||)和注释语法。
- 手工利用:按确认的注入类型选择 UNION、报错、布尔盲注、时间盲注或堆叠查询技术提取数据。
- sqlmap 自动化:使用 -u 指定目标、--dbs 枚举数据库、-D/-T/--dump 导出数据、--data 测试 POST、--cookie 测试 Cookie(用 * 标记注入点)、--os-shell 尝试命令执行、--tamper 绕过 WAF。
- 影响演示与报告:截图或保存 sqlmap 输出作为证据(脱敏 PII)、演示认证绕过、记录权限提升与横向移动、给出参数化查询等修复建议。
适用场景
- 医疗患者门户等 Web 应用在授权渗透测试中的 SQL 注入评估。
- 验证参数化查询、输入过滤、WAF 规则是否有效。
- 测试存储过程、动态 SQL、ORM 绕过。
- 演示已确认漏洞的业务影响(如可访问的记录数量与表结构)。
限制
- 必须持有书面授权,明确目标应用与允许的利用级别(仅检测或完整利用)。
- 需要 Burp Suite Professional、sqlmap、目标数据库引擎知识、不同权限级别的测试账号等前置条件。
- 不得对无书面授权的数据库使用;不得提取超出概念验证所需的真实客户数据;不得对可能破坏数据完整性的生产数据库使用。
- 使用 sqlmap 默认设置对生产数据库可能造成过大负载或数据损坏。
- 评估中应限制证据为记录数量和表结构,而非提取并存储真实数据。
- 需测试所有参数类型(Cookie、头、JSON 体),而不仅是 URL 参数,并注意存储过程调用的二阶注入。
关键概念
- SQL 注入:利用 SQL 查询中未校验的用户输入来操纵数据库操作、提取数据或执行管理操作。
- UNION 型 SQLi:在原始查询后追加 UNION SELECT 以在同一响应中提取其他表的数据。
- 盲注 SQL 注入:应用不直接返回查询结果,攻击者通过布尔响应或时间延迟推断数据。
- 参数化查询:用户输入作为参数传递而非拼接进查询字符串,可防止注入。
- 二阶注入:恶意载荷被应用存储,并在之后不同上下文或 SQL 查询中执行。
- 堆叠查询:在单个请求中用分号分隔执行多条 SQL 语句,从而通过注入执行 INSERT、UPDATE 或 DELETE。
- WAF 绕过:使用编码、替代语法或分片等技术规避阻止常见 SQL 注入模式的 Web 应用防火墙规则。
工具与系统
- sqlmap:自动化 SQL 注入检测与利用工具,支持 6 种注入技术、30 多种数据库管理系统。
- Burp Suite Professional:HTTP 代理,用于拦截、修改和重放携带 SQL 注入载荷的请求,覆盖所有参数类型。
- Havij:基于 GUI 的 SQL 注入工具,在无 sqlmap 时用于快速自动化利用。
- jSQL Injection:基于 Java 的 SQL 注入工具,带 GUI,支持自动注入、数据库提取和文件读写。