EMLOG Pro 2.6.8 代码执行漏洞CVE-2026-34228
EMLOG Pro 以轻、快、简、稳为核心,兼顾易用性与扩展性,比 WordPress 更轻量化、资源占用更低,比部分极简博客系统更完整。
一、基本情况
EMLOG Pro 是一款基于 PHP 开源内容管理系统(CMS),支持图片、音频、视频上传、分类、批量管理,支持 Markdown 语法写作。

EMLOG Pro 主要用于个人博客和微型网站建设,内置AI文本生成、文生图功能,非常适合追求高效、低维护成本的站长与个人开发者。
栋科技漏洞库关注到EMLOG Pro 在 2.6.8 之前版本的 CSRF 导致的代码执行漏洞,现已追踪为CVE-2026-34228,CVSS 4.0评分8.7。
二、漏洞分析
CVE-2026-34228 是 EMLOG Pro 在 2.6.8 之前版本因 CSRF 所致的代码执行漏洞,可能导致任意文件写入和远程代码执行(RCE)。
其后台升级接口存在严重的安全缺陷:其通过 GET 参数接收远程 SQL 和 ZIP 文件的 URL,但在下载和处理过程中未验证 CSRF 令牌。
后台升级接口通过 GET 参数接收远程 SQL 和 ZIP 链接,服务器先下载并执行 SQL 文件,然后下载 ZIP 文件并直接解压至网站根目录。
但这一流程并未校验 CSRF 令牌,这就导致了攻击者只需诱骗已登录管理员访问恶意链接,就可以实现任意 SQL 执行与任意文件写入。
已登录管理员被诱导访问恶意链接触发服务器下载并执行恶意的 SQL 脚本,随后将恶意 ZIP 包直接解压至网站根目录,后果不堪设想。
1、漏洞位置
admin/upgrade.php#L38
admin/upgrade.php#L47
admin/upgrade.php#L79
include/lib/common.php#L759
include/lib/common.php#L793
admin/views/js/common.js#L583
2、根本原因分析
admin/upgrade.php#L39–L40 从 GET 参数读取 source 和 upsql
admin/upgrade.php#L47 下载远程 SQL 文件
admin/upgrade.php#L71 执行该 SQL
admin/upgrade.php#L79 下载远程 ZIP 文件
admin/upgrade.php#L83 将其解压至 ../
include/lib/common.php#L793 使用 ZipArchive::extractTo () 且未做路径校验
3、该代码路径未调用 LoginAuth::checkToken ()
三、POC概念验证
(一)攻击准备
1、复现环境
管理员账号:admin
使用登录后的管理员 Cookie 访问升级接口
2、恶意 SQL 文件:
CREATE TABLE IF NOT EXISTS emlog_poc (id INT PRIMARY KEY);
INSERT INTO emlog_poc (id) VALUES (1) ON DUPLICATE KEY UPDATE id = VALUES(id);
3、恶意 ZIP 包中包含 poc.php:
<?php echo "EMLOG-UPGRADE-PWN";
(二)复现步骤
1、登录后台管理面板并获取管理员会话。
2、发送以下请求:
管理员已设置登录后刷新可查看3、访问上传的文件:
管理员已设置登录后刷新可查看4、查询数据库以验证SQL是否已执行。
(三)复现结果
- 升级接口返回:succ
- http://127.0.0.1:8080/poc.php 返回:EMLOG-UPGRADE-PWN
- 新增数据库表:emlog_poc
- 数据库记录:id = 1
(四)安全影响
攻击者可在管理员登录状态下通过构造CSRF请求利用,导致服务器被执行任意SQL语句、写入任意文件,造成服务器被完全控制。
(五)修复建议
- 限制升级接口仅接受 POST 请求
- 强制校验 CSRF 令牌
- 禁止执行远程 SQL 文件
- 要求对升级包进行签名校验或至少校验文件校验和
- 解压前校验所有 ZIP 文件的解压路径,防止路径遍历攻击
四、影响范围
EMLOG Pro < 2.6.8
五、修复建议
EMLOG Pro >= 2.6.9
六、参考链接
管理员已设置登录后刷新可查看