Loading

目录扫描哪家强?-Dirbuster-使用教程-2024

一、Dirbuster介绍

dirbuster是一个网站内容扫描器,它认为扫描工具好不好取决于它的字典好不好,它使用自己在网络上爬取收集的9个字典文件来工作,相信它应该很牛。这款工具在kali系统上已经内置。

参考文章:dirbuster | Kali Linux Tools

二、Dirbuster使用

1、本地Centos7环境下的实验

(一)、靶场环境

系统环境信息。

系统版本:"CentOS Linux release 7.6.1810 (Core)" #cat /etc/redhat-release
IP地址:"192.168.225.60" #ifconfig
Lampp版本:"XAMPP for Linux 5.6.40-1" #/opt/lampp/lampp status
Web服务根目录:"/opt/lampp/htdocs" #cat /opt/lampp/etc/httpd.conf | grep DocumentRoot

网站内容信息。

image-20240530165836373

(二)、基本使用

(1)、设置代理

为了能够直观的看到扫描流量,笔者为dirbuster配置了一个指向的burp代理。

image-20240603165340972

hostport中填上需要代理的信息。

image-20240603165412275

(2)、基本请求

笔者创造了一个自定义的字典,字典内容如下。

index
favicon

设置好参数进行扫描。

image-20240603170512404

扫描结果如下,可以看到dirbuster也在一开始发送了两个自己的请求,而后才发送的是我字典中的请求,由于我使用的是字典模式,所以它在我的字典后面添加了一个斜杠。

image-20240603171953003

(3)、User-Agent头设置

并且在http的流量特征中我们发现dirb添加了自己的user-agnet头部信息,这个信息可以在下图位置修改,这里就是笔者上面修改代理的地方。

image-20240603172040867

(4)、爬虫模式

我会很好奇上面的递归爆破字段是什么效用,于是我向字典中添加dashboard字段,以便它真的能扫描出来一些目录。

新的字典文件。

dashboard

奇怪的事情发生了,dirbuster开始自动发送一些不存在我字典文件中的请求。

image-20240603172820316

我怀疑这可能是因为dirbuster还使用到了爬虫机制,来获取文件中的链接,我们查看dashboard的主页,大概爆破出来的就是这些链接。

image-20240603172955713

并且dirbuster还支持树状图浏览文件,这无疑比旁边的dirb方便很多,而且dirbuster还是ui界面,用起来很方便。

image-20240603173107320

为了证明它是不是使用的爬虫模式,笔者最终找到这个按钮,并关闭它,就消失了爬虫模式,变成和dirb相同的傻瓜模式了(我好喜新厌旧555....)。

image-20240603173555054

(5)、递归模式

让我们再次尝试递归模式是什么意思。

修改字典为下。

dashboard
index
favicon

这是非递归模式的请求流量。

image-20240603173807272

这是递归模式下的请求流量,很明显,这里的递归和dirb里面的是一个意思,就是只要有一个字典值相应成功了,就把所有字典值添加在这个目录后面再爆破一遍。

image-20240603173914572

(6)、文件爆破

使用刚才的字典文件,且后缀名指定为php,注意,文件后缀名不用写.php,只写php即可。也可也使用use balnk extension,不添加后缀名进行爆破。

image-20240603174827416

使用上面的参数进行扫描,流量如下,后缀名php被完整的添加到字典文件后面。

image-20240604091709615

如果我们再勾选上面的使用空白后缀名的功能的话,扫描器就会多发送一组不带后缀名的请求。

image-20240604091917269

流量是这样的。

image-20240604092048599

同时使用两种不同的后缀,这会大大增加我们爆破的成功率。

(7)、定义文件扫描范围

这里还增加一个文件扫描范围,只要我输入任意字符,它就会扫描指定目录下的文件。

image-20240604092338701

image-20240604092409218

(8)、请求方法

请求方法有两种模式,一种是只使用get请求,另外一种是gethead两种来回切换。

那么headget请求的差别是什么呢?

get请求获取响应的所有内容,而head请求只获得响应头。举例来说,get去商店买电视,把价格参数说明书和电视全都拿回来。而head只拿回价格参数说明书。

我想,使用head是为了节省时间吧,但我不明白它自动切换的机制是什么。

于是笔者设置了一个实验,在目录扫描中开启爬虫模式,然后分别使用gethead,看看两者的区别。

[一]、Only get模式

image-20240604111422473

[二]、Auto Switch模式

image-20240604111850739

对比两个扫描的结果并没有什么差别,但是流量差别会很大,这里笔者提出一个猜想,在autoswitch模式,dirbuster会先使用head去探测文件是否存在,而后使用get请求再去请求,为了测试这个效果,我们修改字典文件如下,并且只进行文件爆破,

a.php #不存在的文件,应该只会head请求
b.php #不存在的文件,应该只会head请求
.htaccess #存在的文件,应该先发head请求,再发get请求
index.js #存在的文件,应该先发head请求,再发get请求
index.jsp #存在的文件,应该先发head请求,再发get请求

上面的字典文件是根据服务器上的目录来做的。

image-20240604112106732

下面的流量证实了我们的猜想。

image-20240604112606915

并且我们明显看到headget请求的区别,以.htaccess文件为例子,在head的响应中长度只有292,并且没有标题,虽然响应码是403我们也知道这是什么意思。在get响应中包的长度就达到了1340,返回了所有的html信息。

image-20240604112924992

所以在这里推荐使用auto模式,效率上更快速一些,如果在爬虫模式下,每个无用的404都要被解析的话,可能会浪费很多时间,虽然不知道dirbuster是否会解析404中的html链接数据,但从理论上来说,auto模式更快一些,这里就不测试了,因为速度现在不是我们最关心的问题。

(9)、线程

这玩意就是让你扫描的更快,可以理解为一个线程就是一个小人在帮你扫描,十个线程就是十个小人在帮你扫描,关于线程和进程的概念我已经有点模糊了,所以我的解释可能不太正确,但是这个功能就是让你的扫描更快。

线程越多,扫描越快。

image-20240604114254155

(10)、字典

前面说到dirbuster弄了很多字典,这些字典存放在哪里呢,点开字典选项旁边的list info就会得到完整的信息,可以根据情况按需选择。

/usr/share/dirbuster/wordlist

image-20240604115608201

image-20240626153405657

(11)、Fuzz

还有fuzz模式可以在字典前后添加任意参数来扫描。

但是fuzz其实可以用burp来做更合适,burp有更多功能。

不了解什么是fuzz的同学可以参考这篇文章。

参考文章:什么是模糊测试(含示例) (freecodecamp.org)

但说实话,笔者到现在没有很分的很清楚fuzz和字典爆破的区别,可能是fuzz的范围更广一些吧。现在一个能接受的解释是,fuzz指的是所有乱七八糟的数据,比如1000个字符那么长的a,或者是100个空格,或者是其他乱七八糟的异形字符串,而

image-20240604120658748

image-20240604120627683

(12)、其他参数设置

此处还有其他options可设置,有我们上文提到的parse html,意思是解析html页面中的链接,说白就是爬虫。

follow redirects,就是说当遇到重定向时会向重定向的网址重新发送请求,这一点比dirb好,它是不会跟随重定向的,也可能是我没找到?

还有debug mode,用来显示详细的dirb工作流程,可以在下图看见普通模式和debug模式的差别。

look&feel是用来给界面换外观的,可见dirbuster设计之用心,太感动了555,好产品给五星。

image-20240604093047859

image-20240604094841311

(13)、高级参数设置

[一]、间隔时间设置

此处设置每秒最多发多少个包。

image-20240604100204061

[二]、头部信息设置

此处设置各种头部信息。

image-20240604101359102

流量显示如下。

image-20240604100634060

还可以设置http认证信息。

image-20240604101454057

在测试时,笔者发现dirbuster并没有在每个请求头中都携带basic认证头,经过一番实验后发现,需要网站开启basic认证之后,dirbuster接收到401的信息,才会在下一次请求中携带basic认证字段。

关于服务器如何开启basic认证,可以参见dirb中的详细说明。

image-20240604103949902

感觉这样有些麻烦,而且浪费我们的时间,如果我们知道网站要认证,那就直接把认证信息带上,不然我们就要花两倍的时间来做同样的事情。

所以笔者的建议是,遇到这样的网站我们直接使用头部信息字段将认证值写入进去,像这样。

image-20240604104349306

这样无论如何它都会携带我们的认证字段了。

(14)、生成报告

扫描结束之后,会有一个report的按钮给我们一份报告,我们来看看这些玩意如何。

image-20240604113402183

image-20240604113311406

生成了四种不同格式的,但是对我来说没什么区别,这个功能可能要和一些支持xmlcsv的分析工具一起使用才好。

image-20240604113534321

个人觉得直接看前面的小目录树就很好,唯一的缺点是小目录树无法保存,但是因为我们吧流量引入到burpsuite上了,所以burp会替我们完成这个工作。

image-20240604113924592

2、反爬和Cookie&Basic认证下的实验

centos7靶场下,我们开启cookiebasic认证以及ua检测。

如何开启这些,详见dirb章节中的设置。

都开启好之后我们使用自定义字典进行扫描,字典内容如下。

a.php
b.php
.htaccess
index.js
index.jsp

扫描参数配置如下,相关的认证头没有配置。

image-20240604152444316

扫描结果如下,非常的不准,因为访问.htaccess.php也遭到403,所以它认为存在这两个文件,并且将.htaccess认定为文件夹。

image-20240604152638484

其他的index.jsindex.jsp由于401,直接就不显示了。

image-20240604152841401

所以说扫描结果不能够全部相信,我们需要观察流量来判断会更准确一些,但是先不管这些,让我们为请求加上应该有的字段再试试。

image-20240604153851394

扫描结果正常,可以扫描出index.js以及index.jsp文件。需要注意的是,有些敏感文件,如.htaccess即使不存在于服务器,也会回显403无权限访问。这可能是因为配置文件中的设置。

image-20240604153829435

三、Dirb实战

1、公网环境下的目录扫描

某个公网环境的根目录下存在这些文件和文件夹。

image-20240603154918177

使用如下配置参数进行扫描,字典文件如下。

favicon.ico
.htaccess
index.js
index
img

扫描结果非常惊人。

image-20240604154750110

我怀疑这一切都是爬虫模式的功劳,让我们关闭爬虫模式重新扫描,果不其然,扫描结果大相庭径。

image-20240604154853070

四、总结

我们了解了dirbuster的各种用法,分别是:

  • 设置代理
  • 设置ua
  • 设置http认证模式
  • 爬虫模式
  • Fuzz模式
  • 文件爆破和目录爆破
  • 线程数设置以及每秒请求包数量限制

还了解了dirbuster的扫描原理:

  • 递归请求文件中的字典
  • 可以跟随重定向
  • 可以爬取返回的html中的链接
  • 可以使用autoswitch模式增加扫描速度

总的来说,当我们使用dirbuster时,我们推荐下面的配置。

image-20240604160830441

并且打开重定向和爬虫。

image-20240604160858290

posted @ 2024-10-10 10:29  南瓜薯仔  阅读(2229)  评论(0)    收藏  举报