EMLOG Pro 2.6.2本地文件包含漏洞CVE-2026-34787
EMLOG Pro 是一款轻量、稳定、易用的 PHP 开源博客程序(CMS),它的定位是简洁实用,不臃肿、不花哨,专注内容展示与管理。
一、基本情况
EMLOG Pro 结构小巧,运行速度快,对服务器要求低,低配主机也能流畅运行,其上手门槛低,适合个人博客、笔记、小站快速搭建。

EMLOG Pro的后台界面清爽,操作直观,文章、分类、评论、附件管理一应俱全,支持伪静态与基础SEO,无需复杂配置就可以上线。
栋科技漏洞库关注到 EMLOG Pro 2.6.2 及之前版本的本地文件包含漏洞,该漏洞现已被追踪为CVE-2026-34787,CVSS 3.X评分6.5。
二、漏洞分析
CVE-2026-34787漏洞是 EMLOG Pro 2.6.2 及之前版本中存在的本地文件包含漏洞,该漏洞可能通过包含非 PHP 文件可造成信息泄露。
漏洞使得已认证管理员可访问包含服务器文件系统中的任意文件,若攻击者可上传 / 放置 PHP 文件并进行包含,可实现远程代码执行。
漏洞源于 admin/plugin.php 文件第 80 行对 GET 请求参数 $plugin 处理不当,直接将其拼接到 require_once 路径中而未进行安全过滤。
攻击者在满足 CSRF 令牌绕过条件的情况下,可以包含并执行服务器文件系统中的任意 PHP 文件,最终导致远程代码执行(RCE)。
1、存在漏洞的代码(admin/plugin.php,第 79-80 行):
if (empty($action) && $plugin) {
require_once "../content/plugins/$plugin/{$plugin}_setting.php";
2、详情
$plugin 变量来自 Input::getStrVar ('plugin'),该方法仅执行了 addslashes () 和 trim () 处理。
尽管 addslashes () 能够阻断空字节(%00),但在部分服务器配置下,无法防范使用 ../ 序列发起的路径遍历攻击。
3、数据流向:
$_GET['plugin'] → Input::getStrVar() (addslashes + trim) → $plugin → require_once
说明:该接口需要身份认证(管理员权限)。
页面虽对其他操作执行了 LoginAuth::checkToken () 令牌校验,但当 $action 为空时,第 80 行的 require_once 会在令牌校验之前执行。
4、修复建议
通过已安装插件白名单校验 $plugin 参数:
if (empty($action) && $plugin) {
$plugin = basename($plugin);
if (!checkPlugin($plugin)) {
emMsg('Invalid plugin');
}
$settingFile = EMLOG_ROOT . '/content/plugins/' . $plugin . '/' . $plugin . '_setting.php';
if (file_exists($settingFile) && is_file($settingFile)) {
require_once $settingFile;
}
}
三、POC概念验证
1、以管理员身份认证
2、发送包含构造好的 plugin 参数的请求:
管理员已设置登录后刷新可查看3、在未过滤空字节的服务器配置中,该请求会触发文件包含漏洞;
仅使用路径遍历(不含空字节)的方式同理可实现攻击:
管理员已设置登录后刷新可查看四、影响范围
EMLOG Pro <= 2.6.2
五、修复建议
EMLOG Pro >= 2.6.9
六、参考链接
管理员已设置登录后刷新可查看