WordPress:未认证路径遍历导致条件远程代码执行

Hacker News Top 新闻

摘要

本文报道了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/)

开发环境命令

使用以下命令前请确保容器环境正在运行。

首次启动开发环境

按照以下步骤使用本地开发环境:

  1. 访问https://github.com/WordPress/wordpress-develop并将仓库复刻到您的GitHub账户
  2. 使用git clone https://<your-username>/wordpress-develop.git将复刻的仓库克隆到本地
  3. 使用cd wordpress-develop进入克隆的仓库目录
  4. 通过git remote add upstream https://github.com/WordPress/wordpress-develop.git添加原始仓库作为upstream远程
  5. 之后可通过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)

此命令将:

  1. 将仓库复刻到您的账户(使用--org标志可复刻到组织)
  2. 将仓库克隆到您的机器
  3. 将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以登录站点。

生成新密码(推荐):

  1. 进入仪表板
  2. 点击左侧“用户”菜单
  3. 点击admin用户下方的“编辑”链接
  4. 向下滚动并点击“生成密码”
  5. 使用此密码(推荐)或修改后点击“更新用户”

如果使用生成的密码,请务必保存至安全位置(如密码管理器)。

相似文章

黑客正利用WordPress表单插件严重漏洞接管网站

Reddit r/ArtificialInteligence

黑客正积极利用WordPress插件Everest Forms Pro中的一个严重远程代码执行漏洞(CVE-2026-3300),该漏洞影响1.9.12及以下版本。漏洞允许将未转义的表单值传递给eval(),从而实现完全控制网站。Wordfence敦促立即更新插件。

一个严重的 PHP 漏洞可能导致网站今天宕机

The Verge

两个严重的 PHP 远程代码执行漏洞(严重程度评分为 9.2/10,影响 PHP 5 及后续版本)促使官方紧急发布补丁,网络安全机构建议尚未安装补丁的网站下线。超过 130 万台主机及所有 WordPress 网站都可能受到影响,专家预计,补丁发布后几分钟内就会出现大规模攻击。