dirsearch

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

Dirsearch 的主要特点包括:

  • 多线程:Dirsearch 采用多线程方式进行目录扫描,充分利用系统资源提高扫描效率。
  • 字典支持:它支持使用自定义字典文件来进行目录爆破,你可以使用自己的字典文件或使用内置的常用字典。(注:字典必须是文本文件)
  • 支持多种形式的网页(asp,php)
  • 支持 HTTP 代理
  • 启发式检测无效的网页
  • 指定扩展名:你可以选择限制扫描的文件扩展名范围,以便更加精确地进行目录扫描。
  • 进度追踪:Dirsearch 提供实时进度追踪,你可以看到当前扫描的进度和已发现的目录和文件。
  • 结果输出:完成扫描后,Dirsearch 会生成详细的扫描报告(纯文本,JSON),展示已发现的隐藏目录和文件。

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

下载

1.zip 下载

dirsearch 下载地址:https://github.com/maurosoria/dirsearch

1.png

2.ssh 下载

使用直接在 cmd 使用

git clone [email protected]:maurosoria/dirsearch.git

下载到目标文件夹

下载到本地

在下载好的文件下

我搜到的教程前几个都没有安装这个,导致我使用的时候一直提心我缺少依赖 😭

1
pip3 install -r requirements.txt     //安装依赖包

如果速度太慢了因此报错,可以用国内镜像,即把上面安装依赖包的命令换成下面的命令(推荐)

1
pip3 install -r requirements.txt -i https://pypi.doubanio.com/simple/

然后安装

1
python3 setup.py install

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
--version              显示dirsearch的版本
-h --help 帮助提示
-u --url 指定网址
-e 指定网站语言
-w 指定字典
-r 递归目录(跑出目录后,继续跑目录下面的目录)
-l --url-list=FILE 目标url文件路径
-i 保留的响应状态码(以逗号分隔,支持指定范围) 如(-i 200,300-399)
-x 排除的响应状态码(以逗号分隔,支持指定范围) 如(-x 301,500-599)

简单使用
//简单的使用方法
python3 dirsearch.py -u https://target
//使用文件拓展名为php和txt以及js的字典扫描目标
python3 dirsearch.py -e php,txt,js -u https://target
//采用指定路径的wordlist且拓展名为php,txt,js的字典扫描目标url
python3 dirsearch.py -e php,txt,js -u https://target -w /path/to/wordlist
//采用递归扫描
python3 dirsearch.py -e php,txt,js -u https://target -r
//采用递归扫描 递归层数为三层
python3 dirsearch.py -e php,txt,js -u https://target -r -R 3

所有语法及翻译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
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

翻译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
用法: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”