【扫描工具】强制浏览-feroxbuster v2.10.1 字典整合版
是一款强大的目录扫描工具,Feroxbuster的主要功能是基于字典的目录扫描,并且默认使用Seclists字典进行使用!并且具有快速和高效的特点,采用了多线程的技术来加快扫描速度。还支持暂停交互式设置等!总的来说是笔者目前用过扫描最快的工具了!并且本站整合了seclists字典,扫描更具全面性!
下载地址
简介
Feroxbuster是一款强大的目录扫描工具,Feroxbuster的主要功能是基于字典的目录扫描,并且默认使用Seclists字典进行使用!并且具有快速和高效的特点,采用了多线程的技术来加快扫描速度。还支持暂停交互式设置等!
总的来说是笔者目前用过扫描最快的工具了!并且本站整合了seclists
字典,扫描更具全面性!
特点:强制浏览
feroxbuster
是旨在执行强制浏览
的工具。
强制浏览是一种攻击,其目的是枚举和访问未被 Web 引用的资源 应用程序,但仍可被攻击者访问。
feroxbuster
使用蛮力与单词列表相结合来搜索目标目录中未链接的内容。这些 资源可能会存储有关 Web 应用程序和操作系统的敏感信息,例如源代码、 凭据、内部网络寻址等
此攻击也称为“可预测资源位置”、“文件枚举”、“目录枚举”和“资源” 列举。
安装
windows安装
下载文件,进行解压缩
在文件路径下输入cmd
,回车即可使用
Linux安装
选择对应的版本,下载解压文件,复制到kali
中
在kali
中使用终端打开文件
执行安装脚本
bash install.sh
使用ll
查看文件,只剩下一个 feroxbuster
./feroxbuster --url http://IP地址
快速上手❗
- 用默认参数扫描目标
<url>
,且**仅扫描目录
**
feroxbuster --url <url>
- 限制同时扫描两个目录,线程20,排除状态码404, 扫描目标
<url>
且**仅扫描目录
**
feroxbuster --scan-limit 2 -t 20 --filter-status 404 --url <url>
- 【ASP.NET】用默认参数扫描目标,
且扫描目录和html,asp,aspx,ashx,asmx文件后缀
feroxbuster -x html,asp,aspx,ashx,asmx --url <url>
- 【JAVA】用默认参数扫描目标,
且扫描目录和html,htm,jsp文件后缀
feroxbuster -x html,htm,jsp --url <url>
- 【PHP】用默认参数扫描目标,
且扫描目录和html,PHP文件后缀
feroxbuster -x html,php --url <url>
用法
核心功能
- 多个值
采用多个值的选项非常灵活。请考虑以下指定扩展的方法:
./feroxbuster -u http://127.1 -x pdf -x js,html -x php txt json,docx
上面的命令将 .pdf、.js、.html、.php、.txt、.json 和 .docx 添加到每个 url
上述所有方法(多个标志、空格分隔、逗号分隔等)都是有效且可互换的。这 URL、标头、状态代码、查询和大小筛选器也是如此。
- 包括标头
./feroxbuster -u http://127.1 -H Accept:application/json "Authorization: Bearer {token}"
- 启用 INFO 级日志记录的 IPv6 非递归扫描
./feroxbuster -u http://[::1] --no-recursion -vv
- 从 STDIN 读取 url;仅通过管道将生成的 URL 输出到另一个工具
cat targets | ./feroxbuster --stdin --silent -s 200 301 302 --redirects -x js | fff -s 200 -o js-files
- 通过 Burp 的代理流量
./feroxbuster -u http://127.1 --insecure --proxy http://127.0.0.1:8080
- 通过 SOCKS 代理的代理流量(包括 DNS 查找)
./feroxbuster -u http://127.1 --proxy socks5h://127.0.0.1:9050
- 通过查询参数传递身份验证令牌
./feroxbuster -u http://127.1 --query token=0123456789ABCDEF
提取链接
从响应正文中提取链接
在有效响应的正文(html、javascript 等)中搜索要扫描的其他终结点。这变成了一个混合体,可以同时寻找链接和未链接的内容。feroxbuster
启用的请求/响应示例:--extract-links
- 提出请求
http://example.com/index.html
- 接收并读入响应
body
- 搜索绝对链接和相对链接(即
body``homepage/assets/img/icons/handshake.svg
) - 添加以下目录以进行递归扫描:
http://example.com/homepage
http://example.com/homepage/assets
http://example.com/homepage/assets/img
http://example.com/homepage/assets/img/icons
- 发出单个请求
http://example.com/homepage/assets/img/icons/handshake.svg
./feroxbuster -u http://127.1 --extract-links
使用提取链接进行 Web 爬网
通过提供仅包含根路径的单行单词列表,也可用于模拟 Web 爬行行为。这似乎给出了与 hakrawlwer 相当的结果,尽管没有那么快。feroxbuster``feroxbuster
限制扫描次数
限制并发扫描总数
限制在任何给定时间允许运行的扫描次数。递归仍将识别新目录,但新 仅当活动扫描的总数低于传递给 的值时,发现的目录才能开始扫描。--scan-limit
./feroxbuster -u http://127.1 --scan-limit 2
按状态筛选
按状态代码筛选响应
版本 1.3.0 包括对过滤系统的大修,这将允许添加各种过滤器 最小的努力。第一个此类筛选器是状态代码筛选器。当响应从扫描的服务器返回时,每个响应 根据已知过滤器列表进行检查,并根据设置的过滤器显示或不显示。
./feroxbuster -u http://127.1 --filter-status 301
2.7.0 更新
该行为已在 2.7.0 中更新。 现在是所提供值的拒绝列表,而 所有其他状态代码都将被允许通过。--filter-status``--filter-status
旧行为 (1.3.0 - 2.6.4)
过去有两个点检查状态代码以进行筛选,并且这两个点都可以在同一运行中使用。这些 是提供给 和 或 和 的值。--filter-status``--status-codes``-C``-s
当响应返回时,将检查所有选项(包括传递给 的选项)以查看响应是否 应该被过滤掉。如果响应具有与筛选器匹配的状态代码,则它不会超过此点。那 意味着如果在此过程中的此时过滤掉了响应,则永远不会检查传递给的值。--filter-*``--filter-status``--status-codes
如果未显式筛选出状态代码,则该状态代码会一直移动,直到根据 中的值进行检查。 如果没有明确允许,那么它在第二个门处被有效地过滤掉了。--status-codes
新行为 (2.7.0+)
从 2.7.0 开始,并且是互斥的选项。这意味着在选择时 一个或另一个,未选择的那个将被忽略。它们不再协同工作。--filter-status``--status-codes
--status-codes
它的工作方式与往常相同:通过提供状态代码的允许列表。任何状态 未包含在中的代码将被过滤掉。
--filter-status
另一方面,现在完全独立运营。如果将值给定给 , 该状态代码将被过滤掉,而所有其他状态代码都可以继续。这是一个很多 状态代码拒绝列表的更真实版本。它允许您查看“所有其他”状态代码响应
重播响应
基于状态代码重放对代理的响应
小心💥
这意味着,对于每个符合重播条件的响应,您最终都会发送以下请求: 第二次生成该响应。根据目标和您的参与条款(如果有),这可能没有意义 从流量生成的角度来看。
添加了 and 选项,以便仅向代理发送选定的几个响应。 这与代理每个请求形成鲜明对比。--replay-proxy``--replay-codes``--proxy
想象一下,您只关心具有状态代码或(或者您只是不想要的)的代理响应 弄乱你的打嗝历史)。这两个选项将允许您微调哪些被代理,哪些不被代理。200``302
./feroxbuster -u http://127.1 --replay-proxy http://localhost:8080 --replay-codes 200 302 --insecure
按字数/行数筛选
按字数和行数筛选响应
除了筛选响应的大小之外,版本 1.6.0 还添加了根据 响应正文中包含的行数和/或字数。此更改推动了对显示信息的更改 对用户也是如此。本节将详细介绍新信息以及如何在新过滤器中使用它 提供。
相关 CLI 选项
-N, --filter-lines <LINES>...
Filter out messages of a particular line count (ex: -N 20 -N 31,30)
-W, --filter-words <WORDS>...
Filter out messages of a particular word count (ex: -W 312 -W 91,82)
输出与筛选器的关系
与上述输出相对应的筛选器:
- 响应状态代码:使用
-C|--filter-status
- # 行数:过滤
-N|--filter-lines
- # 字数:用
-W|--filter-words
- **# 的字符(字节):**用
-S|--filter-size
按正则表达式筛选
使用正则表达式筛选响应
小心💥
使用正则表达式筛选大型响应或许多正则表达式可能会产生负面影响 性能。
版本 1.3.0 包括对过滤系统的大修,允许添加各种过滤器 最小的努力。最新添加的是正则表达式过滤器。当响应从扫描的服务器返回时, 根据筛选器的正则表达式检查响应的正文。如果在正文中找到该表达式, 然后,该响应将被过滤掉。
./feroxbuster -u http://127.1 --filter-regex '[aA]ccess [dD]enied.?' --output results.txt --json
停止/恢复扫描
停止扫描
在扫描过程中,只需简单操作即可创建一个文件,其中包含有关已取消扫描的信息。Ctrl+C
// example snippet of state file
{
"scans": [
{
"id": "ca21821164b44b3d8eaa76550577246c",
"url": "https://localhost.com/",
"normalized_url": "https://localhost.com/",
"scan_type": "Directory",
"status": "Running",
"num_requests": 4714,
"requests_made_so_far": 3468
},
{
"id": "d65b59601117415abf9ce6c0aa69edc7",
"url": "https://localhost.com/api/",
"normalized_url": "https://localhost.com/api/",
"scan_type": "Directory",
"status": "Running",
"num_requests": 4714,
"requests_made_so_far": 2774
}
],
"config": {
"wordlist": "/wordlists/seclists/Discovery/Web-Content/common.txt",
"...": "..."
},
"responses": [
{
"type": "response",
"url": "https://localhost.com/Login",
"path": "/Login",
"wildcard": false,
"status": 302,
"content_length": 0,
"line_count": 0,
"word_count": 0,
"headers": {
"content-length": "0",
"server": "nginx/1.16.1"
}
}
]
},
恢复扫描
根据上面的示例图像,可以通过以下方式恢复相同的扫描 用。已经完成的目录不是 已重新扫描。feroxbuster --resume-from ferox-http_localhost-1606947491.state
(更新了 2.8.0 的行为)部分完成的扫描大致从中断的地方开始。更具体地说,比数字少 10% 的请求数 () 成为单词表的起始偏移量。这是为了 帮助确保在取消/恢复时不会在飞行途中丢失任何响应。requests_made_so_far
伪代码中的公式
wordlist_offset = requests_made_so_far - (requests_made_so_far * 0.10)
选择退出保存状态
为了防止在按下时创建状态文件,您可以简单地将以下条目添加到 你。Ctrl+C``ferox-config.toml
# ferox-config.toml
save_state = false
强制执行时限
对扫描强制实施时间限制
版本 1.10.0 增加了在扫描时设置最大运行时间或时间限制的功能。用法非常简单:a 数字后跟一个字符,后跟一个表示秒、分钟、小时或天的字符。 指 这种组合作为time_spec。feroxbuster
可能time_specs示例:
30s
- 30 秒20m
- 20分钟1h
- 1小时1d
- 1天(为什么??
可以传递一个有效的time_spec,以便在给定时间过后强制关闭。--time-limit
按页面相似度筛选
小心💥
使用一堆值可能会对性能产生负面影响
--filter-similar-to
版本 1.11.0 增加了指定示例页面的功能,用于过滤与给定示例相似的页面。
版本 2.8.0 将底层算法从 SSDeep 更新为 Simhash。
例如,考虑一个尝试将新用户重定向到终结点的站点。该页面有一个 CSRF 令牌,用于在每次新请求时略微改变页面的响应(有时会影响总长度)。这 意味着简单的行/字/字符过滤器将无法过滤所有响应。为了过滤掉这些重定向, 可以使用这样的命令:/register``/register
./feroxbuster -u https://somesite.xyz --filter-similar-to https://somesite.xyz/register
--filter-similar-to
请求通过 CLI 传递给它的页面 (),然后它进行哈希处理 使用 Simhash 算法的响应正文。所有后续 对页面进行哈希处理,并与原始请求的哈希进行比较。如果两个哈希值的比较满足某个 相似度的百分比(目前是汉明距离 <= 3),则该请求将被过滤掉。
Simhash之所以被选中,是因为它在识别近乎重复的页面方面做得很好,同时保持了性能。测试了其他算法,但导致了巨大的性能影响(订单 请求速度较慢的幅度/秒)。
扫描管理菜单
以交互方式添加或取消递归扫描
注意💥
通过启动或传入的扫描无法取消,只有通过或递归找到的扫描才符合条件。
-u``--stdin``--extract-links
用法
使用菜单非常简单:从正在运行的扫描中,按 查看菜单ENTER
取消扫描
- 通过输入或后跟扫描索引 (
cancel``c``1
)- 可以使用逗号分隔的索引和/或范围列表( …等)
1-4,8,9-13
- 可以使用逗号分隔的索引和/或范围列表( …等)
- 确认选择,之后将恢复所有未取消的扫描
- 要跳过确认,只需在输入中的某处添加一个 (
-f``3-5 -f
)
- 要跳过确认,只需在输入中的某处添加一个 (
添加用于扫描的新 URL
- 输入或后跟您希望添加到当前扫描队列的新 URL
add``a
添加新的响应筛选器
- 输入 或 ,然后输入要添加的筛选器类型,以及要传递给筛选器本身的值。
new-filter``n
有效的过滤器类型:
status
lines
size
words
regex
similarity
例子:
n status 301
- 等同于命令行选项--filter-status 301
new-filter lines 1
- 等同于命令行选项--filter-lines 1
new-filter words 7
- 等同于命令行选项--filter-words 7
n regex token:[0-9a-zA-Z]+
- 等同于命令行选项--filter-regex 'token:[0-9a-zA-Z]+'
n similarity https://target.url/page/with/csrf-token
- 等同于命令行选项--filter-similar-to https://target.url/page/with/csrf-token
new-filter size 1337
- 等同于命令行选项--filter-size 1337
速率限制
限制每秒请求数
注意💥
速率限制是按目录强制实施的。
例子
将每个目录每秒的请求数限制为 100 个(在递归期间找到的每个 Active Directory 每秒请求数将增加 100 个)
./feroxbuster -u http://localhost --rate-limit 100
将每秒对整个目标的请求数限制为 100 个(一次只扫描一个目录,因此 限制每秒的请求数)
./feroxbuster -u http://localhost --rate-limit 100 --scan-limit 1
服务器和客户端证书管理
何时使用证书管理
当服务器需要相互传输层安全性 (mTLS) 身份验证时, 客户端在验证服务器证书后,需要发送其 将自己的证书提供给服务器。服务器随后检查其受信任的列表 CA 并验证客户端的证书。
在这种情况下,需要为标志提供文件 它具有 PKCS #8 PEM 编码的私钥,并且标志必须 为客户端提供 PEM 编码证书。其他根 CA 证书可能需要以 OR 文件的形式提供 如果服务器使用自签名证书。--client-key``.pem``--client-cert``--server-certs``.pem``.der
例如,如果服务器使用调用的根证书和客户端 颁发了一个证书和一个密钥文件,我们将运行:ca-crt.pem``client-crt.pem``client-key.pem
feroxbuster --url https://localhost \
--client-key client-key.pem \
--client-cert client-crt.pem \
--server-certs ca-crt.pem
指定 HTTP 请求方法
指定 HTTP 请求方法
版本 2.5.0 引入了指定每个请求中发送的 HTTP 请求方法的功能。一些附加信息:
- 可以使用多种方法(即
-m POST GET
) - 可以指定任何内容,而不仅仅是有效的 HTTP 动词(即
-m derp
)
例
feroxbuster -u https://some-example-site.com -m POST GET dErP
指定 Cookie
直接指定 Cookie
版本 2.5.0 为 http cookie 提供了自己的标志,与 .新的是简单的 句法糖周围。-H, --headers``-b, --cookies``-H, --headers
例
feroxbuster -u https://some-example-site.com -b sessionId=38afes7a8
强制递归
强制递归
版本 2.7.0 添加了 tell 忽略其典型递归逻辑的功能,以支持 递归到任何“发现”的资产中。“找到的”资产是未被 其他扫描设置(即 –filter-status 或类似设置)。
何时使用强制递归
为了知道强制递归何时有用,知道如何确定是很有用的 它应该递归什么,不应该递归什么。feroxbuster
如果响应的状态代码为 300-399 并且具有标头,我们将检查该标头的值。如果标头的值与响应的 url + 相同,那么我们可以递归。Location``Location``/
example:
http://localhost/assets => http://localhost/assets/
此外,如果响应的状态代码为 200-299 或 403,并且 url 以 结尾,我们也可以递归。/
在大多数情况下,上面的逻辑效果很好。在某些情况下,可能会有一个 Web 服务器去掉所有尾部斜杠。
example:
http://localhost/assets/ => http://localhost/assets
在这种情况下,即使发现的内容下面有端点,上述逻辑也永远不会递归。这就是发挥作用的地方。--force-recursion
使用时,任何“找到”的端点(即未过滤掉的端点)都将递归到。实际上,上面列出的逻辑被忽略了。--force-recursion
一个简单的嗅探测试,看看你是否需要,是添加到你的扫描中,看看你的目标是否返回这种重定向方式。--force-recursion``--add-slash
http://localhost/assets/ => http://localhost/assets
feroxbuster命令行解析
选项:
-h, --help:打印帮助信息
-V, --version:打印版本号
目标设置:
-u, --url:指定要扫描的URL(必填,除非使用--stdin或者--resume-from参数)
--stdin:从标准输入读取URL
--resume-from:从指定状态文件恢复中断的扫描
设置组合:
--burp:将流量代理到Burp代理,并且不验证SSL证书
--burp-replay:同上,但只代理指定状态码的请求
--smart:自动调整参数以提高效率
--thorough:包含--smart所有设置,并收集更多扩展
代理设置:
-p, --proxy:指定HTTP代理
-P, --replay-proxy:仅将指定状态码的请求发送到代理
-R, --replay-codes:通过代理代理的状态码
请求设置:
-a, --user-agent:指定用户代理
-A, --random-agent:随机用户代理
-x, --extensions:指定文件扩展名
-m, --methods:指定HTTP方法
--data:请求正文
-H, --headers:指定请求头
-b, --cookies:指定Cookie
-Q, --query:URL查询参数
-f, --add-slash:URL路径最后自动补齐slash
响应过滤:
-S, --filter-size:过滤指定大小响应
-X, --filter-regex:通过正则过滤响应
-W, --filter-words:过滤指定单词数量响应
-N, --filter-lines:过滤指定行数量响应
-C, --filter-status:过滤状态码
--filter-similar-to:过滤相似页面
-s, --status-codes:仅包含指定状态码
客户端设置:
-T, --timeout:请求超时时间
-r, --redirects:允许重定向
-k, --insecure:不验证SSL证书
--server-certs:添加CA证书
--client-cert/--client-key:客户端证书授权
扫描设置:
-t, --threads:并发线程数
-n, --no-recursion:不递归扫描
-d, --depth:最大递归深度
--force-recursion:强制尝试递归
--dont-extract-links:不提取链接
-L, --scan-limit:最大并发扫描限制
--parallel:并行运行多个实例
--rate-limit:限速请求数
--time-limit:总时间限制
-w, --wordlist:指定词表
--auto-tune:自动调整参数优化扫描
--auto-bail:错误过多自动终止扫描
动态收集设置:
-E, --collect-extensions:动态收集扩展名
-B, --collect-backups:收集备份文件
-g, --collect-words:动态收集单词
-I, --dont-collect:忽略指定扩展名
输出设置:
-v, --verbosity:增加日志级别
--silent:仅输出URL和JSON
-q, --quiet:隐藏进度条
--json:输出JSON日志
-o, --output:输出文件
--debug-log:调试日志文件
--no-state:不保存状态文件
更新设置:
-U, --update:更新Feroxbuster版本
笔记:
支持参数支持多值的选项非常灵活。请考虑下面为扩展名指定不同格式的例子:
./feroxbuster -u http://127.1 -x pdf -x js,html -x php txt json,docx
上述命令会为每个URL添加.pdf、.js、.html、.php、.txt、.json和.docx扩展名。
所有指定格式(多个标志、用空格分隔、用逗号分隔等)对扩展名、URL、头部、状态码、查询字符串和大小过滤器都完全兼容。
示例:
多个头部:
./feroxbuster -u http://127.1 -H Accept:application/json "Authorization: Bearer {token}"
IPv6非递归扫描,开启INFO级日志:
./feroxbuster -u http://[::1] --no-recursion -vv
从标准输入读取URL,只输出结果URL给其他工具:
cat targets | ./feroxbuster --stdin --silent -s 200 301 302 --redirects -x js | fff -s 200 -o js-files
通过Burp代理流量:
./feroxbuster -u http://127.1 --burp
通过SOCKS代理流量:
./feroxbuster -u http://127.1 --proxy socks5://127.0.0.1:9050
通过查询参数传授权令牌:
./feroxbuster -u http://127.1 --query token=0123456789ABCDEF
全速前进:
./feroxbuster -u http://127.1 --threads 200
最多60个并发请求:
./feroxbuster -u http://127.1 --threads 30 --scan-limit 2
只代理状态码为200/302的请求:
./feroxbuster -u http://127.1 --replay-proxy http://localhost:8080 --replay-codes 200 302 --insecure
错误过多自动中止或降速扫描:
./feroxbuster -u http://127.1 --auto-bail
./feroxbuster -u http://127.1 --auto-tune
所有功能演示:
https://epi052.github.io/feroxbuster-docs/docs/examples/
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)