SuperAPI AI 工具集

exploiting-sql-injection-with-sqlmap

安全与审计

查看项目

更新于 10-15 09:25

技能介绍

用途

本技能用于在获得授权的 Web 应用渗透测试中,使用 sqlmap 检测并利用 SQL 注入漏洞,通过提取后端数据库内容来验证漏洞并展示其影响。适用于以下场景:

  • 获得授权的 Web 应用渗透测试项目
  • 手工测试发现参数、请求头或 Cookie 中可能存在 SQL 注入点时
  • 验证 Burp Suite 或 OWASP ZAP 等自动化扫描器报告的 SQL 注入发现
  • 需要通过提取后端数据库数据来演示 SQL 注入影响时
  • 涉及 SQL 注入利用的 CTF 挑战

前置条件

  • 授权:针对目标签署的书面渗透测试协议(交战规则)
  • sqlmap:可通过 pip install sqlmap 或 Kali Linux 上的 apt install sqlmap 安装
  • Python 3.6+:sqlmap 所需的运行时
  • Burp Suite(可选):用于捕获和重放 HTTP 请求
  • 目标访问:与目标 Web 应用之间的网络连通性
  • 带代理的浏览器:Firefox 配合 FoxyProxy 用于拦截请求

主要能力与工作流

步骤 1:识别潜在注入点

手工浏览应用,识别与数据库交互的参数,使用 Burp Suite 捕获请求。关注 URL、POST 正文、Cookie 和请求头中的参数。可先手工测试基本 SQL 注入迹象,例如在参数后添加单引号,观察是否返回 SQL 错误信息。

步骤 2:运行 sqlmap 基础检测扫描

针对可疑注入点启动 sqlmap,确认漏洞并识别数据库类型。支持 GET 参数测试、POST 请求测试(通过 -r 读取 Burp 保存的请求文件)、指定参数测试以及基于 Cookie 的注入测试。

步骤 3:枚举数据库结构

确认注入后,枚举数据库、表和列。可使用 --dbs 列出所有数据库,使用 -D 指定数据库后配合 --tables 列出表,再配合 -T 指定表后使用 --columns 列出列。

步骤 4:从目标表提取数据

导出敏感表内容以演示影响。可指定列进行导出,使用 --start 和 --stop 限制行数避免过度提取,并可尝试使用 --passwords 自动破解密码哈希。

步骤 5:测试高级利用向量

评估完整影响,测试操作系统级访问和文件操作。可检查当前数据库用户和权限(--current-user、--current-db、--is-dba),在具备 DBA 权限时尝试读取服务器文件(--file-read),在 MySQL 具备 FILE 权限时尝试执行操作系统命令(--os-cmd)。

步骤 6:使用 tamper 脚本绕过 WAF/过滤器

当 Web 应用防火墙或输入过滤器拦截基本载荷时,使用 tamper 脚本。可使用 space2comment、between、randomcase 等常见脚本,针对特定 WAF(如 ModSecurity)可使用 modsecurityversioned、modsecurityzeroversioned。使用 --list-tampers 可列出所有可用脚本。

步骤 7:生成报告并清理

记录发现并清理痕迹。sqlmap 默认将结果存储在 ~/.local/share/sqlmap/output/ 目录,可使用 --output-dir 指定输出目录导出结果,使用 --purge 清理 sqlmap 会话数据。

关键概念

  • Union-based SQLi:使用 UNION SELECT 将攻击者查询结果附加到原始查询输出中
  • Blind Boolean SQLi:通过观察应用返回的真/假响应逐位推断数据
  • Blind Time-based SQLi:利用数据库 sleep 函数(如 SLEEP(5))根据响应延迟推断数据
  • Error-based SQLi:通过 HTTP 响应中返回的详细数据库错误信息提取数据
  • Stacked Queries:使用分号分隔执行多条 SQL 语句,用于 INSERT/UPDATE/DELETE 操作
  • Out-of-band SQLi:通过数据库服务器发起的 DNS 或 HTTP 请求外带数据
  • Tamper Scripts:修改载荷以绕过 WAF 和输入过滤的 sqlmap 插件
  • Second-order SQLi:注入的载荷被存储,稍后在不同查询上下文中执行

工具与系统

  • sqlmap:自动化 SQL 注入检测与利用框架
  • Burp Suite Professional:用于拦截、修改和重放请求的 HTTP 代理
  • OWASP ZAP:Burp 的免费替代品,用于 Web 应用扫描和代理
  • Havij:带 GUI 的自动化 SQL 注入工具(Windows)
  • jSQL Injection:基于 Java 的 GUI SQL 注入测试工具
  • DBeaver/DataGrip:用于验证提取数据结构的数据库客户端

常见场景

  • 电商产品页 SQL 注入:产品详情页的 id 参数直接用于 SQL 查询,使用 sqlmap 提取完整客户数据库以演示严重业务影响
  • 登录表单绕过:登录表单将用户输入拼接到认证查询中,利用注入绕过认证并枚举数据库中所有用户凭据
  • 受 WAF 保护的搜索功能:搜索功能存在 SQL 注入但受 WAF 保护,使用 space2comment 和 between 等 tamper 脚本编码载荷绕过过滤规则
  • 基于 Cookie 的盲注:会话 Cookie 值在服务端用于数据库查询,使用基于时间的盲注技术逐字符提取数据

输出格式

技能提供了 SQL 注入发现的报告模板,包含漏洞类型、严重性(如 CVSS 9.8)、位置、数据库类型、影响、OWASP 分类、证据、枚举的数据库、暴露的敏感数据以及修复建议。修复建议包括:对所有数据库交互使用参数化查询(预编译语句)、使用允许列表进行输入验证、为应用用户应用最小权限数据库权限、部署 Web 应用防火墙作为纵深防御、启用数据库查询日志和监控以发现异常模式。

限制

本技能仅限在获得书面授权的渗透测试中使用。资料未提供其他限制说明。