WordPress:未认证路径遍历导致条件远程代码执行
摘要
本文报道了WordPress中的一个关键安全漏洞,该漏洞允许未认证的路径遍历,导致条件远程代码执行,并提供来自开发仓库的设置说明。
查看缓存全文
缓存时间: 2026/09/22 18:56
WordPress/wordpress-develop
来源:https://github.com/WordPress/wordpress-develop
WordPress
欢迎来到WordPress开发仓库!请查阅贡献者手册(https://make.wordpress.org/core/handbook/)以了解如何提交错误报告、贡献补丁、测试更改、编写文档或以任何您能参与的方式加入社区。
快速入门
本地开发环境
WordPress是一个基于PHP、MySQL和JavaScript的项目,并使用Node管理其JavaScript依赖。我们提供了本地开发环境以帮助您快速启动并运行。
您需要对如何使用计算机命令行有基本了解,这将帮助您:
- 设置本地开发环境
- 在需要时启动和停止环境
- 运行测试
您的计算机需要安装Node和npm:
- Node是用于开发者工具的JavaScript运行时
- npm是Node附带的包管理器
如果您已为操作系统安装了包管理器,设置过程将非常简单:
- macOS:
brew install node - Windows:
choco install nodejs - Ubuntu:
apt install nodejs npm
如未使用包管理器,请访问Node.js下载页面(https://nodejs.org/en/download/)获取安装程序和二进制文件。
注意: WordPress目前仅官方支持Node.js 20.x和npm 10.x。
您还需要安装并运行容器环境,例如Docker Desktop(https://www.docker.com/products/docker-desktop)。容器环境是支持本地开发环境的虚拟化软件,可像普通应用程序一样安装。
注意: WordPress目前仅官方支持Docker,但其他容器环境通常兼容,例如:
- Colima (https://github.com/abiosoft/colima)
- OrbStack (https://orbstack.dev/)
- Podman Desktop (https://podman-desktop.io/)
- Rancher Desktop (https://rancherdesktop.io/)
开发环境命令
使用以下命令前请确保容器环境正在运行。
首次启动开发环境
按照以下步骤使用本地开发环境:
- 访问https://github.com/WordPress/wordpress-develop并将仓库复刻到您的GitHub账户
- 使用
git clone https://<your-username>/wordpress-develop.git将复刻的仓库克隆到本地 - 使用
cd wordpress-develop进入克隆的仓库目录 - 通过
git remote add upstream https://github.com/WordPress/wordpress-develop.git添加原始仓库作为upstream远程 - 之后可通过
git pull --ff upstream trunk等命令保持分支更新
或者,如果您已安装GitHub CLI(https://cli.github.com/),可直接运行:
gh repo fork WordPress/wordpress-develop --clone(文档https://cli.github.com/manual/gh_repo_fork)
此命令将:
- 将仓库复刻到您的账户(使用
--org标志可复刻到组织) - 将仓库克隆到您的机器
- 将
WordPress/wordpress-develop添加为upstream并设为默认remote仓库
完成后记得运行cd wordpress-develop。
复刻并克隆仓库到本地后,在终端运行以下命令:
npm install
npm run build:dev
npm run env:start
npm run env:install
您的WordPress站点将可通过 http://localhost:8889 访问。您可以在项目根目录的.env文件中查看或修改配置。
监视文件变更
如果您要修改WordPress核心文件,应启动文件监视器以按需构建或复制文件:
npm run dev
要停止监视器,按 ctrl+c。
运行WP-CLI(https://make.wordpress.org/cli/handbook/)命令
npm run env:cli -- <命令>
WP-CLI提供许多实用命令(https://developer.wordpress.org/cli/commands/)可用于操作WordPress站点。当文档提到运行wp时,请改用npm run env:cli --。例如:
npm run env:cli -- help
运行测试
以下命令分别运行PHP测试套件和端到端测试套件:
npm run test:php
npm run test:e2e
为PHP测试添加额外参数时,使用--后接命令行选项(https://docs.phpunit.de/en/10.4/textui.html#command-line-options):
npm run test:php -- --filter <筛选条件>
npm run test:php -- --group <分组>
运行JavaScript(QUnit)测试:
npm run grunt qunit:compiled
qunit:compiled会先构建再运行测试套件。QUnit运行器从构建的build/目录加载脚本,因此直接运行npm run grunt qunit需要先完成npm run build,否则每个测试都会因jQuery is not defined错误而失败。
检查工作流文件
GitHub Actions工作流在特权软件供应链环境中运行,因此所有工作流文件必须遵守高质量和安全标准。.github/workflows目录下的所有YAML工作流文件在修改时会使用Actionlint(https://github.com/rhysd/actionlint)和Zizmor(https://github.com/zizmorcore/zizmor)进行静态扫描。
建议在提交工作流文件更改前,使用包管理器本地安装这两个工具并运行检查:
- Actionlint安装说明(https://github.com/rhysd/actionlint/blob/main/docs/install.md)
- Zizmor安装说明(https://docs.zizmor.sh/installation/)
运行Actionlint:
actionlint
对所有工作流文件运行Zizmor(注意末尾的句点):
zizmor .
注意: Zizmor检测到的问题不会导致工作流运行失败。相反,生成的报告将提交至GitHub代码扫描并通过状态检查显示。根据仓库的代码扫描配置设置,某些本地报告的问题可能会被忽略。
生成代码覆盖率报告
PHP代码覆盖率报告每日生成(https://github.com/WordPress/wordpress-develop/actions/workflows/test-coverage.yml)并提交至Codecov.io(https://app.codecov.io/gh/WordPress/wordpress-develop)。
在本地容器环境安装并启动后,可使用以下命令生成代码覆盖率报告:
npm run test:coverage
此命令将生成HTML、PHP和文本三种格式的覆盖率报告,并保存在coverage文件夹中。
注意: 生成代码覆盖率报告需要xDebug,这可能会显著降低PHPUnit速度。通过传递基于选择的选项(如--group或--filter)可缩短总耗时,但会导致报告不完整。
重启开发环境
如果您修改了docker-compose.yml或.env文件中的配置,可能需要重启环境:
npm run env:restart
停止开发环境
当不使用环境时可停止它以节省计算机资源:
npm run env:stop
再次启动开发环境
重新启动环境只需一个命令:
npm run env:start
重置开发环境
开发环境可被重置,此操作将销毁数据库并尝试移除已拉取的容器镜像:
npm run env:reset
Apple Silicon机型与旧版MySQL/MariaDB
较旧的MySQL和MariaDB容器镜像不支持Apple Silicon处理器(M1、M2等),包括:
- MySQL 5.7及更早版本
- MariaDB 5.5
在Apple Silicon机型上使用这些版本时,必须创建包含以下内容的docker-compose.override.yml文件:
services:
mysql:
platform: linux/amd64
此外,需要禁用容器环境(如果适用)中的“在Apple Silicon上使用Rosetta运行x86/AMD64仿真”设置。
凭证配置
默认环境凭证:
- 数据库名:
wordpress_develop - 用户名:
root - 密码:
password
登录站点请访问 http://localhost:8889/wp-admin
- 用户名:
admin - 密码:
password
注意: 使用Codespaces时,请从终端的端口选项卡打开端口转发的URL,并追加/wp-admin以登录站点。
生成新密码(推荐):
- 进入仪表板
- 点击左侧“用户”菜单
- 点击admin用户下方的“编辑”链接
- 向下滚动并点击“生成密码”
- 使用此密码(推荐)或修改后点击“更新用户”
如果使用生成的密码,请务必保存至安全位置(如密码管理器)。
相似文章
黑客正利用WordPress表单插件严重漏洞接管网站
黑客正积极利用WordPress插件Everest Forms Pro中的一个严重远程代码执行漏洞(CVE-2026-3300),该漏洞影响1.9.12及以下版本。漏洞允许将未转义的表单值传递给eval(),从而实现完全控制网站。Wordfence敦促立即更新插件。
漏洞经纪人出价50万美元收购WordPress RCE漏洞。我用GPT5.6和25美元发现了一个
安全研究人员使用GPT5.6 Sol Ultra发现了一个WordPress预授权远程代码执行漏洞,该漏洞对漏洞经纪人来说可能价值50万美元,展示了AI在网络安全研究中的能力。
一个严重的 PHP 漏洞可能导致网站今天宕机
两个严重的 PHP 远程代码执行漏洞(严重程度评分为 9.2/10,影响 PHP 5 及后续版本)促使官方紧急发布补丁,网络安全机构建议尚未安装补丁的网站下线。超过 130 万台主机及所有 WordPress 网站都可能受到影响,专家预计,补丁发布后几分钟内就会出现大规模攻击。
黑客攻击苹果 - 从SQL注入到远程代码执行 — ProjectDiscovery博客
ProjectDiscovery发布的一篇详细报告,阐述了他们如何发现苹果Book Travel门户中通过Masa/Mura CMS存在的严重SQL注入漏洞,并实现了远程代码执行。
@aacle_: 一次注入,一次配置写入,就能在开发者机器上实现完全远程代码执行。这就是 CVE-2025-53773,也是……背后的模式。
本文剖析了 CVE-2025-53773 背后的 MCP 安全攻击链:一次简单的提示注入就能让开发代理修改自身配置并实现远程代码执行。文章详细介绍了逐跳升级的过程以及阻止它的关键控制措施。