sp34rh34d/DirRunner
GitHub: sp34rh34d/DirRunner
DirRunner 是一个零依赖的 Go 命令行扫描器,提供 DNS 枚举、目录发现、虚拟主机探测、FUZZ 测试和 HTTP 指纹识别功能,用于 Web 资产发现与侦察。
Stars: 24 | Forks: 3
# DirRunner
DirRunner 是一个基于 Go 的扫描器,用于 DNS 枚举、目录发现、虚拟主机、FUZZ payload 测试以及基本的 HTTP 指纹识别。
它作为命令行工具运行,具备 worker pool、流式结果输出、可复用的 HTTP transport、JSON 输出、确定性导出、可选的 Tor 路由,并且不依赖任何第三方 Go 库。
## 构建
```
go build -o dirrunner ./cmd/dirrunner && chmod +x dirrunner
```
## 常规用法
```
./dirrunner [flags]
```
每个模块都可以通过使用 `-` 作为位置参数从 stdin 读取其主要目标:
```
echo https://example.com | ./dirrunner dir -
echo example.com | ./dirrunner dns -
echo https://example.com/FUZZ | ./dirrunner fuzz - -w wordlist/payloads.txt
echo https://192.0.2.10 | ./dirrunner vhost - -d example.com
echo https://example.com | ./dirrunner fingerprint -
```
模块:
- `dns`:子域名 DNS 枚举。
- `dir`:目录枚举。仅当使用 `--ext` / `-e` 时才会启用文件检查。
- `vhost`:使用 `Host` 标头进行虚拟主机枚举。
- `fuzz`:对 URL、标头、cookie、user-agent、basic auth、JSON body 或 POST 表单数据中的 FUZZ 占位符进行枚举。
- `fingerprint`:HTTP 标头和基础技术指纹识别。
## 全局标志
这些标志在所有模块中均可用。
| 标志 | 描述 |
| --- | --- |
| `--threads / -t N` | 并发 worker 的数量。默认为 `10`。 |
| `--json / -j` | 以 JSON 格式打印结果。 |
| `--export / -o FILE` | 将最终结果写入文件。 |
| `--verbose / -v` | 打印详细的诊断输出。 |
`--wordlist / -w FILE` 可用于 `dns`、`dir`、`vhost` 和 `fuzz`。
## 共享的 HTTP 请求标志
这些标志在 `dir`、`vhost`、`fuzz` 和 `fingerprint` 中可用。
| 标志 | 描述 |
| --- | --- |
| `--url / -u URL` | 目标 URL。 |
| `--timeout / -T DURATION` | HTTP 请求超时时间,例如 `5s` 或 `1500ms`。 |
| `--user-agent / -A VALUE` | 自定义 `User-Agent` 标头。 |
| `--cookie / -C VALUE` | Cookie 标头值。 |
| `--header / -H 'Name: value'` | 自定义 HTTP 标头。可以重复使用。 |
| `--username / --user / -U VALUE` | HTTP Basic Auth 用户名。 |
| `--password / --pass / -P VALUE` | HTTP Basic Auth 密码。 |
| `--insecure / -k` | 禁用 TLS 证书验证。 |
| `--follow-redirects / -L` | 跟随 HTTP 重定向。 |
| `--tor / -Q` | 通过 SOCKS5 Tor 代理路由 HTTP 流量。 |
| `--tor-proxy / -q HOST:PORT` | Tor SOCKS5 代理地址。默认为 `127.0.0.1:9050`。 |
响应过滤标志在 `dir`、`vhost` 和 `fuzz` 中可用:
| 标志 | 描述 |
| --- | --- |
| `--exclude-size / -S LIST` | 隐藏确切响应大小,例如 `3244,777`。 |
| `--exclude-size-range / -R LIST` | 隐藏包含范围的大小,例如 `1000-2000,9000-9500`。 |
`--method / -X` 和 `--codes / -c` 由 `dir` 和 `fuzz` 使用。
## DNS 模块
使用 `dns` 从字典解析子域名。
### DNS 标志
| 标志 | 描述 |
| --- | --- |
| `--domain / -d DOMAIN` | 要枚举的根域名。 |
| `--wordlist / -w FILE` | 子域名字典。 |
### DNS 示例
基础 DNS 枚举:
```
./dirrunner dns -d example.com -w wordlist/subdomains.txt
```
增加并发并导出结果:
```
./dirrunner dns \
--domain example.com \
--wordlist wordlist/subdomains.txt \
--threads 30 \
--export dns-results.txt
```
详细 DNS 输出仅打印详细的发现行:
```
./dirrunner dns -d example.com -w wordlist/subdomains.txt --verbose
```
## Dir 模块
使用 `dir` 枚举目录以及可选的文件。目录检查始终运行。仅当提供 `--ext` / `-e` 时才会运行文件检查。
正常的 `dir` 输出仅打印发现的路径,而不是完整的 URL:
```
directory 200 777 /cgi-bin/
file 200 1820 /index.php
```
### Dir 标志
| 标志 | 描述 |
| --- | --- |
| `--url / -u URL` | 基础目标 URL。 |
| `--wordlist / -w FILE` | 主目录字典。目录字典的别名。 |
| `--dir-wordlist FILE` | 目录字典路径。 |
| `--file-wordlist / -f FILE` | 文件名字典路径。 |
| `--ext / -e LIST` | 要测试的文件扩展名。启用文件枚举。示例:`php,txt,bak`。 |
| `--method / -X METHOD` | HTTP 方法。默认为 `GET`。 |
| `--codes / -c LIST` | 要显示的状态码。默认为 `200,301,302`。 |
| `--recursive / -r` | 递归扫描发现的目录。 |
| `--depth / -D N` | 最大递归深度。默认为 `1`。 |
| `--wildcard-check / -W` | 在枚举前检查缺失路径的通配符响应。默认禁用。 |
| `--skip-wildcard-check` | 用于跳过通配符检查的旧版兼容标志。 |
### Dir 示例
目录枚举:
```
./dirrunner dir \
-u https://example.com \
-w wordlist/directory.txt \
-c 200,301,302,403
```
从 stdin 读取目标 URL:
```
echo https://example.com | ./dirrunner dir -
```
同时进行目录和文件枚举:
```
./dirrunner dir \
-u https://example.com \
-w wordlist/directory.txt \
-f wordlist/filename.txt \
-e php,txt,bak \
-c 200,301,302,403
```
递归目录扫描:
```
./dirrunner dir \
--url https://example.com \
--wordlist wordlist/directory.txt \
--recursive \
--depth 3 \
--codes 200,301,302,403
```
排除干扰响应大小:
```
./dirrunner dir \
-u https://example.com \
-w wordlist/directory.txt \
--exclude-size 777,1338728 \
--exclude-size-range 9000-9500
```
通过 Tor 路由扫描:
```
./dirrunner dir \
-u https://example.com \
-w wordlist/directory.txt \
--tor
```
Tor 浏览器通常在 `127.0.0.1:9150` 上公开
标签:C2日志可视化, DNS枚举, GitHub, Go, Ruby工具, 动态分析, 大数据, 实时处理, 密码管理, 指纹识别, 文档结构分析, 日志审计, 目录扫描, 网络安全工具