
wpscan v4.1.0
WordPress安全扫描器,用于检测漏洞、枚举插件/主题/用户,并检查弱密码。与WPScan API集成以获取实时漏洞数据。
WPScan
WordPress 安全扫描器
WPScan WordPress 漏洞数据库 - WordPress 安全插件
安装
前提条件
- (可选但强烈推荐:rbenv)
- Ruby >= 3.3 - 推荐:最新稳定版
- Curl >= 7.72 - 推荐:最新稳定版
- 7.29 版本存在段错误(segfault)
- 低于 7.72 的版本在某些情况下可能导致
Stream error in the HTTP/2 framing layer
- RubyGems - 推荐:最新稳定版
- Nokogiri 可能需要通过包管理器安装某些依赖包(具体取决于操作系统),详情见 https://nokogiri.org/tutorials/installing_nokogiri.html
在渗透测试发行版中
使用渗透测试发行版(如 Kali Linux)时,建议通过包管理器(如果可用)安装/更新 wpscan。
在 macOSX 下通过 Homebrew
brew install wpscanteam/tap/wpscan
通过 RubyGems
WPScan 依赖包含原生扩展的 gem(例如 yajl-ruby、nokogiri、ffi),因此在使用 gem install wpscan 之前,必须安装可用的 C 工具链和 Ruby 开发头文件。否则,安装会失败,出现类似 Failed to build gem native extension 或 make: x86_64-linux-gnu-gcc: No such file or directory 的错误(参见 #1844)。
- Debian / Ubuntu:
sudo apt install build-essential ruby-dev - Fedora / RHEL / CentOS:
sudo dnf install @development-tools ruby-devel - Arch Linux:
sudo pacman -S base-devel ruby - Alpine:
sudo apk add build-base ruby-dev - macOS:安装 Xcode 命令行工具(
xcode-select --install)。
然后安装 gem:
gem install wpscan
在 MacOSX 上,如果由于 Apple 的系统完整性保护(SIP)而引发 Gem::FilePermissionError,请安装 RVM 并重新安装 wpscan,或者运行 sudo gem install -n /usr/local/bin wpscan(参见 #1286)
更新
你可以通过 wpscan --update 更新本地数据库。
更新 WPScan 本身可以通过 gem update wpscan 或包管理器完成(对于像 Kali Linux 这样的发行版非常重要:apt-get update && apt-get upgrade),具体取决于 WPScan 的(预)安装方式。
Docker
使用 docker pull wpscanteam/wpscan 拉取仓库。
枚举用户名
docker run -it --rm -v wpscan-db:/wpscan/.cache/wpscan/db wpscanteam/wpscan --url https://target.tld/ --enumerate u
枚举用户名范围
docker run -it --rm -v wpscan-db:/wpscan/.cache/wpscan/db wpscanteam/wpscan --url https://target.tld/ --enumerate u1-100
** 将 u1-100 替换为你选择的用户名范围。
持久化本地数据库
该镜像在构建时内置了一份本地数据库副本。由于上述示例命令使用了 --rm,在运行期间执行的任何数据库更新都会在容器退出时丢弃,因此下一次运行将再次从(可能过时的)内置副本开始。
挂载一个命名卷到 /wpscan/.cache/wpscan/db(容器中 wpscan 用户的缓存目录)可以跨运行保留数据库,这样 wpscan --update 只会重新下载校验和实际发生变化的文件,并且 5 天过期提示的行为与本地安装相同:
docker run -it --rm -v wpscan-db:/wpscan/.cache/wpscan/db wpscanteam/wpscan --update
首次使用时,如果命名卷不存在,将自动创建。
用法
完整的用户文档可以在以下位置找到:https://github.com/wpscanteam/wpscan/wiki/WPScan-User-Documentation
wpscan --url blog.tld 这将使用默认选项扫描博客,在速度和准确性之间取得良好平衡。它会进行版本检测、主题检测以及有趣发现的发现。要枚举插件、主题、用户、备份文件夹等,请使用 -e 选项(例如,-e ap 表示所有插件,-e vp 表示易受攻击的插件,-e bf 表示备份文件夹)。
如果需要更隐蔽的方法,则可以使用 wpscan --stealthy --url blog.tld。因此,使用 --enumerate 选项时,请记得相应设置 --plugins-detection,因为其默认值为 'passive'。
更多选项,请打开终端并输入 wpscan --help(如果你是从源代码构建 wpscan,则应在 git 仓库之外输入命令)。
数据库位置
数据库位置遵循 XDG 基本目录规范:
- 新安装:
~/.cache/wpscan/db(如果设置了$XDG_CACHE_HOME,则为$XDG_CACHE_HOME/wpscan/db) - 现有安装:
~/.wpscan/db(旧路径,为向后兼容而保留)
运行时文件(如默认的 HTTP 缓存和 cookie jar)在设置了 $TMPDIR 时存储于 $TMPDIR/wpscan 下。否则,它们使用相同的用户级 XDG 缓存目录,例如 ~/.cache/wpscan/cache 和 ~/.cache/wpscan/cookie_jar.txt。这些默认值可以通过 --cache-dir 和 --cookie-jar 覆盖。
要将现有安装迁移到 XDG 路径:
mv ~/.wpscan ~/.cache/wpscan
可选:WordPress 漏洞数据库 API
WPScan CLI 工具使用 WordPress 漏洞数据库 API 实时检索 WordPress 漏洞数据。为了使 WPScan 检索漏洞数据,必须通过 --api-token 选项或配置文件(如下所述)提供 API 令牌。可以通过在 WPScan.com 上注册账户来获取 API 令牌。
每天免费提供最多 25 次 API 请求,足以每天扫描大多数 WordPress 网站。当每天的 25 次 API 请求用完后,WPScan 将正常运行,但不包含任何漏洞数据。
你需要多少 API 请求?
- 我们的 WordPress 扫描器为一个 WordPress 版本、每个已安装的插件以及每个已安装的主题各发起一次 API 请求。
- 平均而言,一个 WordPress 网站有 22 个已安装的插件。
从文件加载 CLI 选项
WPScan 可以从配置文件中加载所有选项(包括 --url),检查以下位置(顺序:先到先得):
$XDG_CONFIG_HOME/wpscan/scan.json(如果设置了XDG_CONFIG_HOME)$XDG_CONFIG_HOME/wpscan/scan.yml(如果设置了XDG_CONFIG_HOME)~/.config/wpscan/scan.json(如果未设置XDG_CONFIG_HOME)~/.config/wpscan/scan.yml(如果未设置XDG_CONFIG_HOME)~/.wpscan/scan.json~/.wpscan/scan.ymlpwd/.wpscan/scan.jsonpwd/.wpscan/scan.yml
如果这些文件存在,将加载 cli_options 键中的选项,如果重复出现则覆盖。
例如:
~/.config/wpscan/scan.yml:
cli_options:
proxy: 'http://127.0.0.1:8080'
verbose: true
pwd/.wpscan/scan.yml:
cli_options:
proxy: 'socks5://127.0.0.1:9090'
url: 'http://target.tld'
在当前目录(pwd)下运行 wpscan 等同于 wpscan -v --proxy socks5://127.0.0.1:9090 --url http://target.tld
其他命令行选项可以使用蛇形命名法添加。例如:
cli_options:
user_agent: "Testing UA"
max_threads: 1
headers: "Custom-Header: aaaa; Another Header: bbb"
将 API 令牌保存到文件中
上述功能对于将 API 令牌保存在配置文件中而无需每次通过 CLI 提供非常有用。为此,创建包含以下内容的 ~/.config/wpscan/scan.yml 文件:
cli_options:
api_token: 'YOUR_API_TOKEN'
从环境变量加载 API 令牌(自 v3.7.10 起)
如果存在环境变量 WPSCAN_API_TOKEN,则 API 令牌将自动从该变量加载。如果同时提供了 --api-token CLI 选项,则将使用 CLI 提供的值。
API 服务状态
如果你遇到 WPScan API 连接问题,可以在 https://status.wpscan.com/ 查看服务状态。当发生 API 连接错误时,WPScan 会在错误消息中包含状态页面的链接。
枚举用户名
wpscan --url https://target.tld/ --enumerate u
枚举用户名范围
wpscan --url https://target.tld/ --enumerate u1-100
** 将 u1-100 替换为你选择的用户名范围。
枚举备份文件夹
wpscan --url https://target.tld/ --enumerate bf
这将检查流行 WordPress 备份插件创建的备份文件夹。这些文件夹可能包含敏感数据,如数据库转储、配置文件或完整站点备份。
许可证
WPScan 公共源代码许可证
WPScan 软件(以下简称“WPScan”)采用双重许可 - 版权所有 2011-2019 WPScan 团队。
涉及 WPScan 商业化的情况需要商业非免费许可证。否则,可以根据以下条款免费使用 WPScan。
1. 定义
1.1 “许可证”指本文档。
1.2 “贡献者”指创建、为创建做出贡献或拥有 WPScan 的每个个人或法律实体。
1.3 “WPScan 团队”指 WPScan 的核心开发者。
2. 商业化
商业用途是指以商业优势或货币补偿为目的的使用。
商业化的示例情况包括:
- 使用 WPScan 提供商业化的管理型/软件即服务(SaaS)服务。
- 将 WPScan 作为商业产品或作为其一部分进行分发。
- 将 WPScan 用作增值服务/产品。
不需要商业许可证(因此在以下条款范围内)的示例情况包括(但不限于):
- 渗透测试人员(或渗透测试组织)使用 WPScan 作为其评估工具集的一部分。
- 渗透测试 Linux 发行版,包括但不限于 Kali Linux、SamuraiWTF、BackBox Linux。
- 使用 WPScan 测试你自己的系统。
- 任何非商业用途的 WPScan。
如果你需要购买商业许可证,或者不确定是否需要购买商业许可证,请联系我们 - [email protected]。
免费使用条款和条件:
3. 再分发
在以下条件下允许再分发:
- 随 WPScan 提供未经修改的许可证。
- 随 WPScan 提供未经修改的版权声明。
- 不与商业化条款冲突。
4. 复制
在不与再分发条款冲突的前提下,允许复制。
5. 修改
在不与再分发条款冲突的前提下,允许修改。
6. 贡献
任何贡献均视为贡献者授予 WPScan 团队无限、非排他性的权利,以重复使用、修改和重新许可贡献者的内容。
7. 支持、更新和维护
WPScan 按“现状”提供,不附带任何支持、更新或维护。支持、更新和维护可由 WPScan 团队自行决定是否提供。
8. 免责声明
WPScan 根据本许可证按“现状”提供,不附带任何明示、暗示或法定的保证,包括但不限于对 WPScan 无缺陷、适销性、适用于特定目的或不侵权的保证。
9. 责任限制
在法律允许的范围内,WPScan 按“现状”提供。WPScan 团队在任何情况下均不对因 WPScan 的行为、故障、错误和/或 WPScan 与终端设备、计算机、其他软件或任何第三方、终端设备、计算机或服务之间的任何其他交互而产生的任何损害、成本、费用或任何其他支付承担责任。
10. 声明
未经事先双方同意对网站运行 WPScan 可能在你所在国家属违法行为。WPScan 团队不承担任何责任,并且对 WPScan 的任何误用或造成的损害概不负责。
11. 商标
“wpscan”一词是注册商标。本许可证不授予使用“wpscan”商标或 WPScan 标志的权利。