在本文中,我们将重点介绍使用Kali Linux工具DIRB的临时目录,并尝试在Web服务器中查找隐藏的文件和目录。
一个路径遍历攻击也被称为“目录遍历”目标访问的文件和目录存储在Web根文件夹之外。通过使用带有“ ..”的序列的引用文件及其变体来操纵变量,或者使用绝对文件路径,可以访问存储在文件系统上的任意文件和目录,包括应用程序源代码,配置,和重要的系统文件。
要求
目标-BWAPP实验室,DVWA实验室,
攻击者– Kali Linux
本文的内容
- DIRB介绍
- 利用多个单词表进行目录遍历
- Dirb的默认工作
- 列举具有特定扩展名列表的目录
- 将输出保存到磁盘
- 忽略不必要的状态码
- 默认工作Vs在警告消息中不停止工作
- 速度延迟
- 不递归(-r)
- 显示不存在页面
- 扩展列表(-X参数)与扩展头(-H参数)
- 不对网址(-t)强制使用结尾的“ /”
- HTTP身份验证(-u用户名:密码)
什么是DIRB?
DIRB是一个Web内容扫描程序。它查找现有的(和/或隐藏的)Web对象。它基本上是通过对Web服务器发起基于字典的攻击并分析响应来工作的。
它带有一组易于使用的预配置攻击词表,但您可以使用自定义词表。此外,DIRB有时可以用作经典的CGI扫描仪,但请记住是内容扫描仪,而不是漏洞扫描仪。
主要目的是帮助进行专业的Web应用程序审核。特别是在与安全性相关的测试中。它涵盖了经典Web漏洞扫描程序未涵盖的一些漏洞。DIRB寻找其他通用CGI扫描程序无法找到的特定Web对象。它既不搜索漏洞,也不搜索容易受到攻击的Web内容。
资料来源:https://tools.kali.org/web-applications/dirb
工具DIRB是内置的Kali Linux。打开终端并键入以下命令以获取软件包中包含的工具的概述:
rb
-a <agent_string>:指定您的定制USER_AGENT。
-c <cookie_string>:为HTTP请求设置cookie。
-f:精细调整NOT_FOUND(404)检测。
-H <header_string>:将自定义标头添加到HTTP请求。
-i:使用不区分大小写的搜索。
-l:找到时打印“ Location”标题。
-N <nf_code>:忽略此HTTP代码的响应。
-o <输出文件>:将输出保存到磁盘。
-p <代理[:端口]>:使用此代理。(默认端口为1080)
-P <proxy_username:proxy_password>:代理身份验证。
-r:不要递归搜索。
-R:交互式递归。(询问每个目录)
-S:静默模式。不要显示经过测试的单词。(用于哑终端)
-t:不要在网址上强制使用结尾的“ /”。
-u <用户名:密码>:HTTP身份验证。
-v:也显示NOT_FOUND页。
-w:不要在警告消息上停止。
-X <扩展名> / -x <扩展名文件>:在每个单词后加上该扩展名。
-z:添加毫秒延迟,以免导致过多的Flood。
利用多个单词表进行目录遍历
上面的攻击通过使用默认的wordlist_files common.txt起作用,但是我们可以更改此单词列表,并可以选择另一个单词列表进行目录遍历。您必须按照以下路径查看所有可用的单词表。
1234 | cd /usr/share/wordlists/dirbls –lacd /usr/share/wordlists/vulnsls -la |
1234 | cd /usr/share/wordlists/dirbls –lacd /usr/share/wordlists/vulnsls -la |
1234 | cd /usr/share/wordlists/dirbls –lacd /usr/share/wordlists/vulnsls -la |
1234 | cd /usr/share/wordlists/dirbls –lacd /usr/share/wordlists/vulnsls -la |
1234 | cd /usr/share/wordlists/dirbls –lacd /usr/share/wordlists/vulnsls -la |
1234 | cd /usr/share/wordlists/dirbls –lacd /usr/share/wordlists/vulnsls -la |
1234 | cd /usr/share/wordlists/dirbls –lacd /usr/share/wordlists/vulnsls -la |
您可以从下面的图像中看到,有很多文本文件作为wordlist。我们可以根据需要使用它们。
Dirb的默认工作
在此攻击中,common.txt被设置为目录遍历的默认单词列表,抗议者可以使用以下命令。打开终端,然后键入以下命令以启动“布鲁塞尔电话簿”攻击。
1 | dirb http://192.168.1.106/dvwa/ |
DIRB使用common.txt文件返回在目标URL中找到的枚举目录,如下图所示。
列举具有特定扩展名列表的目录
在很多情况下,我们需要在目标服务器上提取特定扩展名的目录,然后可以使用dirb扫描的-X参数。此参数接受文件扩展名,然后在目标服务器或计算机上搜索给定的扩展名文件。
1 | dirb http://192.168.1.106/dvwa/ -X .php |
上面的命令将提取与php扩展名相关的所有目录路径,如下图所示。
将输出保存到磁盘
出于记录维护,更好的可读性和将来参考的目的,我们将dirb扫描的输出保存到文件中。为此,我们将使用dirb扫描的参数-o可以将dirb扫描的输出保存在文本文件中。
1 | dirb http://192.168.1.106/dvwa/ -o output.txt |
上面的命令将在枚举目录的桌面上生成一个output.txt文件。
既然我们已经成功执行了命令,现在让我们遍历该位置以确保输出是否已经保存在文件上。在这种情况下,我们的输出位置是/root/output.txt。
忽略不必要的状态码
Status-Code元素是一个3位整数,其中Status-Code的第一位定义响应的类别,而后两位不具有任何分类作用。在这种攻击中,我们在代码302上使用–N参数,如下所示。
1 | dirb http://192.168.1.106/dvwa/ -N 302 |
从给定的屏幕快照中您可以了解到,dirb扫描忽略了NOT FOUND代码302。
默认工作与警告消息不间断不间断工作
在如下所示的常规Dirb扫描期间,某些页面会生成警告;Dirb扫描会跳过那些遇到任何警告的目录。
1 | dirb http://192.168.1.106/ |
在进行非常深入且冗长的扫描时,我们希望dirb扫描不要避免这些警告并进行深入扫描,因此我们使用dirb扫描的-w参数。
1 | dirb http://192.168.1.106/ -w |
如您所见,即使在默认扫描中缺少警告消息之后,也会列出突出显示的目录/ dev / shell。
速度延迟
在不同情况下工作时,我们遇到了某些环境,无法处理由Dirb扫描创建的泛洪,因此在这些环境中,将扫描延迟一段时间是很重要的。使用dirb扫描的-z参数可以轻松完成此操作。在此参数中,以毫秒为单位提供时间。就像在给定示例中所示,我们给了100秒的延迟。
1 | dirb http://192.168.1.106/dvwa -z 100 |
不递归(-r)
默认情况下,dirb扫描以递归方式扫描目录。这意味着它将扫描目录,然后遍历该目录以扫描更多子目录。但是在某些情况下,如果时间不足,我们会将Dirb设置为不递归扫描。这可以使用-r参数来实现。
1 | dirb http://192.168.1.106/dvwa -r |
显示不存在页面
404错误是HTTP状态代码,这意味着您尝试在其网站上访问的页面无法在其服务器上找到。404 Not Found错误消息经常由各个网站定制。在某些情况下,我们也需要找到404页,默认情况下,dirb会跳过。要查找这些页面,我们将使用-v参数。
1 | dirb http://192.168.1.106/dvwa -v |
从下面的图像中可以看到,它还提取了所有与404错误相关的目录。
扩展列表(-X参数)与扩展头(-H参数)
通过将–X参数与具有特定扩展名(例如.php)的目标URL一起使用,它枚举了所有具有.php扩展名的文件或目录,但通过将–H参数与特定扩展名一起使用(例如.php与目标URL一起)它将枚举用php命名的所有文件或目录,如下图所示。
1 | dirb http://192.168.1.106/dvwa -H .php |
不对网址(-t)强制使用结尾的“ /”
从前面情况中使用的攻击开始,为了运行dirb工具,我们将不得不在URL的末尾添加一个正斜杠(/)以便在dirb中接受。为了检查我们是否需要对URL末尾进行一次无正斜杠的攻击。
1 | dirb http://192.168.1.105/bwapp/portal.php |
您会发现,由于缺少正斜杠,因此扫描未成功执行,我们在本文前面已讨论了其重要性。
使用相同的命令并进行一些更改后再次尝试这种攻击,因此,要运行该命令,我们必须在上一个命令中添加-t。
1 | dirb http://192.168.1.105/bwapp/portal.php -t |
现在,我们可以观察到即使没有正斜杠,我们仍然可以成功执行dirb扫描。
HTTP授权(-u用户名:密码)
HTTP身份验证/身份验证机制全部基于401状态代码和WWW身份验证 响应标头的使用。最广泛使用的 HTTP身份验证 机制是 Basic。客户端将用户名和密码作为未加密的base64编码文本发送。
因此,为了在dirb的帮助下绕过这种身份验证,我们使用了以下命令:
1 | dirb http://testphp.vulnweb.com/login.php -u test:test |
结果,将显示测试的状态码200:目标URL上的测试和授权凭证。
代理网址
使用– p选项可将代理URL用于所有请求,默认情况下,它可在端口1080上使用。您可以观察到,在Web浏览器中浏览目标网络IP时,它显示了“禁止访问错误”,这表示该网页是在某些代理后面运行。
为了确保这一预测,我们两次运行了dirb命令,首先在默认情况下在端口80上运行,再在端口3129上运行–p选项(启用代理参数)。
12 | dirb http://192.168.1.108dirb http://192.168.1.108 –p 192.168.1.108:3129 |
12 | dirb http://192.168.1.108dirb http://192.168.1.108 –p 192.168.1.108:3129 |
12 | dirb http://192.168.1.108dirb http://192.168.1.108 –p 192.168.1.108:3129 |
从下面给出的图像中,您可以参考从以上命令获得的输出结果,这里在执行第一个命令时没有获得任何目录或文件,而在第二个命令中其他执行成功了。