Ghauri -跨平台自动检测和SQL注入
文章目录
- 一、关于 Ghauri
- 特点
- 二、安装
- 三、高级用法
- 四、其它
- 法律免责声明
- 待办工作
- 为什么选择 Ghauri
一、关于 Ghauri
Ghauri 是一种先进的跨平台工具,可自动检测和利用SQL注入安全漏洞。
特点
-
支持以下类型的注射有效载荷:
- 基于布尔值。
- 基于错误
- 基于时间的
- 堆叠查询
-
支持以下DBMS的SQL注入:
- MySQL
- 微软SQL服务器
- 研究生
- 甲骨文
- Microsoft Access(目前仅在基于布尔的盲的情况下支持指纹)
-
支持以下注入内容:
- 基于GET/POST的注入
- 基于标头的注入
- 基于Cookie的注入
- 多部分表格数据注入
- 基于JSON的注入
- 基于SOAP/XML的注入
-
支持代理选项
--proxy
. -
支持解析来自txt文件的请求:切换
-r file.txt
-
支持限制dbs/表/列/转储的数据提取:switch
--start 1 --stop 2
-
添加了对恢复所有阶段的支持。
-
添加了对skip urlencode开关的支持:
--skip-urlencode
-
添加了对在基于布尔/时间的注入情况下验证提取字符的支持。
-
添加了对根据用户需求处理重定向的支持。
-
增加了对sql-shell开关的支持:
--sql-shell
(实验) -
添加了对新鲜查询开关的支持:
--fresh-queries
-
添加了用于提取主机名的开关:
--hostname
-
添加了从github更新ghauri的开关:
--update
s- 注意:ghauri必须从github克隆/安装,这个开关才能用于未来更新,对于旧版本的用户,他们必须运行git拉(如果使用git安装)来获取这个更新,对于未来更新,更新将可能与
ghauri --update
命令来获取最新版本的ghauri。
- 注意:ghauri必须从github克隆/安装,这个开关才能用于未来更新,对于旧版本的用户,他们必须运行git拉(如果使用git安装)来获取这个更新,对于未来更新,更新将可能与
-
添加了用于忽略有问题的HTTP代码的开关。(例如401):
--ignore-code
-
添加了用于检索表条目计数的开关。:
--count
-
增加了扫描文本文件中给出的多个目标的开关。
-m
(实验) -
添加了对base64可反序列化GET参数的自动检测和利用。(实验)
-
增加了对随机HTTP用户代理的支持:
--random-agent, --mobile
二、安装
要求:Python 3
1、下载
git clone https://github.com/r0oth3x49/ghauri.git
cd ghauri
2、安装依赖:
python3 -m pip install --upgrade -r requirements.txt
运行:
python3 setup.py install
或
python3 -m pip install -e .
您将能够使用简单的ghauri --help
命令访问和运行ghauri。
ghauri --help
如果遇到安装问题,请遵循此安装指南。
三、高级用法
Author: Nasir khan (r0ot h3x49)
usage: ghauri -u URL [OPTIONS]
A cross-platform python based advanced sql injections detection & exploitation tool.
General:
-h, --help Shows the help.
--version Shows the version.
--update update ghauri
-v VERBOSE Verbosity level: 1-5 (default 1).
--batch Never ask for user input, use the default behavior
--flush-session Flush session files for current target
--fresh-queries Ignore query results stored in session file
--test-filter Select test payloads by titles (experimental)
Target:
At least one of these options has to be provided to define the
target(s)
-u URL, --url URL Target URL (e.g. 'http://www.site.com/vuln.php?id=1).
-m BULKFILE Scan multiple targets given in a textual file
-r REQUESTFILE Load HTTP request from a file
Request:
These options can be used to specify how to connect to the target URL
-A , --user-agent HTTP User-Agent header value
-H , --header Extra header (e.g. "X-Forwarded-For: 127.0.0.1")
--mobile Imitate smartphone through HTTP User-Agent header
--random-agent Use randomly selected HTTP User-Agent header value
--host HTTP Host header value
--data Data string to be sent through POST (e.g. "id=1")
--cookie HTTP Cookie header value (e.g. "PHPSESSID=a8d127e..")
--referer HTTP Referer header value
--headers Extra headers (e.g. "Accept-Language: fr\nETag: 123")
--proxy Use a proxy to connect to the target URL
--delay Delay in seconds between each HTTP request
--timeout Seconds to wait before timeout connection (default 30)
--retries Retries when the connection related error occurs (default 3)
--confirm Confirm the injected payloads.
--ignore-code Ignore (problematic) HTTP error code(s) (e.g. 401)
--skip-urlencode Skip URL encoding of payload data
--force-ssl Force usage of SSL/HTTPS
Optimization:
These options can be used to optimize the performance of ghauri
--threads THREADS Max number of concurrent HTTP(s) requests (default 1)
Injection:
These options can be used to specify which parameters to test for,
provide custom injection payloads and optional tampering scripts
-p TESTPARAMETER Testable parameter(s)
--dbms DBMS Force back-end DBMS to provided value
--prefix Injection payload prefix string
--suffix Injection payload suffix string
--safe-chars Skip URL encoding of specific character(s): (e.g:- --safe-chars="[]")
--fetch-using Fetch data using different operator(s): (e.g: --fetch-using=between/in)
Detection:
These options can be used to customize the detection phase
--level LEVEL Level of tests to perform (1-3, default 1)
--code CODE HTTP code to match when query is evaluated to True
--string String to match when query is evaluated to True
--not-string String to match when query is evaluated to False
--text-only Compare pages based only on the textual content
Techniques:
These options can be used to tweak testing of specific SQL injection
techniques
--technique TECH SQL injection techniques to use (default "BEST")
--time-sec TIMESEC Seconds to delay the DBMS response (default 5)
Enumeration:
These options can be used to enumerate the back-end database
management system information, structure and data contained in the
tables.
-b, --banner Retrieve DBMS banner
--current-user Retrieve DBMS current user
--current-db Retrieve DBMS current database
--hostname Retrieve DBMS server hostname
--dbs Enumerate DBMS databases
--tables Enumerate DBMS database tables
--columns Enumerate DBMS database table columns
--count Retrieve number of entries for table(s)
--dump Dump DBMS database table entries
-D DB DBMS database to enumerate
-T TBL DBMS database tables(s) to enumerate
-C COLS DBMS database table column(s) to enumerate
--start Retrieve entries from offset for dbs/tables/columns/dump
--stop Retrieve entries till offset for dbs/tables/columns/dump
--sql-shell Prompt for an interactive SQL shell (experimental)
Example:
ghauri -u http://www.site.com/vuln.php?id=1 --dbs
四、其它
法律免责声明
未经双方事先同意,使用Ghauri攻击目标是非法的。
最终用户有责任遵守所有适用的地方、州和联邦法律。
开发者不承担任何责任,也不对本程序造成的任何误用或损坏负责。
待办工作
- 添加对内联查询的支持。
- 添加对基于Union的查询的支持
为什么选择 Ghauri
就连 Stamparam 也承认了Ghauri,在推特上将其描述为“内部重写”,强调了其内部机制的重要性。
例如,您可以将易受攻击的HTTP请求保存到文件(身份验证后的SQLi),并使用-r
开关将其提供给Ghauri和SQLMap。结果不言自明,无需自定义配置。
Ghauri以类似浏览器的方式运行,并采用自己独特的方法,自动切换到不同的渗透技术和旁路。同样,这不是一个直接的比较,因为Ghauri仍然有许多功能需要实现,而SQLMap已经功能丰富。然而,Ghauri始终如一地执行所需的任务。
自从开发这个工具以来,我很少使用SQLMap,除了少数情况下Ghauri仍在改进。
我鼓励你亲自尝试一下。谢谢你。
2025-01-10(六)