一个先进的跨平台工具,自动化了检测和利用 SQL 注入安全漏洞的过程。
基于布尔值的。
基于错误的。
基于时间的。
堆叠查询。
MySQL
Microsoft SQL Server
Postgres
OracleMicrosoft Access(目前仅支持基于布尔值的盲注中的指纹)
基于 GET/POST 的注入
基于头部的注入
基于 Cookie 的注入
多部分表单数据注入
基于 JSON 的注入
基于 SOAP/XML 的注入
支持代理选项 –proxy。
支持从 txt 文件解析请求的开关:使用 -r file.txt
支持限制数据提取以用于 dbs/tables/columns/dump:开关 –start 1 –stop 2
增加了支持所有阶段的恢复的功能。
增加了跳过 URL 编码的开关的支持:–skip-urlencode
增加了在基于布尔值/基于时间的注入中验证提取的字符的支持。
增加了根据用户需求处理重定向的支持。
增加了 SQL shell 开关的支持:–sql-shell(实验性)
增加了新查询开关的支持:–fresh-queries
增加了主机名提取开关的支持:–hostname
增加了从 GitHub 更新 ghauri 的开关:–update
注意:必须从 GitHub 克隆/安装 ghauri 才能使用此开关来获取未来的更新,对于旧版本的用户,他们必须运行 git pull(如果使用 git 安装)以获取此更新,并且对于未来的更新,使用 ghauri –update 命令将可以获取 ghauri 的最新版本。
Python 3
pip3
安装setuptools
pip install setuptools
进入到 ghauri 目录。
cd ghauri
安装依赖项:
python3 -m pip install --upgrade -r requirements.txt
运行:
python3 setup.py install
或
python3 -m pip install -e .
通过简单的 ghauri --help
命令即可访问并运行 ghauri。
ghauri --help
您可以通过克隆 GitHub 存储库来下载最新版本的 Ghauri。
git clone https://github.com/r0oth3x49/ghauri.git
用法: ghauri -u URL [选项]
一款基于 Python 的跨平台高级 SQL 注入检测与利用工具。
常规:
-h, --help 显示帮助信息。
--version 显示版本信息。
--update 更新 ghauri。
-v VERBOSE 详细程度级别:1-5(默认为 1)。
--batch 从不询问用户输入,使用默认行为。
--flush-session 清除当前目标的会话文件。
--fresh-queries 忽略会话文件中存储的查询结果。
--test-filter 通过标题选择测试有效载荷(实验性)。
目标:
必须提供以下选项中的至少一个以定义目标(们)。
-u URL, --url URL 目标 URL(例如 'http://www.site.com/vuln.php?id=1')。
-r REQUESTFILE 从文件加载 HTTP 请求。
请求:
这些选项可用于指定如何连接到目标 URL。
-A , --user-agent HTTP User-Agent 头的值。
-H , --header 额外的头部(例如 "X-Forwarded-For: 127.0.0.1")。
--host HTTP Host 头的值。
--data 通过 POST 发送的数据字符串(例如 "id=1")。
--cookie HTTP Cookie 头的值(例如 "PHPSESSID=a8d127e..")。
--referer HTTP Referer 头的值。
--headers 额外的头部(例如 "Accept-Language: fr\nETag: 123")。
--proxy 使用代理连接到目标 URL。
--delay 每个 HTTP 请求之间的延迟秒数。
--timeout 连接超时之前等待的秒数(默认为 30)。
--retries 发生连接相关错误时的重试次数(默认为 3)。
--confirm 确认注入有效载荷。
--skip-urlencode 跳过有效载荷数据的 URL 编码。
--force-ssl 强制使用 SSL/HTTPS。
优化:
这些选项可用于优化 ghauri 的性能。
--threads THREADS 最大并发 HTTP(s) 请求数(默认为 1)。
注入:
这些选项可用于指定要测试的参数、提供自定义注入有效载荷和可选的篡改脚本。
-p TESTPARAMETER 可测试的参数(们)。
--dbms DBMS 强制后端 DBMS 为提供的值。
--prefix 注入有效载荷前缀字符串。
--suffix 注入有效载荷后缀字符串。
--safe-chars 跳过特定字符的 URL 编码(例如:--safe-chars="[]")。
--fetch-using 使用不同的运算符获取数据(例如:--fetch-using=between/in)。
检测:
这些选项可用于自定义检测阶段。
--level LEVEL 执行测试的级别(1-3,默认为 1)。
--code CODE 在查询评估为 True 时匹配的 HTTP 状态码。
--string 在查询评估为 True 时匹配的字符串。
--not-string 在查询评估为 False 时匹配的字符串。
--text-only 仅基于文本内容比较页面。
技术:
这些选项可用于调整特定 SQL 注入技术的测试。
--technique TECH 要使用的 SQL 注入技术(默认为 "BEST")。
--time-sec TIMESEC 延迟 DBMS 响应的秒数(默认为 5)。
枚举:
这些选项可用于枚举后端数据库管理系统的信息、结构和表中包含的数据。
-b, --banner 检索 DBMS 标语。
--current-user 检索 DBMS 当前用户。
--current-db 检索 DBMS 当前数据库。
--hostname 检索 DBMS 服务器主机名。
--dbs 枚举 DBMS 数据库。
--tables 枚举 DBMS 数据库表。
--columns 枚举 DBMS 数据库表列。
--dump 转储 DBMS 数据库表条目。
-D DB 要枚举的 DBMS 数据库。
-T TBL 要枚举的 DBMS 数据库表(们)。
-C COLS 要枚举的 DBMS 数据库表列(们)。
--start 从偏移处检索 dbs/tables/columns/dump 的条目。
--stop 直到偏移处检索 dbs/tables/columns/dump 的条目。
--sql-shell 提示交互式 SQL shell(实验性)。
使用示例:
ghauri -u http://www.site.com/vuln.php?id=1 --dbs