概述#
gobuster 这款工具个人主要用来做目录扫描,平常也用的比较少,用的比较多的是ffuf,后面也会总结下 ffuf 工具。
gobuster 是一款用 go 语言写的目录扫描、DNS 和 vhost 暴力破解工具,gobuster 支持多种模式,在使用前根据使用目的选择不同的模式,扫描模式可以设置多种类型,dir、dns、s3、gcs、vhost、fuzz、tftp 等。
模式如下:
模式 | 描述 |
---|---|
dir | 网站目录 / 文件暴力破解 |
dns | dns 子域名爆破 |
vhost | 虚拟主机爆破 |
fuzz | 爆破指定的 FUZZ 关键字 |
s3 | 枚举开放的 s3 buckets |
gcs | 枚举 google cloud buckets |
tftp | 枚举 tftp 文件 |
- 项目地址
- 安装
设置了 go 环境直接安装
go install github.com/OJ/gobuster/v3@latest
如果想查看帮助文档,可以在命令行下指定不同的模式查看不同的文档。
gobuster dir -h
gobuster dns -h
dir 模式#
- 基础用法
gobuster dir -u "http://example.com/" -w /Users/lca/pentesting/web-basic/p12-字典收集/fuzz1.txt
dir 模式一些常用的设置选项
-c: 指定 cookie 扫描,扫描认证后台
-x: 指定扫描文件后缀,如 php,jsp,asp
-m: 指定 http 请求方法
-b: 指定不需要的状态码,默认过滤 404 状态码
-s: 只接受特定 http 状态码
-u: 指定目标 url
-w: 指定字典文件
-q: 静默模式
-t: 指定扫描线程,默认是 10 个线程
-f: 每个 url 后面强制接/
--wildcard: 发现通配符时强制扫描,这个参数告诉 gobuster 应该如何处理响应中的通配符或不完整的响应,如遇到 404 页面是否继续扫描等,开启后,遇到这种 404,403 的状态码就会强制扫描,保证扫描的完整性和准确性
-exclude-length ints: 排除指定长度的内容
-r: 跟随重定向
-e: 扩展模式,打印完整的 URL
-k: 跳过 TLS 证书验证
如下:
- 扫描目标网站 mysite.com,指定 cookie 进行登录扫描,url 后缀是 php,html,50 个线程,字典文件为 common-files.txt 。
gobuster dir -u https://mysite.com/ -c 'session=123456' -t 50 -w common-files.txt -x .php,.html
- 使用 --wildcard 参数强制扫描,过滤 301,401,403,404,500,扫描线程为 20
gobuster dir -u https://mysite.com/ -w common-files.txt --wildcard -b 301,401,403,404,500 -t 20
gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://mysite.com/ -f -t 200
dns 模式#
dns 模式用来枚举目标子域名
- 基础用法
gobuster dns -d mysite.com -w ~/wordlists/subdomains.txt
- 常用的选项参数
-d: 指定域名
-i: 显示 ip 地址
--wildcard: 通 dir 模式,强制扫描通配符
-t: 指定扫描速度
vhost 模式#
vhost 模式是一种用于模拟虚拟主机攻击的模式,它可以帮助我们在不知道 Web 应用程序所有可能的虚拟主机的情况下,枚举目标网站上存在的虚拟主机。
这个模式在玩htb的时候遇到的比较多。
gobuster vhost -w /usr/share/wordlists/subnames.txt -u http://shoppy.htb
同时在此模式下指定 dir 可以进行目录扫描。
gobuster vhost dir -u shoppy.htb -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -t 150
fuzz 模式#
fuzz 模式可以用来扫描一些 url 的参数,如有个 url 如下:http://example.com/about.php?id=1,需要枚举 id 参数,那么可以通过 fuzz 模式进行参数枚举,id 替换成 FUZZ。
gobuster fuzz -u http://example.com/about.php?FUZZ=1 -w parameter-names.txt
其他模式#
用的比较少,就简单的列举写使用方式
- s3
gobuster s3 -w bucket-names.txt
- gcs
gobuster gcs -w bucket-names.txt
- tftp
gobuster tftp -s tftp.example.com -w common-filenames.txt
@hacking articles上有个关于 gobuster 的思维导图。