如何使用Dirsearch
Dirsearch是一款于2014年首次发布的开源多线程“Web路径发现”工具。该程序使用Python编写,类似于Dirbuster或Gobuster等其他工具,旨在快速发现网站上的隐藏内容。与Dirbuster(可能还有Gobuster)不同,Dirsearch仍在积极开发中,并且专注于路径发现。
它具有多项功能以辅助发现,并且可以轻松自定义以处理以异常方式响应或需要额外标头的Web服务器。
它通过读取文件和路径列表(“单词列表”),可选地对列表执行转换,为每个文件发出HTTP请求,并根据内部或用户定义的规则报告结果来操作。
为什么使用Dirsearch?
网站上的隐藏(或未链接,如果您更喜欢)内容可能以多种方式导致安全问题。这些内容可能包括管理面板、安装文件、完整应用程序、文档、测试程序、源代码存储库以及被忽视或遗忘的内容等。有时这会导致简单的信息泄露,而其他时候可能导致完全妥协。
无论测试类型如何,了解完整的攻击面对于正确评估至关重要。
安装
Dirsearch需要Python,并且可以在支持Python 3.9或更高版本的任何平台上运行。它可以通过pip安装,通过GitHub手动安装,许多操作系统包管理器安装,或在Docker中安装。本文详细介绍了GitHub安装方法。
Git安装:
|
|
对于某些操作系统(如Apple OS X)的安装,必须使用Python的虚拟环境来正确安装依赖项。在安装venv程序后,可以轻松完成此操作。
|
|
通过检查安装的版本来验证安装是否成功。
Dirsearch版本检查
单词列表
Dirsearch的效果仅取决于所使用的单词列表。单词列表是一个简单的文本文件,包含路径和/或文件名(带或不带文件扩展名)。Dirsearch读取此文件,根据用户请求转换每一行,然后发出HTTP请求以查找文件。
Dirsearch包含一个位于db/dicc.txt的单词列表,其中包含近10,000个文件。其他单词列表可以从互联网上获取,例如来自Seclists存储库。有些列表是特定于产品的,例如Java Servlet名称,而有些是通用的。您的选择可能因网站而异。一个大型通用列表,如big.txt,通常是一个很好的起点。
默认单词列表使用自定义变量,如%EXT%来表示文件扩展名的位置。默认情况下,只有这些变量会被替换——其他行不会有文件扩展名。要强制在每个文件上使用扩展名,请使用-f或–force标志。
请注意,如果您在Dirsearch中使用非默认单词列表,可以使用–overwrite-extensions标志覆盖单词列表中的默认扩展名。例如,一个包含文件admin.php的单词列表与选项–overwrite-extensions html,jsp结合将测试:
- admin.html
- admin.jsp
基本用法
使用Dirsearch的最简单方法是使用-u标志提供URL。这将使用内置单词列表和默认选项运行程序。
|
|
程序将在初始输出中报告正在测试的内容。
基本扫描
如上图所示,默认输出可能非常冗长,并包含您可能不关心的内容。要更改此设置,请使用-x(–exclude)标志停止报告HTTP响应代码为404的“未找到”文件。
|
|
更简洁的结果
此输出更有帮助,因为我们可以看到存在的路径(200“OK”)和重定向到其他地方的路径(301“重定向”)。但是,我们不想在Web浏览器中加载每个路径来查看它们最终的位置,因为我们很懒很忙。为了让Dirsearch为我们执行此操作,我们可以添加-F(–follow-redirects)选项。
|
|
跟随重定向的结果
现在Dirsearch已经跟随重定向,并且仅报告之后不是404“未找到”的重定向。
最后,我们知道Web应用程序是用PHP构建的,因此我们将通过仅查找我们认为可能存在的文件来聚焦扫描并提高性能。我们可以使用-e(-extensions)选项以及文件扩展名列表来实现此目的。
|
|
重复结果
虽然输出看起来没有不同,但由于文件扩展名有限,发出的请求更少。
高级用法
之前的输出示例实际上有一个误报结果,即/passwords路径。目标服务器对此响应200,即使它不存在,这是扫描Web时的常见问题。误报页面的响应正文中包含字符串F5,我们可以使用它来过滤掉不正确的结果,因为它仅出现在未找到的页面中。
为此,我们将使用–exclude-text选项(其他类似选项包括–exclude-regex和–exclude-size)。
|
|
无误报的结果
程序检查了响应正文,匹配了F5,并忽略了结果。
某些场景可能需要额外的标头,例如访问令牌或授权标头。这可以通过-H(–header)选项完成,例如:
|
|
这将随每个请求发送授权标头。
如果我们想进一步深入研究网站并使用响应正文查找其他路径,有时可以获得更好的结果。为了帮助实现这一点,Dirsearch具有–crawl选项。
比较以下两个命令的输出。
|
|
基本结果
|
|
全面结果
在使用–crawl的输出中,报告了目标服务器上的更多路径,因为它从页面的响应HTML中提取了它们。如果将其与递归扫描结合使用(-r或–recursive),扫描程序将继续针对每个识别的路径运行。虽然这可以带来更好的结果,但请注意,这也可能生成大量请求并运行较长时间。
最后,如果我们想保存结果,Dirsearch具有广泛的选项,包括文件和数据库类型,包括简单、纯文本、JSON、XML、Markdown、CSV、HTML、SQLite、MySQL SQL和Postgres SQL。对于这些输出格式,结合使用-O(–output-format)和-o(–output-path)选项,例如:
|
|
它还可以分别使用–postgres-url和–mysql-url选项直接连接到Postgres和MySQL数据库。
总结
找到一个隐藏文件或管理面板有时可能导致完全妥协。尽可能全面地了解目标的攻击面将帮助您在渗透测试中获得最佳结果。
Dirsearch具有许多额外的选项,可以影响扫描和报告,以帮助您实现目标。随着您对工具的熟悉,探索这些额外的标志以找到最可靠的扫描方法,尽管这可能因目标而异。