Ghauri:一款功能强大的SQL注入漏洞自动化检测和利用工具
字数 2495 2025-08-11 08:35:57

Ghauri SQL注入漏洞自动化检测与利用工具详解

一、工具概述

Ghauri是一款功能强大的跨平台SQL注入漏洞自动化检测和利用工具,由Alpha_h4ck开发并于2023年发布。该工具旨在帮助安全研究人员自动化检测和利用Web应用程序中的SQL注入漏洞,从而提升应用程序安全性。

二、核心功能

1. 支持的注入Payload类型

  • 布尔注入
  • 错误注入
  • 时间注入
  • 堆叠注入

2. 支持的数据库管理系统(DBMS)

  • MySQL
  • Microsoft SQL Server
  • Postgres
  • Oracle
  • Microsoft Access

3. 支持的注入点类型

  • 基于GET/POST的注入
  • 基于Header的注入
  • 基于Cookie的注入
  • 表单数据注入
  • 基于JSON的注入

三、环境要求与安装

1. 系统要求

  • Python 3
  • pip3

2. 安装步骤

  1. 克隆项目仓库:
git clone https://github.com/r0oth3x49/ghauri.git
  1. 进入项目目录并安装依赖:
cd ghauri
python3 -m pip install --upgrade -r requirements.txt
  1. 安装工具:
python3 setup.py install
# 或
python3 -m pip install -e

四、工具使用详解

1. 基本命令

ghauri --help  # 查看帮助信息
ghauri --version  # 查看版本信息

2. 常用选项

选项 描述
-v VERBOSE 设置详细等级(1-5,默认1)
--batch 使用默认配置,无需用户输入
--flush-session 刷新当前目标的会话文件

3. 目标定义

选项 描述
-u URL, --url URL 目标URL(如'http://www.site.com/vuln.php?id=1')
-r REQUESTFILE 从文件加载HTTP请求

4. 请求选项

选项 描述
-A, --user-agent 设置User-Agent头
-H, --Header 设置自定义Header(如"X-Forwarded-For: 127.0.0.1")
--host 设置HTTP主机头
--data POST请求数据(如"id=1")
--cookie 设置Cookie头(如"PHPSESSID=a8d127e..")
--referer 设置Referer头
--headers 设置多个Headers(如"Accept-Language: fr\nETag: 123")
--proxy 使用代理连接目标
--delay 每个HTTP请求之间的延迟(秒)
--timeout 连接超时时间(默认30秒)
--retries 连接错误重试次数(默认3次)
--confirm 确认注入的Payload
--skip-urlencode 跳过Payload数据URL编码
--force-ssl 强制使用SSL/HTTPS

5. 性能优化

选项 描述
--threads THREADS 最大并发HTTP请求数(默认1)

6. 注入参数

选项 描述
-p TESTPARAMETER 指定可测试参数
--dbms DBMS 强制指定后端DBMS类型
--prefix 注入Payload前缀字符串
--suffix 注入Payload后缀字符串
--safe-chars 跳过指定字符URL编码(如--safe-chars=fetch)
--fetch-using 使用不同操作符获取数据(如--fetch-using=between/in)

7. 自定义检测

选项 描述
--level LEVEL 测试级别(1-3,默认1)
--code CODE 查询为True时要匹配的HTTP状态码
--string 查询为True时要匹配的字符串
--not-string 查询为False时要匹配的字符串
--text-only 仅基于文本内容比较页面

8. 注入技术

选项 描述
--technique TECH 使用的SQL注入技术(默认"BEST")
--time-sec TIMESEC DBMS响应延迟秒数(默认5)

9. 数据库枚举

选项 描述
-b, --banner 获取DBMS Banner信息
--current-user 获取当前用户
--current-db 获取当前数据库
--hostname 获取服务器主机名
--dbs 枚举所有数据库
--tables 枚举数据库表
--columns 枚举表字段
--dump 转储表数据
-D DB 指定要枚举的数据库
-T TBL 指定要枚举的表
-C COLS 指定要枚举的列
--start 数据检索起始偏移量
--stop 数据检索结束偏移量

五、使用示例

  1. 基本注入检测:
ghauri -u "http://www.site.com/vuln.php?id=1"
  1. 枚举所有数据库:
ghauri -u "http://www.site.com/vuln.php?id=1" --dbs
  1. 指定数据库枚举表:
ghauri -u "http://www.site.com/vuln.php?id=1" -D database_name --tables
  1. 转储表数据:
ghauri -u "http://www.site.com/vuln.php?id=1" -D database_name -T table_name --dump
  1. 使用代理和时间注入技术:
ghauri -u "http://www.site.com/vuln.php?id=1" --proxy="http://127.0.0.1:8080" --technique=T

六、许可证

Ghauri遵循MIT开源许可证协议发布。

七、项目地址

GitHub仓库: https://github.com/r0oth3x49/ghauri.git

八、注意事项

  1. 该工具仅用于合法的安全测试和研究目的
  2. 使用前请确保已获得目标系统的测试授权
  3. 建议在受控环境中进行测试
  4. 高级功能可能需要更深入的理解SQL注入原理
  5. 对于复杂的注入场景,可能需要结合手动测试方法
Ghauri SQL注入漏洞自动化检测与利用工具详解 一、工具概述 Ghauri是一款功能强大的跨平台SQL注入漏洞自动化检测和利用工具,由Alpha_ h4ck开发并于2023年发布。该工具旨在帮助安全研究人员自动化检测和利用Web应用程序中的SQL注入漏洞,从而提升应用程序安全性。 二、核心功能 1. 支持的注入Payload类型 布尔注入 错误注入 时间注入 堆叠注入 2. 支持的数据库管理系统(DBMS) MySQL Microsoft SQL Server Postgres Oracle Microsoft Access 3. 支持的注入点类型 基于GET/POST的注入 基于Header的注入 基于Cookie的注入 表单数据注入 基于JSON的注入 三、环境要求与安装 1. 系统要求 Python 3 pip3 2. 安装步骤 克隆项目仓库: 进入项目目录并安装依赖: 安装工具: 四、工具使用详解 1. 基本命令 2. 常用选项 | 选项 | 描述 | |------|------| | -v VERBOSE | 设置详细等级(1-5,默认1) | | --batch | 使用默认配置,无需用户输入 | | --flush-session | 刷新当前目标的会话文件 | 3. 目标定义 | 选项 | 描述 | |------|------| | -u URL, --url URL | 目标URL(如'http://www.site.com/vuln.php?id=1') | | -r REQUESTFILE | 从文件加载HTTP请求 | 4. 请求选项 | 选项 | 描述 | |------|------| | -A, --user-agent | 设置User-Agent头 | | -H, --Header | 设置自定义Header(如"X-Forwarded-For: 127.0.0.1") | | --host | 设置HTTP主机头 | | --data | POST请求数据(如"id=1") | | --cookie | 设置Cookie头(如"PHPSESSID=a8d127e..") | | --referer | 设置Referer头 | | --headers | 设置多个Headers(如"Accept-Language: fr\nETag: 123") | | --proxy | 使用代理连接目标 | | --delay | 每个HTTP请求之间的延迟(秒) | | --timeout | 连接超时时间(默认30秒) | | --retries | 连接错误重试次数(默认3次) | | --confirm | 确认注入的Payload | | --skip-urlencode | 跳过Payload数据URL编码 | | --force-ssl | 强制使用SSL/HTTPS | 5. 性能优化 | 选项 | 描述 | |------|------| | --threads THREADS | 最大并发HTTP请求数(默认1) | 6. 注入参数 | 选项 | 描述 | |------|------| | -p TESTPARAMETER | 指定可测试参数 | | --dbms DBMS | 强制指定后端DBMS类型 | | --prefix | 注入Payload前缀字符串 | | --suffix | 注入Payload后缀字符串 | | --safe-chars | 跳过指定字符URL编码(如--safe-chars=fetch) | | --fetch-using | 使用不同操作符获取数据(如--fetch-using=between/in) | 7. 自定义检测 | 选项 | 描述 | |------|------| | --level LEVEL | 测试级别(1-3,默认1) | | --code CODE | 查询为True时要匹配的HTTP状态码 | | --string | 查询为True时要匹配的字符串 | | --not-string | 查询为False时要匹配的字符串 | | --text-only | 仅基于文本内容比较页面 | 8. 注入技术 | 选项 | 描述 | |------|------| | --technique TECH | 使用的SQL注入技术(默认"BEST") | | --time-sec TIMESEC | DBMS响应延迟秒数(默认5) | 9. 数据库枚举 | 选项 | 描述 | |------|------| | -b, --banner | 获取DBMS Banner信息 | | --current-user | 获取当前用户 | | --current-db | 获取当前数据库 | | --hostname | 获取服务器主机名 | | --dbs | 枚举所有数据库 | | --tables | 枚举数据库表 | | --columns | 枚举表字段 | | --dump | 转储表数据 | | -D DB | 指定要枚举的数据库 | | -T TBL | 指定要枚举的表 | | -C COLS | 指定要枚举的列 | | --start | 数据检索起始偏移量 | | --stop | 数据检索结束偏移量 | 五、使用示例 基本注入检测: 枚举所有数据库: 指定数据库枚举表: 转储表数据: 使用代理和时间注入技术: 六、许可证 Ghauri遵循MIT开源许可证协议发布。 七、项目地址 GitHub仓库: https://github.com/r0oth3x49/ghauri.git 八、注意事项 该工具仅用于合法的安全测试和研究目的 使用前请确保已获得目标系统的测试授权 建议在受控环境中进行测试 高级功能可能需要更深入的理解SQL注入原理 对于复杂的注入场景,可能需要结合手动测试方法