Gobuster工具详解

news2024/9/22 19:30:05

目录

Gobuster工具介绍

主要特性

支持模式及全局参数列举

安装

使用

Dir模式

DNS模式

Vhost模式

fuzz模式

TFTP模式

S3、gcs模式

字典

docker运行gobuster


Gobuster工具介绍

Gobuster 是一款用于在Web应用程序中进行目录和文件爆破的开源工具。它通过尝试在目标网站上枚举常见路径和文件,以便发现潜在的敏感目录和文件。Gobuster支持多种协议和自定义字典,具有高度可定制性。

主要特性

  1. 目录和文件爆破: Gobuster 主要用于目录和文件爆破,通过尝试访问网站上的不同路径,来发现隐藏的目录和文件。
  2. 多种扫描模式: Gobuster 提供不同的扫描模式,包括目录(dir)扫描、子域名(dns)扫描、VHost(vhost)扫描等。
  3. 灵活的字典支持: 用户可以使用自定义字典文件,也可以选择使用 Gobuster 默认提供的一些内置字典文件。这使得工具非常灵活,适应不同的测试场景。
  4. 支持HTTP和HTTPS: Gobuster 可以在 HTTP 和 HTTPS 协议上执行目录和文件爆破。
  5. 线程支持: 工具支持多线程,可以加速扫描过程,提高效率。

支持模式及全局参数列举

dir - 经典目录暴力破解模式
dns - DNS子域暴力破解模式
s3 - 枚举打开的 S3 存储桶并查找是否存在和存储桶列表
gcs - 枚举打开的谷歌云存储桶
vhost - 虚拟主机暴力破解模式(与DNS不同!)
fuzz -使用模糊测试模式。替换URL、Headers和请求体中的关键词FUZZ
tftp - 暴力破解 tftp 文件
--debug                                              打开debug模式(调试模式)
--delay duration          每个线程在请求之间等待的时间(举例:--delay 1500ms)
--no-color                                                      禁用颜色输出
--no-error                                                        不显示错误
-z,--no-progress                                                 不显示进度
-o,-output string                                             输出结果到文件
-p,--pattern string                                        包含替换模式的文件
-q,--quiet                                      不打印banner信息和其他无用信息
-t,--threads int                                        指定线程数量(默认10)
-v,--verbose                                    详细输出日志(错误信息也会展示)
-w,--wordlist string                   指定字典路径,指定-可以通过标准输入中读取
--wordlist-offset int           从字典的指定位置继续(默认偏移量为0,从第一个开始)

安装

它的安装可以有很多种方法,这里需要保证已经安装了Go环境(版本最低1.19)

GitHub链接:GitHub - OJ/gobuster: Directory/File, DNS and VHost busting tool written in Go

这里已经安装过了go环境

直接使用命令安装:go install github.com/OJ/gobuster/v3@latest

安装完成后,他在你的go目录下

此时执行gobuster version如果报错应该是 $GOPATH/bin 目录没有添加到你系统的 PATH 环境变量中,可以先执行echo $PATH,查看一下环境变量的配置,如果没有的话,就执行export PATH=$PATH:$GOPATH/bin

添加完环境变量后就可以正常执行gobuster命令了

但是这样只能将环境变量的修改应用于当前的 shell 会话。如果打开新的终端窗口,它将不会保留。

因此需要将该命令添加到你的shell配置文件中,首先先看你使用的shell是bash还是zsh

echo $0

klai是zsh因此配置文件是~/.zshrc

echo 'export PATH=$PATH:/root/go/bin' >> ~/.bashrc
source ~/.bashrc
echo 'export PATH=$PATH:/root/go/bin' >> ~/.zshrc
source ~/.zshrc

修改完配置文件后,这个环境变量也就只有root用户能够使用

所以在使用这个工具的时候也需要切换到root权限去使用(不过这个跟你go目录在哪个路径有关,我这里是因为把go放在了root目录下。)

使用

Dir模式

gobuster help dir 查看dir模式下的特定参数

-f,--add-slash                                        为每个请求添加/
    --client-cert-p12 string                           用于配置TLS客户端证书的p12文件
    --client-cert-p12-password string                  p12文件的密码
    --client-cert- PEM string                          可选TLS客户端证书的PEM格式公钥
    --client-cert-pem-key string                       可选TLS客户端证书的PEM格式私钥(这个密钥不需要密码)
-c,--cookies string                                   请求使用的cookie
-d,--discovery -backup                                通过追加多个备份扩展名搜索备份文件
    --exclude-length string                            排除以下内容长度(完全忽略状态)可以用逗号分隔多个长度,它也支持像203-206这样的范围
-e,--expanded                                         扩展模式,打印完整的url
-x,--extensions string                                要搜索的文件扩展名
-X,--extensions-file string                           从文件中读取要搜索的文件扩展名
-r,--Follow -redirect Follow                          重定向
-H,--headers stringArray                              指定 HTTP 标头,-H 'Header1: val1' -H 'Header2: val2'
-h,--help                                             dir帮助
    --hide -length                                     在输出中隐藏正文的长度
-m, --method string                                    使用以下HTTP方法(默认"GET")
    --no-canonicalize-headers                          不规范化HTTP头名称。如果设置的报头名称按原样发送。
-n,--no-status                                        不打印状态码
-k,--no-tls-validation                                跳过TLS证书验证
-P,--password string                                  基本认证密码
    --proxy string                                     请求使用的代理[http(s)://host:port]或[socks5://host:port]
    --random-agent                                     使用随机的User-Agent字符串
    --retry                                            应该在请求超时时重试
    --retry-attempts int                               请求超时时重试的次数(默认为3)
-s,--status-codes                                     字符串正状态码(如果设置了status-codes-blacklist,将被覆盖)。也可以处理类似200,300-400,404的范围。
-b,--status-codes-blacklist string                    负面状态码(如果设置了,将覆盖状态码)。也可以处理类似200,300-400,404的范围。(默认值“404”)
    --timeout durationHTTP                             超时时间(默认为10秒)
-u,--url string                                       目标url
-a,--useragent string                                 设置用户代理字符串(默认为"gobuster/3.6")
-U,--username string                                  基本身份验证用户名

gobuster dir -u https://buffered.io/ -w dir.txt

这里没有指定-t也就是线程,那么默认也就是10线程

gobuster dir -u https://buffered.io/ -w dir.txt --no-error

加上--no-error参数可以不显示错误

gobuster dir -u https://mysite.com/path/to/folder -c 'session=123456' -t 50 -w common-files.txt -x .php,.html

也可以利用-c参数指定cookie,使用-x参数指定搜索的文件扩展名

DNS模式

gobuster help dns 查看dns模式下的特定参数

-d,--domain string                          目标域
-h,--help                                   DNS帮助
-r,--resolver string                        使用自定义DNS服务器(格式server.com或server.com:端口)
-c,--Show - CNAME                           显示CNAME记录(不能与-i选项一起使用)
-i,--Show -ips                              显示IP地址

DNS解析超时时间(默认为1秒)

——wildcard Force发现通配符后继续操作

gobuster dns -d xiaodi8.com -w subdomains-top100000.txt -t 20

这里使用dns模式,并且将线程设置成20

gobuster dns -d xiaodi8.com -w subdomains-top100000.txt -t 20 -i

使用-i参数可以显示IP

Vhost模式

gobuster的vhost模式用于枚举虚拟主机(Virtual Host),即通过尝试不同的主机名来发现服务器上的其他主机。这可以帮助发现同一IP地址下的其他网站或服务

gobuster help vhost 查看vhost模式下的特定参数

--append-domain                       从URL添加主域名到wordlist中的单词。否则,完全限定域需要在词表中指定。
-c,--cookies string                  请求使用的cookie
    --domain string                   使用IP地址作为URL时附加的域。如果是空的,你指定一个基于域名的URL,从URL中提取主机名
    --exclude-length                  整数排除下面的内容长度(完全忽略状态)。多次供应以排除多个尺寸。
-r,--Follow -redirect Follow         重定向
-H,--headers stringArray             指定 HTTP 标头,-H 'Header1: val1' -H 'Header2: val2'
-h,--help                            vhost帮助
-m, --method string                   使用以下HTTP方法(默认"GET")
-k,--no-tls-validation               跳过TLS证书验证
-P,--password string                 基本认证密码
    --proxy string                    请求使用的代理[http(s)://host:port]
    --random-agent                    使用随机的User-Agent字符串
    --retry                           应该在请求超时时重试
    --retry-attempts int              请求超时时重试的次数(默认为3)
		--timeout duration                HTTP超时时间(默认为10秒)
-u,--url string                      目标url
-a,--useragent string                设置用户代理字符串(默认为"gobuster/3.6")
-U,--username string                 基本身份验证用户名

gobuster vhost -u http://www.xiaodi8.com -w parameter.txt

我这里一个也没爆出来

放一张官方的图

fuzz模式

gobuster help fuzz 查看fuzz模式下的特定参数

-B,--body                                        请求体
    --client-cert-p12 string                      用于配置TLS客户端证书的p12文件
    --client-cert-p12-password string             p12文件的密码
    --client-cert- PEM string                     可选TLS客户端证书的PEM格式公钥
    --client-cert-pem-key string                  可选TLS客户端证书的PEM格式私钥(这个密钥不需要密码)
-c,--cookies string                              请求使用的cookie
    --exclude-length string                       排除以下内容长度(完全忽略状态)可以用逗号分隔多个长度,它也支持像203-206这样的范围
-b,--excludestatuscodes                          字符串排除的状态码。也可以处理类似200,300-400,404的范围。
-r,--Follow -redirect                            重定向
-H,--headers stringArray                         指定 HTTP 标头,-H 'Header1: val1' -H 'Header2: val2'
-h,--help                                        fuzz帮助
-m, --method string                               使用以下HTTP方法(默认"GET")
    --no-canonicalize-headers                     不规范化HTTP头名称。如果设置的报头名称按原样发送。
-k,--no-tls-validation                           跳过TLS证书验证
-P,--password string                             基本认证密码
    --proxy string                                请求使用的代理[http(s)://host:port]或[socks5://host:port]
    --random-agent                                使用随机的User-Agent字符串
    --retry                                       应该在请求超时时重试
    --retry-attempts int                          请求超时时重试的次数(默认为3)
    --timeout durationHTTP                        超时时间(默认为10秒)
-u,--url string                                  目标url
-a,--useragent string                            设置用户代理字符串(默认为"gobuster/3.6")
-U,--username string                             基本身份验证用户名

gobuster fuzz -u https://example.com?FUZZ=test -w parameter.txt

TFTP模式

gobuster help tftp 查看tftp模式下的特定参数

-h,--help                             TFTP帮助
-s,--server string                    TFTP目标服务器
--timeout duration                     TFTP超时时间(默认1秒)

gobuster tftp -s www.aqww3.xyz -w tftp.txt

这边没有现成的TFTP服务器去扫,所以没东西。

S3、gcs模式

这两个模式一个是枚举能访问的S3储存桶,一个是枚举谷歌云储存桶。这里暂时没用到就没做,后续碰到了会补充。

字典

由于gobuster没有提供字典,所以将我本次用到的字典分享出来:

链接:百度网盘 请输入提取码

提取码:6666

GitHub上面还有很多字典,这里分享几个

https://github.com/danielmiessler/SecLists

https://github.com/3had0w/Fuzzing-Dicts

https://github.com/fuzzdb-project/fuzzdb

docker运行gobuster

这个只需要下载一个gobuster的镜像,就可以直接使用,还是很方便的

这个镜像就不要去docker search gobuster去仓库里面找了,建议去GitHub上面下载最新版的镜像

docker pull ghcr.io/oj/gobuster:latest

直接拉镜像

然后就可以直接使用了

docker run --rm -v "/usr/share/wordlists:/wordlists" ghcr.io/oj/gobuster dir -h

--rm:这个参数表示当容器退出后立即删除容器。这有助于保持系统的清洁,避免产生大量无用的容器。

-v参数可以将/usr/share/wordlists挂载到docker中的wordlists,建议将字典目录挂载过去,然后就可以直接使用了

这里就可以直接使用这个镜像去做目录爆破了,这个相当于先利用这个镜像生成个容器,然后将字典目录挂载到这个容器中,然后等目录爆破结束,这个容器也随之删除。

docker run --rm -v "/usr/share/wordlists:/wordlists" ghcr.io/oj/gobuster dir -u http://www.xiaodi8.com -t 20 --no-error -w /wordlists/dir.txt

这里使用的dir模式,其他模式也是一样的使用方法。

注:没有看到gobuster有递归爆破的功能,如果想使用递归爆破,可以使用dirsearch工具,这个在我主页也有介绍该工具的使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1325228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【超详细】基于单片机控制的十字道路口交通灯控制

目录 最终效果 一、设计任务 二、设计报告 1 设计说明 1.1功能分析 1.1.1整体系统功能分析 1.1.2显示状态功能分析 1.1.3设置状态功能分析 1.1.4紧急状态功能分析 1.2方案比选 1.2.1车辆LED数码管倒计时显示板块 1.2.2车辆信号灯显示板块 1.2.3行人信号灯显示板块 …

JavaWeb笔记之前端开发CSS

一 、引言 1.1 CSS概念 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页&…

Open5GSUeRANSim2:对安装在同一个VM上的OPEN5GS和UERANSIM进行配置和抓取wireshark报文

参考链接: Configuring SCTP & NGAP with UERANSIM and Open5GS on a Single VM for the Open5GS & UERANSIM Series https://www.youtube.com/watch?vINgEX5L5fkE&listPLZqpS76PykwIoqMdUt6noAor7eJw83bbp&index5 Configuring RRC with UERANSI…

YOLOv5性能评估指标->mAP、Precision、Recall、FPS、Confienc (讲解论文关注的主要指标)

简介 这篇博客,主要给大家讲解我们在训练yolov5时生成的结果文件中各个图片及其中指标的含义,帮助大家更深入的理解,以及我们在评估模型时和发表论文时主要关注的参数有那些。本文通过举例训练过程中的某一时间的结果来帮助大家理解&#xf…

LeetCode:162. 寻找峰值、1901. 寻找峰值 II(二分 C++)

目录 162. 寻找峰值 题目描述: 实现代码与解析: 二分 原理思路: 1901. 寻找峰值 II 题目描述: 实现代码与解析: 二分 原理思路: 162. 寻找峰值 题目描述: 峰值元素是指其值严格大于左…

持续集成交付CICD:HELM 自动化完成前端项目应用发布与回滚

目录 一、实验 1.环境 2. GitLab 共享库新建HELM CI流水线 3.Jenkins新建HELM CI流水线 5.Jenkins构建前端项目 6.GitLab 共享库新建HELM CD流水线 7.Jenkins新建HELM CD流水线 8.HELM完成前端项目应用发布与回滚 9.Jenkins再次构建前端项目 10.HELM再次完成前端项目…

在灾难推文分析场景上比较用 LoRA 微调 Roberta、Llama 2 和 Mistral 的过程及表现

引言 自然语言处理 (NLP) 领域的进展日新月异,你方唱罢我登场。因此,在实际场景中,针对特定的任务,我们经常需要对不同的语言模型进行比较,以寻找最适合的模型。本文主要比较 3 个模型: RoBERTa、Mistral-7B 及 Llama-…

HP服务器idrac设置以及系统安装

HP服务器idrac设置以及系统安装 一、设置管理口的地址和密码1、HP服务器重新界面选择"F9"进入BIOS,设置iLo5(idrac)的IP和用户名密码。2、选择"系统配置"。3、选择"iLO 4"配置程序。4、网络选项是设置idrac管理口的地址,设…

使用C语言实现文件的拷贝——底层内存分析

使用C语言实现文件的拷贝 本文主要涉及sprintf()函数的讲解以及系统IO与标准IO的区别和一个实例使用C语言实现文件的拷贝,在最后还深度刨析了文件拷贝的底层原理。 文章目录 使用C语言实现文件的拷贝一、 sprintf()函数1.1 sprintf ()函数的参…

Java版直播商城免 费 搭 建:电商、小程序、三级分销及免 费 搭 建,平台规划与营销策略全掌握

随着互联网的快速发展,越来越多的企业开始注重数字化转型,以提升自身的竞争力和运营效率。在这个背景下,鸿鹄云商SAAS云产品应运而生,为企业提供了一种简单、高效、安全的数字化解决方案。 鸿鹄云商SAAS云产品是一种基于云计算的软…

Netty Review - ObjectEncoder对象和ObjectDecoder对象解码器的使用与源码解读

文章目录 概述ObjectEncoderObjectDecoder Code源码分析ObjectEncoderObjectDecoder 小结 概述 Netty是一个高性能、异步的网络应用程序框架,它提供了对TCP、UDP和文件传输的支持。在Netty中,数据的发送和接收都是以字节流的形式进行的,因此需…

从实践角度优化数据库设计:深入解析三范式的应用

总述 第一范式(1NF):要求关系模式中的每个属性都是不可分的数据项,即属性具有原子性。第二范式(2NF):在满足1NF的基础上,要求关系模式中的所有非主属性都完全函数依赖于整个候选键(或主键)。第三范式(3NF):在满足2NF的基础上,要求关系模式中的每个非主属性都不传…

LVS最终奥义之DR直接路由模式

1 LVS-DR(直接路由模式) 1.1 LVS-DR模式工作过程 1.客户端通过VIP将访问请求报文(源IP为客户端IP,目标IP为VIP)发送到调度器 2.调度器通过调度算法选择最适合的节点服务器并重新封装数据报文(将源mac地址改为调度器的mac地址&am…

centos(linux)安装jenkins

官网:https://pkg.jenkins.io/redhat/ 安装官网进行操作: sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key若出现如下错误: …

JavaScript基础函数+对象+继承

目录 1.创建函数 2.函数分类 2.1带参数函数 2.2匿名函数 2.3嵌套函数 2.4立即执行函数 ES6特有的箭头函数 2.5对象中的函数 3.this对象 4.有参构造函数创建对象 5.原型 prototype 6.函数应用(继承) 6.1原型链继承 6.2构造继承 6.3组合继承&…

Observability:捕获 Elastic Agent 和 Elasticsearch 之间的延迟

在现代 IT 基础设施的动态环境中,高效的数据收集和分析至关重要。 Elastic Agent 是 Elastic Stack 的关键组件,通过促进将数据无缝摄取到 Elasticsearch 中,在此过程中发挥着至关重要的作用。 然而,显着影响此过程整体有效性的关…

vue3使用mock模拟后端接口

安装mock axios yarn add mock yarn add axios 新建在src/mockdata/automenu.js 模拟后端的json数据格式 import Mock from mockjs Mock.mock(/menu,get,{status: 200,menuList: [{id : 1,iconCls: "fa fa-window",name: 系统管理,url: /},{id: 2,icon: icon-j…

智能优化算法应用:基于龙格-库塔算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于龙格-库塔算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于龙格-库塔算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.龙格-库塔算法4.实验参数设定5.算法结果…

CSS操纵元素的禁用和启用

通常表单控件都会有属性readonly、disabled对元素进行只读、禁用等操作。 而有时候我们想要div也达到类似效果,可以用CSS样式pointer-events: none进行控制。 科普知识 CSS样式的pointer-events: none用于控制一个元素能否响应鼠标操作。当该属性设置为none时&am…

【Docker-4】Docker 命令

1、镜像管理命令 docker images #查看本机镜像 [rootdocker-0001 ~]# docker imagesdocker search 镜像名称 #从官方仓库查找镜像 [rootdocker-0001 ~]# docker search busybox #需要联网,本次不用操作docker pull 镜像名称:标签 #下载镜像 [rootdocke…