HT1136 DNS枚举工具 gobuster

本文共有4153个字,关键词:资产信息收集资产收集DNS枚举

HT1001 系列是信安之路推出的黑客工具使用系列,结合使用场景来对安全工具进行测试总结,并通过实战的方式介绍各类开源工具的功能和价值,后续完整内容将发布在信安之路的知识星球和成长平台,部分内容会通过信安之路公众号分享。

gobuster 可以枚举网站的 URLs(目录和文件)、枚举 DNS 子域名、枚举目标 web 服务器的虚拟主机、公开的 Amazon S3 存储桶。

该工具是使用 Go 语言编写,项目地址:

https://github.com/OJ/gobuster

release 版有多个,也可以自行编辑,直接下载地址:

https://github.com/OJ/gobuster/releases

1.png

在使用 go 语言编写的程序时,如何编译使用也是比较关键的,否则,如果人家未提供编译好的 release 版本,我们该如何使用?接下来我们来探索下如何将该工具源码编译成我们需要的版本。

编译安装

Linux 环境

首先安装 go 的编译环境,该工具所需 go 环境版本不低于 1.16,安装文档:

https://golang.org/doc/install

安装方式文档中写的比较清楚,跟着步骤走就行:

2.png

安装完成之后,使用命令 go version 查看版本:

3.png

安装编译这个软件有两种方式,一种是通过 go 直接远程加载安装,一种是通过源码编译安装,首先使用第一种远程安装的方式,安装命令:

go install github.com/OJ/gobuster/v3@latest

4.png

安装完成之后,可以在目录 /root/go/bin/ 下找到该软件。可以设置环境变量,直接执行该命令:

export PATH=$PATH:/root/go/bin

5.png

通过源码编译的方式,命令如下:

git clone https://github.com/OJ/gobuster && cd gobuster && go get && go build

6.png

如果想把生成的二进制文件转移到 $GOPATH/bin 目录下,可以使用 go install 命令,最终的效果跟远程安装是一样的。

Windows 环境

首先也需要安装 go 的编译环境,源码编译的步骤也一样,下面做一下测试,下载安装包:

https://golang.org/dl/go1.16.4.windows-amd64.msi

双击执行即可,安装完成之后,安装路径为:

C:Program FilesGo\

打卡一个 cmd 窗口,执行 go 验证是否安装成功:

7.png

由于国内网络的问题,在线安装,连接服务器超时,Windows 下的编译安装就不演示了,直接下载 Release 版来用用:

8.png

Go 语言编写的项目编译安装就分享到这,Windows 版的程序大小近 8M,还是比较大的,如果在本地使用没啥问题,如果要上传到目标内网,显得有些大,不过 go 的跨平台能力还是强的,接下来看看这个工具如何使用。

使用测试

首次使用,运行 help 命令,查看帮助信息:

gobuster help

9.png

从命令提示中可以看出有几个模块:dir、dns、fuzz、s3、vhost,这几个是具体的功能,如果想要查看某个模块如何使用,则需使用如下命令查看帮助信息,以 dns模块为例:

gobuster dns --help

10.png

使用这个模块需要指定 -d参数,设置目标域名,如果需要指定用于解析 DNS 的域名,需要用到 -r参数,-c 参数显示 CNAME,-i 参数显示 IP 地址,指定字典文件需要用到 -w 参数,下面尝试试用一下:

gobuster dns -d xazlsec.com -c -i -w wordlist.txt

11.png

指定 DNS 服务尝试一下:

gobuster dns -d xazlsec.com -c -i -w wordlist.txt -r 8.8.8.8

12.png

可以使用 -t 参数指定暴力枚举的线程数,从而提升 DNS 枚举的速度。

本次主要分享的内容是关于 DNS 枚举的,像目录枚举、FAZZ 和 s3 扫描等功能,后续遇到相关场景在进行测试分享,最后测试一下 vhost 模块:

gobuster vhost --help

13.png

这个模块的主要功能是枚举某个服务上部署的所有虚拟主机,其原理是通过构造 HTTP 请求头,将字典中的域名设置到 HTTP 请求头到 HOST 字段,然后通过 IP 请求网站,如果是该域名的虚拟主机,那么请求会返回该域名下的网站内容,如果不是,则返回通过 IP 访问获得的资源而非域名下的资源。

比如下图,目标地址设置为 IP,HOST 字段设置为正常域名,结果返回也正常:

14.png

如果我们将 HOST 字段设置为一个不存在的域名,看看效果:

15.png

我们发现显示的内容跟之前不一样了,这样显示的内容是直接访问 IP 返回的默认网站信息,当我们在此设置一个存在的网站域名时:

16.png

结果显示确实是 tools.xazlsec.com 域名下的内容,这个功能的原理就是这样,接下来测试一下工具:

gobuster vhost -w wordlist.txt -u https://47.94.225.171/ -k

17.png

因为 IP 访问默认是 edu.xazlsec.com 的内容,所以枚举的结果只显示了 www 和 tools 网站的信息,参数方面 -u 设置要访问的 URL 地址,也就是用 IP 组成的地址,-w参数指定域名字典,需要完整域名,-k是跳过证书验证,因为访问 HTTPS 的网站,由于证书不匹配所以会报错,用这个参数,就可以解决报错的问题。

这个工具的使用就分享到这里,其他模块的使用在后续的场景中提及,有任何问题都可以进行交流,下期再见!

640

「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」

信安之路工具站

(๑>ڡ<)☆谢谢老板~

使用微信扫描二维码完成支付

版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。