SuperAPI AI 工具集

exploiting-sql-injection-vulnerabilities

安全与审计

查看项目

更新于 10-15 09:25

技能介绍

用途

该技能用于在获得书面授权的渗透测试中,识别并利用 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)、演示认证绕过、记录权限提升与横向移动可能性、提供代码级修复建议。

使用方式

工作流分为五步:

  1. 注入点发现:对每个参数注入单引号观察 SQL 报错;注入 ' AND 1=1-- 与 ' AND 1=2-- 比较响应差异;注入时间延迟载荷(如 MSSQL 的 WAITFOR DELAY、MySQL 的 SLEEP、PostgreSQL 的 pg_sleep)观察 5 秒延迟;使用 Burp Collaborator 域名触发 DNS/HTTP 请求进行带外检测;测试输入被存储后在其他查询中使用的二阶注入。
  2. 数据库指纹识别:利用报错特征(MySQL、SQL Server、PG、ORA-)、数据库特有函数(VERSION()、@@version、DB_NAME()、v$version)、字符串拼接差异(CONCAT、+、||)和注释语法。
  3. 手工利用:按确认的注入类型选择 UNION、报错、布尔盲注、时间盲注或堆叠查询技术提取数据。
  4. sqlmap 自动化:使用 -u 指定目标、--dbs 枚举数据库、-D/-T/--dump 导出数据、--data 测试 POST、--cookie 测试 Cookie(用 * 标记注入点)、--os-shell 尝试命令执行、--tamper 绕过 WAF。
  5. 影响演示与报告:截图或保存 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,支持自动注入、数据库提取和文件读写。