一个针对 CVE-2026-17532 的 Docker 实验室,该漏洞是 WordPress 插件 Seraphinite Accelerator 中的一个未认证反射型 XSS,当登录的管理员打开一个精心构造的链接时,可链式利用实现远程代码执行。
完整文章:博客
python3 或 php(仅用于构建漏洞利用 URL - exploit.sh 会使用其中任意一个)docker compose down -v # 清理旧数据
docker compose up -d
docker compose logs -f wpcli
等待 LAB READY,然后按 Ctrl-C。WordPress 现在位于 http://127.0.0.1:8080,已激活存在漏洞的插件并启用了页面缓存。
wpcli 容器是一次性安装程序;设置完成后即退出。这是正常现象。
在 http://127.0.0.1:8080/wp-admin 以管理员身份登录
adminadmin-lab-pw构建精心构造的 URL 并在同一个浏览器中打开:
./exploit.sh # 或:./exploit.sh http://127.0.0.1:8080
页面会挂起约 5 秒 - 这是插件 selfTest 分支中字面意义上的 sleep( 5 ),并非实验室故障。随后 XSS 运行,利用你的管理员会话写入 Web Shell,并将 Shell URL 记录到浏览器控制台。
http://127.0.0.1:8080/wp-content/plugins/hello.php?c=id
或者不带 ?c= 打开,即可获得交互式输入框。
xss.js 在管理员会话中并以同源方式运行,因此它可以:
GET wp-admin/plugin-editor.php 并从 HTML 中抓取一次性编辑器 nonce。POST 到 admin-ajax.php,携带 action=edit-theme-plugin-file,将 PHP Web Shell 写入 hello.php。为什么选择 hello.php? 因为它处于未激活状态。当你编辑一个已激活的插件且修改会导致站点致命错误时,WordPress 会检测到错误并还原文件。未激活的插件会跳过该检查,因此 Shell 会被写入并保持存在。任何可写的未激活插件文件都可以;hello.php 只是 WordPress 默认自带的文件。
整个脚本被内联到精心构造的 URL 中,因此无需攻击者服务器。
docker compose down -v