下载地址

feroxbuster v2.10.1 字典整合版

简介

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

  • 输入或后跟您希望添加到当前扫描队列的新 URLadd``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/

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐