█ █░ ██▓███ ▒██ ██▒ ██▀███ ▄▄▄ ▓██ ██▓
▓█░ █ ░█░▓██░ ██▒ ▒▒ █ █ ▒░▓██ ▒ ██▒▒████▄ ▒██ ██▒
▒█░ █ ░█ ▓██░ ██▓▒ ░░ █ ░▓██ ░▄█ ▒▒██ ▀█▄ ▒██ ██░
░█░ █ ░█ ▒██▄█▓▒ ▒ ░ █ █ ▒ ▒██▀▀█▄ ░██▄▄▄▄██ ░ ▐██▓░
░░██▒██▓ ▒██▒ ░ ░ ▒██▒ ▒██▒░██▓ ▒██▒ ▓█ ▓██▒ ░ ██▒▓░
░ ▓░▒ ▒ ▒▓▒░ ░ ░ ▒▒ ░ ░▓ ░░ ▒▓ ░▒▓░ ▒▒ ▓▒█░ ██▒▒▒
▒ ░ ░ ░▒ ░ ░░ ░▒ ░ ░▒ ░ ▒░ ▒ ▒▒ ░▓██ ░▒░
░ ░ ░░ ░ ░ ░░ ░ ░ ▒ ▒ ▒ ░░
░ ░ ░ ░ ░ ░░ ░
░ ░
WPX — WordPress X-Ray 扫描器 | WAF 绕过
WPX (WordPress X-Ray) 是一款安全扫描器,利用 Camoufox 解决 Cloudflare 和 WAF 挑战。它镜像这些会话以执行快速的异步插件和主题发现、用户枚举以及多站点检测。
注意:WPX 会从 data.wpscan.org 下载必要的扫描元数据(指纹、检测规则)。
asyncio 和 curl_cffi 构建,实现快速枚举。wpscan。运行 WPX 的最简单方式 —— 无需 Python 或依赖项。
docker run ghcr.io/greg-randall/wpx -u https://example.com
docker run -v $(pwd):/output ghcr.io/greg-randall/wpx -u https://example.com -o /output/results.txt
若未挂载卷,WPX 每次运行都会重新下载元数据。挂载命名卷可避免此问题:
docker run -v wpx-data:/app/.wpx_data ghcr.io/greg-randall/wpx -u https://example.com
需要时手动刷新元数据:
docker run -v wpx-data:/app/.wpx_data ghcr.io/greg-randall/wpx --update
git clone https://github.com/greg-randall/wpx.git
cd wpx
pip install .
python3 -m camoufox fetch
python3 wpx.py -u https://example.com
python3 wpx.py -u https://example.com --api-key YOUR_API_KEY
扫描指定数量的排名靠前插件(例如前 500 个):
python3 wpx.py -u https://example.com --plugins-limit 500
扫描所有曾经创建的插件。WPX 可遍历整个历史库(约 11 万个插件,包括约 5.5 万个当前活跃插件),以发现目标上的所有软件痕迹。 警告:这将发起大量请求,根据您的线程数和目标响应速度,可能需要数小时才能完成。
python3 wpx.py -u https://example.com --full-scan
用户枚举自动运行。要限制作者 ID 探测范围或完全禁用它:
python3 wpx.py -u https://example.com --users-limit 20
python3 wpx.py -u https://example.com --enum-users-disable
静默运行扫描并将结果保存到文件(不带 ANSI 颜色代码):
python3 wpx.py -u https://example.com --quiet --output results.txt
更新插件列表并按流行度排序:
python3 data/wpx_fetch_plugins.py --sort-by score
输出 data/plugins_active.txt(默认前 5000)和 data/plugins_dead.txt(默认前 2500)。
若要改变数量限制:
python3 data/wpx_fetch_plugins.py --active-limit 10000 --dead-limit 5000
data/ 目录包含处理后的插件数据集和维护工具:
data/plugins_active.txt:按流行度评分(安装数 × 下载数的几何平均数)排序的热门活跃插件别名。data/plugins_dead.txt:按历史安装数量排序的热门已关闭/已移除插件别名(数据来源于之前的目录运行或 Archive.org 快照)。data/plugins_catalog.json:活跃插件的元数据缓存。data/plugins_dead.jsonl:仅追加的已关闭插件元数据缓存,包含最后已知的安装数。新条目在加载时覆盖旧条目(最后写入获胜)。data/archive.org-cache/:来自 Wayback Machine 的原始 HTML 快照,用于恢复在首次目录运行前就已关闭的插件的历史安装数量。data/wpx_fetch_plugins.py:获取器,结合 WordPress.org API、SVN 仓库和 Archive.org 来构建并丰富插件列表。wpx.py)data/wpx_fetch_plugins.py)此工具仅用于授权的安全测试。开发者不对滥用或损坏负责。
| 标志 | 描述 |
|---|
-u, --url | 目标 WordPress URL(必需)。 |
--api-key | WPScan 漏洞数据库 API 密钥。 |
-t, --threads | 扫描的并发线程数(默认:20)。 |
--plugins-limit | 限制扫描的插件数量(例如 500、5000)。 |
--full-scan | 扫描所有可用的插件别名(最多 5 万以上)。 |
--update | 强制更新 WPScan 元数据文件。 |
--no-browser | 跳过 Camoufox WAF 绕过,直接连接。 |
--enum-users-disable | 跳过用户枚举。 |
--users-limit N | 通过 ?author=N 探测的作者 ID 数量(默认:10)。 |
--stealth [N] | 在请求之间添加随机延迟。下限为 1 秒,上限为 2×N 秒(设置该标志时的默认值:1.5 → 1–3 秒)。同时将线程数限制为 3。 |
--idle-timeout N | 如果在 N 秒内未收到服务器响应,则中止(默认:60,0 = 禁用)。 |
-q, --quiet | 隐藏横幅、状态和进度 —— 仅显示发现结果。 |
-o, --output FILE | 将输出写入文件(纯文本,无 ANSI 代码)。 |
| 标志 | 描述 |
|---|
--sort-by | 如何对活跃插件排序:score(默认)、active_installs、downloaded。 |
--active-limit N | 写入 plugins_active.txt 的活跃插件别名数量(默认:5000,0 = 全部)。 |
--dead-limit N | 写入 plugins_dead.txt 的已关闭插件别名数量(默认:2500,0 = 全部)。 |
--force | 即使目录已存在,也重新获取所有内容。 |
--fetch-limit N | 从 API 获取 N 个活跃插件后停止(0 = 全部)。 |
--max-age HOURS | 如果目录的新鲜度超过 N 小时,则跳过 API 获取(默认:24)。 |