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. 系统要求
2. 安装步骤
- 克隆项目仓库:
git clone https://github.com/r0oth3x49/ghauri.git
- 进入项目目录并安装依赖:
cd ghauri
python3 -m pip install --upgrade -r requirements.txt
- 安装工具:
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 |
数据检索结束偏移量 |
五、使用示例
- 基本注入检测:
ghauri -u "http://www.site.com/vuln.php?id=1"
- 枚举所有数据库:
ghauri -u "http://www.site.com/vuln.php?id=1" --dbs
- 指定数据库枚举表:
ghauri -u "http://www.site.com/vuln.php?id=1" -D database_name --tables
- 转储表数据:
ghauri -u "http://www.site.com/vuln.php?id=1" -D database_name -T table_name --dump
- 使用代理和时间注入技术:
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
八、注意事项
- 该工具仅用于合法的安全测试和研究目的
- 使用前请确保已获得目标系统的测试授权
- 建议在受控环境中进行测试
- 高级功能可能需要更深入的理解SQL注入原理
- 对于复杂的注入场景,可能需要结合手动测试方法