[网络安全] Dirsearch 工具的安装、使用详细教程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: [网络安全] Dirsearch 工具的安装、使用详细教程

Dirsearch简介

Dirsearch 是一个用于探测Web服务器上的隐藏目录和文件的工具。它通过发送HTTP请求来尝试访问可能存在的路径,从而找到不列在网站目录页面上的隐藏资源。

Dirsearch 的主要特点包括:

1.多线程:Dirsearch 采用多线程方式进行目录扫描,充分利用系统资源提高扫描效率。

2.字典支持:它支持使用自定义字典文件来进行目录爆破,你可以使用自己的字典文件或使用内置的常用字典。(注:字典必须是文本文件)

3.支持多种形式的网页(asp,php)

4.支持HTTP代理

5.启发式检测无效的网页

6.指定扩展名:你可以选择限制扫描的文件扩展名范围,以便更加精确地进行目录扫描。

7.进度追踪:Dirsearch 提供实时进度追踪,你可以看到当前扫描的进度和已发现的目录和文件。

8.结果输出:完成扫描后,Dirsearch 会生成详细的扫描报告(纯文本,JSON),展示已发现的隐藏目录和文件。



安装步骤

由于dirsearch是基于python3的,所以需保证本机含有python3环境。

python3环境读者可自行安装配置,本文不再赘述。

注意,当同时存在python3和python2时,要将两者的exe文件重命名为下图:

python3改为python.exe,python2改为python2.exe即可。

将zip包解压后放入python3的Dirsearch目录中

接着进入C:\Python3\Dirsearch\dirsearch-master目录中,输入cmd:

进入命令行后,输入PIP3 install DirSearch

下载失败,但我们看一下警告:

这个警告表示当前使用的 pip 版本为 21.2.4,但是还有更新的版本可用(版本号为 23.0),建议通过命令 C:\Python3\python.exe -m pip install --upgrade pip 来升级 pip。


于是我们输入C:\Python3\python.exe -m pip install --upgrade pip

但还是下载失败,原因是依赖项未升级。

因此我们输入pip install --upgrade -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/


该命令会根据 requirements.txt 文件中列出的依赖项,自动安装或升级所需的包,并使用指定的阿里云镜像源来获取依赖项的安装文件。

下载成功:

现在,就可以开始正常使用dirsearch了。

接下来将介绍dirsearch的使用方法。

注意:dirsearch的命令必须在C:\Python3\Dirsearch\dirsearch-master目录下运行


语法及参数

输入python dirsearch.py -h得到dirsearch帮助

回显如下:

C:\Python3\Dirsearch\dirsearch-master>python dirsearch.py -h
Usage: dirsearch.py [-u|--url] target [-e|--extensions] extensions [options]
Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  Mandatory:
    -u URL, --url=URL   Target URL(s), can use multiple flags
    -l PATH, --urls-file=PATH
                        URL list file
    --stdin             Read URL(s) from STDIN
    --cidr=CIDR         Target CIDR
    --raw=PATH          Load raw HTTP request from file (use '--scheme' flag
                        to set the scheme)
    -s SESSION_FILE, --session=SESSION_FILE
                        Session file
    --config=PATH       Path to configuration file (Default:
                        'DIRSEARCH_CONFIG' environment variable, otherwise
                        'config.ini')
  Dictionary Settings:
    -w WORDLISTS, --wordlists=WORDLISTS
                        Wordlist files or directories contain wordlists
                        (separated by commas)
    -e EXTENSIONS, --extensions=EXTENSIONS
                        Extension list separated by commas (e.g. php,asp)
    -f, --force-extensions
                        Add extensions to the end of every wordlist entry. By
                        default dirsearch only replaces the %EXT% keyword with
                        extensions
    -O, --overwrite-extensions
                        Overwrite other extensions in the wordlist with your
                        extensions (selected via `-e`)
    --exclude-extensions=EXTENSIONS
                        Exclude extension list separated by commas (e.g.
                        asp,jsp)
    --remove-extensions
                        Remove extensions in all paths (e.g. admin.php ->
                        admin)
    --prefixes=PREFIXES
                        Add custom prefixes to all wordlist entries (separated
                        by commas)
    --suffixes=SUFFIXES
                        Add custom suffixes to all wordlist entries, ignore
                        directories (separated by commas)
    -U, --uppercase     Uppercase wordlist
    -L, --lowercase     Lowercase wordlist
    -C, --capital       Capital wordlist
  General Settings:
    -t THREADS, --threads=THREADS
                        Number of threads
    -r, --recursive     Brute-force recursively
    --deep-recursive    Perform recursive scan on every directory depth (e.g.
                        api/users -> api/)
    --force-recursive   Do recursive brute-force for every found path, not
                        only directories
    -R DEPTH, --max-recursion-depth=DEPTH
                        Maximum recursion depth
    --recursion-status=CODES
                        Valid status codes to perform recursive scan, support
                        ranges (separated by commas)
    --subdirs=SUBDIRS   Scan sub-directories of the given URL[s] (separated by
                        commas)
    --exclude-subdirs=SUBDIRS
                        Exclude the following subdirectories during recursive
                        scan (separated by commas)
    -i CODES, --include-status=CODES
                        Include status codes, separated by commas, support
                        ranges (e.g. 200,300-399)
    -x CODES, --exclude-status=CODES
                        Exclude status codes, separated by commas, support
                        ranges (e.g. 301,500-599)
    --exclude-sizes=SIZES
                        Exclude responses by sizes, separated by commas (e.g.
                        0B,4KB)
    --exclude-text=TEXTS
                        Exclude responses by text, can use multiple flags
    --exclude-regex=REGEX
                        Exclude responses by regular expression
    --exclude-redirect=STRING
                        Exclude responses if this regex (or text) matches
                        redirect URL (e.g. '/index.html')
    --exclude-response=PATH
                        Exclude responses similar to response of this page,
                        path as input (e.g. 404.html)
    --skip-on-status=CODES
                        Skip target whenever hit one of these status codes,
                        separated by commas, support ranges
    --min-response-size=LENGTH
                        Minimum response length
    --max-response-size=LENGTH
                        Maximum response length
    --max-time=SECONDS  Maximum runtime for the scan
    --exit-on-error     Exit whenever an error occurs
  Request Settings:
    -m METHOD, --http-method=METHOD
                        HTTP method (default: GET)
    -d DATA, --data=DATA
                        HTTP request data
    --data-file=PATH    File contains HTTP request data
    -H HEADERS, --header=HEADERS
                        HTTP request header, can use multiple flags
    --headers-file=PATH
                        File contains HTTP request headers
    -F, --follow-redirects
                        Follow HTTP redirects
    --random-agent      Choose a random User-Agent for each request
    --auth=CREDENTIAL   Authentication credential (e.g. user:password or
                        bearer token)
    --auth-type=TYPE    Authentication type (basic, digest, bearer, ntlm, jwt)
    --cert-file=PATH    File contains client-side certificate
    --key-file=PATH     File contains client-side certificate private key
                        (unencrypted)
    --user-agent=USER_AGENT
    --cookie=COOKIE
  Connection Settings:
    --timeout=TIMEOUT   Connection timeout
    --delay=DELAY       Delay between requests
    -p PROXY, --proxy=PROXY
                        Proxy URL (HTTP/SOCKS), can use multiple flags
    --proxies-file=PATH
                        File contains proxy servers
    --proxy-auth=CREDENTIAL
                        Proxy authentication credential
    --replay-proxy=PROXY
                        Proxy to replay with found paths
    --tor               Use Tor network as proxy
    --scheme=SCHEME     Scheme for raw request or if there is no scheme in the
                        URL (Default: auto-detect)
    --max-rate=RATE     Max requests per second
    --retries=RETRIES   Number of retries for failed requests
    --ip=IP             Server IP address
  Advanced Settings:
    --crawl             Crawl for new paths in responses
  View Settings:
    --full-url          Full URLs in the output (enabled automatically in
                        quiet mode)
    --redirects-history
                        Show redirects history
    --no-color          No colored output
    -q, --quiet-mode    Quiet mode
  Output Settings:
    -o PATH/URL, --output=PATH/URL
                        Output file or MySQL/PostgreSQL URL (Format:
                        scheme://[username:password@]host[:port]/database-
                        name)
    --format=FORMAT     Report format (Available: simple,plain,json,xml,md,csv
                        ,html,sqlite,mysql,postgresql)
    --log=PATH          Log file
See 'config.ini' for the example configuration file

翻译如下:

用法:dirsearch.py [-u|--url] 目标 [-e|--extensions] 扩展名 [选项]
选项:
  --version             显示程序的版本号并退出
  -h, --help            显示此帮助消息并退出
必需:
  -u URL, --url=URL     目标URL,可以使用多个选项指定多个目标URL
  -l PATH, --urls-file=PATH
                        URL列表文件
  --stdin               从标准输入读取URL
  --cidr=CIDR           目标CIDR
  --raw=PATH            从文件加载原始HTTP请求(使用'--scheme'标志设置方案)
  -s SESSION_FILE, --session=SESSION_FILE
                        会话文件
  --config=PATH         配置文件路径(默认为'DIRSEARCH_CONFIG'环境变量,否则为'config.ini')
字典设置:
  -w WORDLISTS, --wordlists=WORDLISTS
                        单词列表文件或包含单词列表文件的目录(以逗号分隔)
  -e EXTENSIONS, --extensions=EXTENSIONS
                        扩展名列表,以逗号分隔(例如:php,asp)
  -f, --force-extensions
                        在每个单词列表条目的末尾添加扩展名。默认情况下,dirsearch只替换%EXT%关键字为扩展名。
  -O, --overwrite-extensions
                        使用指定的扩展名覆盖单词列表中的其他扩展名(通过'-e'选择)
  --exclude-extensions=EXTENSIONS
                        排除的扩展名列表,以逗号分隔(例如:asp,jsp)
  --remove-extensions   删除所有路径中的扩展名(例如:admin.php -> admin)
  --prefixes=PREFIXES   将自定义前缀添加到所有单词列表条目中(以逗号分隔)
  --suffixes=SUFFIXES   将自定义后缀添加到所有单词列表条目中,忽略目录(以逗号分隔)
  -U, --uppercase       单词列表转为大写
  -L, --lowercase       单词列表转为小写
  -C, --capital         单词首字母大写
通用设置:
  -t THREADS, --threads=THREADS
                        线程数
  -r, --recursive       递归地进行强制破解
  --deep-recursive      在每个目录深度上执行递归扫描(例如:api/users -> api/)
  --force-recursive     对找到的每个路径执行递归强制破解,而不仅仅是目录
  -R DEPTH, --max-recursion-depth=DEPTH
                        最大递归深度
  --recursion-status=CODES
                        用于执行递归扫描的有效状态码,支持范围(以逗号分隔)
  --subdirs=SUBDIRS     扫描给定URL的子目录(以逗号分隔)
  --exclude-subdirs=SUBDIRS
                        在递归扫描期间排除以下子目录(以逗号分隔)
  -i CODES, --include-status=CODES
                        包括的状态码,以逗号分隔,支持范围(例如:200,300-399)
  -x CODES, --exclude-status=CODES
                        排除的状态码,以逗号分隔,支持范围(例如:301,500-599)
  --exclude-sizes=SIZES
                        根据大小排除响应,以逗号分隔(例如:0B,4KB)
  --exclude-text=TEXTS  根据文本排除响应,可以使用多个标志
  --exclude-regex=REGEX
                        根据正则表达式排除响应
  --exclude-redirect=STRING
                        如果此正则表达式(或文本)与重定向URL匹配,则排除响应(例如:'/index.html')
  --exclude-response=PATH
                        排除类似于此页面响应的响应,路径作为输入(例如:404.html)
  --skip-on-status=CODES
                        每当命中这些状态码之一时跳过目标,以逗号分隔,支持范围
  --min-response-size=LENGTH
                        响应的最小长度
  --max-response-size=LENGTH
                        响应的最大长度
  --max-time=SECONDS    扫描的最大运行时间
  --exit-on-error       发生错误时退出
请求设置:
  -m METHOD, --http-method=METHOD
                        HTTP请求方法(默认为GET)
  -d DATA, --data=DATA  HTTP请求数据
  --data-file=PATH      包含HTTP请求数据的文件
  -H HEADERS, --header=HEADERS
                        HTTP请求标头,可以使用多个标志
  --headers-file=PATH   包含HTTP请求标头的文件
  -F, --follow-redirects
                        跟随HTTP重定向
  --random-agent        每个请求选择一个随机User-Agent
  --auth=CREDENTIAL     认证凭据(例如:user:password或bearer token)
  --auth-type=TYPE      认证类型(basic、digest、bearer、ntlm、jwt)
  --cert-file=PATH      包含客户端证书的文件
  --key-file=PATH       包含客户端证书私钥的文件(未加密)
  --user-agent=USER_AGENT
  --cookie=COOKIE
连接设置:
  --timeout=TIMEOUT     连接超时时间
  --delay=DELAY         请求之间的延迟
  -p PROXY, --proxy=PROXY
                        代理URL(HTTP/SOCKS),可以使用多个标志
  --proxies-file=PATH   包含代理服务器的文件
  --proxy-auth=CREDENTIAL
                        代理认证凭据
  --replay-proxy=PROXY  用于重放已发现路径的代理
  --tor                 使用Tor网络作为代理
  --scheme=SCHEME       原始请求的协议或URL中没有协议时使用的协议(默认为自动检测)
  --max-rate=RATE       每秒请求数最大值
  --retries=RETRIES     失败请求的重试次数
  --ip=IP               服务器IP地址
高级设置:
  --crawl               在响应中爬取新路径
显示设置:
  --full-url            在输出中显示完整URL(在静默模式下自动启用)
  --redirects-history   显示重定向历史记录
  --no-color            不使用彩色输出
  -q, --quiet-mode      安静模式
输出设置:
  -o PATH/URL, --output=PATH/URL
                        输出文件或MySQL/PostgreSQL数据库URL(格式:
                        scheme://[username:password@]host[:port]/database-
                        name)
  --format=FORMAT       报告格式(可用:simple、plain、json、xml、md、csv、html、
                        sqlite、mysql、postgresql)
  --log=PATH            日志文件
有关示例配置文件,请参见“config.ini”

常见Payload

1.扫描单个URL,并限制线程数和扩展名:

python dirsearch.py -u http://example.com -t 10 -e php,asp --exclude-extensions=html

该命令将对 http://example.com 进行目录扫描,使用最多 10 个线程并仅检查扩展名为 phpasp 的路径,同时排除扩展名为 html 的路径。

2.从URL列表文件中批量扫描:

python dirsearch.py -l urls.txt -t 5 -e php

该命令将从 urls.txt 文件中读取目标URL列表,并使用最多 5 个线程对每个URL进行目录扫描,仅检查扩展名为 php 的路径。

3.使用自定义字典和深度递归扫描:

python dirsearch.py -u http://example.com -w custom-wordlist.txt -r --deep-recursive

该命令将对 http://example.com 进行目录扫描,使用自定义的单词列表文件 custom-wordlist.txt,并启用深度递归扫描,即在每个目录的所有深度上执行递归扫描。

4.在请求中使用自定义HTTP头:

python dirsearch.py -u http://example.com -H "X-Custom-Header: Value" -H "Authorization: Bearer toke

该命令将对 http://example.com 进行目录扫描,并在每个请求中包含自定义的HTTP头,如 X-Custom-HeaderAuthorization

5.指定线程数和延迟时间:

python dirsearch.py -u http://example.com -t 20 --delay 0.5

上述命令将使用20个线程并设置每个请求之间的延迟为0.5秒。

6.使用自定义的请求头和超时时间:

python dirsearch.py -u http://example.com -H "Custom-Header: value" --timeout 10

这个命令将在每个请求中添加一个自定义的请求头 “Custom-Header: value”,并将超时时间设置为10秒。

7.包含和排除特定状态码:

python dirsearch.py -u http://example.com -i 200,302 -x 404,500

上述命令将只包含状态码为200和302的响应,并排除状态码为404和500的响应。

8.使用代理进行扫描:

python dirsearch.py -u http://example.com -p http://127.0.0.1:8080

这个命令将通过指定的HTTP代理(例如Burp Suite)对目标URL进行扫描。

9.保存输出到文件中:

python dirsearch.py -u http://example.com -o output.txt

上述命令将扫描结果输出到指定的文件 output.txt

10.使用代理链进行扫描:

python dirsearch.py -u http://example.com -p http://proxy1:8080 -p http://proxy2:8080

上述命令将通过两个代理服务器 proxy1proxy2 进行目标URL的扫描。

11.从标准输入读取URL:

cat urls.txt | python dirsearch.py --stdin -t 10

这个命令通过管道从 urls.txt 中读取URL,并使用最多 10 个线程对每个URL进行目录扫描。

12.启用递归扫描和重定向跟随:

python dirsearch.py -u http://example.com -r -F

上述命令将启用目录的递归扫描,并且在扫描时跟随HTTP重定向。

13.排除指定大小范围的响应:

python dirsearch.py -u http://example.com --exclude-sizes 0-100B,500KB-1MB

该命令将排除大小在 0 到 100 字节以及 500千字节到 1 兆字节范围内的响应。

14.设定最大运行时间和最大重试次数:

python dirsearch.py -u http://example.com --max-time 300 --retries 5

上述命令将设置最长运行时间为 300 秒,并允许失败请求最多重试 5 次。

15.指定自定义的User-Agent头:

python dirsearch.py -u http://example.com --user-agent "Custom User Agent"

上述命令将在HTTP请求中指定自定义的User-Agent头。

16.使用代理认证进行扫描:

python dirsearch.py -u http://example.com -p http://proxy.example.com --proxy-auth "username:password"

这个命令将使用指定的代理服务器 proxy.example.com 进行扫描,并提供代理认证的用户名和密码。

17.启用递归扫描并限制最大递归深度:

python dirsearch.py -u http://example.com -r -R 5

上述命令将启用递归目录扫描,并限制最大递归深度为5层。

18.排除特定文本出现的响应:

python dirsearch.py -u http://example.com --exclude-text "Not Found" --exclude-text "Error"

该命令将排除响应中包含指定文本(如 “Not Found” 和 “Error”)的路径。

19.设置最小和最大响应长度:

python dirsearch.py -u http://example.com --min-response-size 1000 --max-response-size 50000

上述命令将只包含响应长度在1000到50000字节之间的路径。


渗透实例

Dirsearch具体实战可参考CTF赛题:极客大挑战PHP解题详析 【Dirsearch使用实例+php反序列化】


本文举个简单的渗透例子:

在C:\Python3\Dirsearch\dirsearch-master路径下输入python dirsearch.py -u http://101.43.57.52:41080/ (某题目地址)

得到如下结果:

成功发现该网站目录页面上的隐藏资源,之后进行访问等操作即可实现命令执行等。


总结

以上为Dirsearch 工具的安装、使用详细教程,读者可结合官方文档躬身实践。

我是秋说,我们下次见。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
2月前
|
监控 数据可视化 Java
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
63 0
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
|
3月前
|
运维 监控 Linux
网络延迟监测工具选择(第一篇)
**WGCLOUD**是一款开源免费的跨平台运维监控工具,支持Windows、Linux、MacOS等系统,具备网络延迟监测功能。其内置的**PING监测**模块可实时ping目标IP,图形化展示延迟趋势,并在目标IP不可达时发送告警通知。支持分组管理,操作简单便捷,适合运维人员高效监控网络状态。
|
4月前
|
Kubernetes 数据安全/隐私保护 容器
K8s中Flannel网络插件安装提示forbidden无权限的解决方法
总的来说,解决“forbidden无权限”的问题,需要从权限和配置两个方面来考虑。只有当用户或者服务账户有足够的权限,且Flannel的配置文件设置正确,才能成功地安装Flannel。希望这个解答能够帮助你解决问题。
180 13
|
5月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
132 7
|
7月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
174 20
|
8月前
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
1000 28
|
8月前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
281 11
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
208 17
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
161 10
|
9月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。

热门文章

最新文章