r0oth3x49/ghauri

GitHub: r0oth3x49/ghauri

一款跨平台的自动化 SQL 注入检测与利用工具,支持多种注入技术和主流数据库。

Stars: 4045 | Forks: 423

[![GitHub 发布](https://img.shields.io/badge/release-v1.4.3-brightgreen?style=flat-square)](https://github.com/r0oth3x49/ghauri/releases/tag/1.4.3) [![GitHub 星标](https://img.shields.io/github/stars/r0oth3x49/ghauri?style=flat-square)](https://github.com/r0oth3x49/ghauri/stargazers) [![GitHub 派生](https://img.shields.io/github/forks/r0oth3x49/ghauri?style=flat-square)](https://github.com/r0oth3x49/ghauri/network) [![GitHub 议题](https://img.shields.io/github/issues/r0oth3x49/ghauri?style=flat-square)](https://github.com/r0oth3x49/ghauri/issues) [![GitHub 许可证](https://img.shields.io/github/license/r0oth3x49/ghauri?style=flat-square)](https://github.com/r0oth3x49/ghauri/blob/main/LICENSE) # Ghauri **一款先进的跨平台工具,可自动化检测和利用 SQL 注入安全漏洞。** ![ghauri-banner](https://static.pigsec.cn/wp-content/uploads/repos/cas/cf/cf5a35791d75eaf27336dec1dcda5dad9c916af12aab29283acf49c2e2253919.png) ## ***环境要求*** - Python 3 - Python `pip3` ## ***安装说明*** - cd 进入 **ghauri** 目录。 - 安装依赖项:`python3 -m pip install --upgrade -r requirements.txt` - 运行:`python3 setup.py install` 或 `python3 -m pip install -e .` - 安装完成后,您可以通过简单的 `ghauri --help` 命令来访问和运行 ghauri。 ***或者*** - 如果遇到安装问题,请遵循此[安装指南](https://github.com/r0oth3x49/ghauri/issues/119#issuecomment-1873049386)。 ## ***下载 Ghauri*** 您可以通过克隆 GitHub 仓库来下载最新版本的 Ghauri。 ``` git clone https://github.com/r0oth3x49/ghauri.git ``` ## ***功能*** - 支持以下类型的注入 payload: - 基于布尔盲注 (Boolean based)。 - 基于报错 (Error Based) - 基于时间 (Time Based) - 堆叠查询 (Stacked Queries) - 支持以下 DBMS 的 SQL 注入。 - MySQL - Microsoft SQL Server - Postgres - Oracle - Microsoft Access (目前在基于布尔的盲注中仅支持指纹识别) - 支持以下注入类型。 - GET/POST 注入 - Headers 注入 - Cookies 注入 - Multipart Form data 注入 - 基于 JSON 的注入 - 基于 SOAP/XML 的注入 - 支持 proxy 选项 `--proxy`。 - 支持从 txt 文件解析请求:使用的开关是 `-r file.txt` - 支持限制提取 dbs/tables/columns/dump 的数据量:使用的开关是 `--start 1 --stop 2` - 添加了对所有阶段恢复(resuming)的支持。 - 添加了跳过 URL 编码的开关:`--skip-urlencode` - 添加了在基于布尔/时间盲注的情况下验证提取字符的支持。 - 添加了根据用户需求处理重定向的支持。 - 添加了 sql-shell 开关支持:`--sql-shell`(实验性) - 添加了重新发起查询的开关:`--fresh-queries` - 添加了主机名提取开关:`--hostname` - 添加了从 github 更新 ghauri 的开关:`--update` - 注意:要使此开关在未来更新中生效,必须从 github 克隆/安装 ghauri, 对于旧版本用户,他们必须运行 git pull(如果是通过 git 安装的)来获取此更新 并且在未来的更新中,将可以使用 `ghauri --update` 命令来获取 最新版本的 ghauri。 - 添加了忽略有问题的 HTTP 状态码(例如 401)的开关:`--ignore-code` - 添加了检索表条目计数的开关:`--count` - 添加了扫描文本文件中提供的多个目标的开关:`-m`(实验性) - 添加了自动检测和利用 base64 可反序列化的 GET 参数功能。(实验性) - 添加了随机 HTTP User Agent 支持:`--random-agent, --mobile` ## **进阶用法**


作者:Nasir khan (r0ot h3x49)



用法:ghauri -u URL [OPTIONS]



一个基于 Python 的跨平台高级 SQL 注入检测与利用工具。



常规:

  -h, --help          显示帮助信息。

  --version           显示版本号。

  --update            更新 ghauri

  -v VERBOSE          详细程度级别:1-5(默认为 1)。

  --batch             不请求用户输入,使用默认行为

  --flush-session     清空当前目标的 session 文件

  --fresh-queries     忽略存储在 session 文件中的查询结果

  --test-filter       按标题选择测试 payload(实验性)



目标:

  必须至少提供这些选项中的一个来定义目标



  -u URL, --url URL   目标 URL(例如 'http://www.site.com/vuln.php?id=1')。

  -m BULKFILE         扫描文本文件中提供的多个目标

  -r REQUESTFILE      从文件加载 HTTP 请求



请求:

  这些选项可用于指定如何连接到目标 URL



  -A , --user-agent   HTTP User-Agent header 值

  -H , --header       额外的 header(例如 "X-Forwarded-For: 127.0.0.1")

  --mobile            通过 HTTP User-Agent header 模拟智能手机

  --random-agent      使用随机选择的 HTTP User-Agent header 值

  --host              HTTP Host header 值

  --data              通过 POST 发送的数据字符串(例如 "id=1")

  --cookie            HTTP Cookie header 值(例如 "PHPSESSID=a8d127e..")

  --referer           HTTP Referer header 值

  --headers           额外的 headers(例如 "Accept-Language: fr\nETag: 123")

  --proxy             使用代理连接到目标 URL

  --delay             每次 HTTP 请求之间的延迟(秒)

  --timeout           连接超时前等待的秒数(默认 30)

  --retries           发生连接相关错误时的重试次数(默认 3)

  --confirm           确认注入的 payload。

  --ignore-code       忽略(有问题的)HTTP 错误码(例如 401)

  --skip-urlencode    跳过 payload 数据的 URL 编码

  --force-ssl         强制使用 SSL/HTTPS



优化:

  这些选项可用于优化 ghauri 的性能



  --threads THREADS   最大并发 HTTP(s) 请求数(默认 1)



注入:

  这些选项可用于指定要测试的参数,提供自定义注入 payload 和可选的篡改脚本



  -p TESTPARAMETER    可测试的参数

  --dbms DBMS         强制后端 DBMS 使用提供的值

  --prefix            注入 payload 前缀字符串

  --suffix            注入 payload 后缀字符串

  --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 banner

  --current-user      检索 DBMS 当前用户

  --current-db        检索 DBMS 当前数据库

  --hostname          检索 DBMS 服务器主机名

  --dbs               枚举 DBMS 数据库

  --tables            枚举 DBMS 数据库表

  --columns           枚举 DBMS 数据库表字段

  --count             检索表的条目数

  --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





## **法律免责声明**


```
Usage of Ghauri for attacking targets without prior mutual consent is illegal.

It is the end user's responsibility to obey all applicable local,state and federal laws. 

Developer assume no liability and is not responsible for any misuse or damage caused by this program.
```


## **待办事项 (TODO)**

- 添加对内联查询 (inline queries) 的支持。
- 添加对基于 Union 查询的支持

## ***为什么选择 Ghauri***

有许多文章和帖子强调了用户在使用 Ghauri 与 SQLMap 相比所取得的成功。虽然我不是在直接将 Ghauri 与 SQLMap 进行比较,但许多用户已经这么做了。我发起这个项目是因为在日常工作中,我经常在配置和有效使用 SQLMap 方面遇到重大挑战,即使是对于看似简单的 SQL 注入也是如此。尽管这些注入看起来很简单,但 SQLMap 往往无法检测到它们。在朋友的鼓励下,我决定创建自己的工具。我编写了许多用于利用的脚本,每个脚本都针对特定情况量身定制,我意识到将这些技术集成到一个单独的模块中会带来潜在的好处。这促成了 Ghauri 的诞生,它受到了社区的广泛好评,并因其有效性获得了积极的反馈和星标。

甚至 ***Stamparam*** 也认可了 Ghauri,在一条推文中将其描述为“内部机制的重写”,这凸显了其内部机制的重要性。

例如,您可以将一个存在漏洞的 HTTP 请求(认证背后的 SQLi)保存到文件中,并使用 `-r` 开关将其分别提供给 Ghauri 和 SQLMap。结果不言而喻,无需自定义配置。

Ghauri 既以类似浏览器的方式运行,也使用其独特的方法,自动切换到不同的数据提取技术和绕过方法。再次强调,这不是直接的比较,因为 Ghauri 仍有许多功能有待实现,而 SQLMap 已经功能丰富。然而,Ghauri 始终能完成所需的任务。

自从开发了这款工具以来,我很少使用 SQLMap,除了在少数 Ghauri 仍在改进中的情况下。

我鼓励您亲自尝试一下。

谢谢。
标签:CISA项目, DFIR, DOE合作, PNNL实验室, Python, 无后门, 无服务器架构, 逆向工具