首页 网络安全 正文
  • 本文约1449字,阅读需7分钟
  • 219
  • 0

EMLOG Pro 2.6.2本地文件包含漏洞CVE-2026-34787

摘要

栋科技漏洞库关注到 EMLOG Pro 2.6.2 及之前版本的本地文件包含漏洞,该漏洞现已被追踪为CVE-2026-34787,CVSS 3.X评分6.5。

EMLOG Pro 是一款轻量、稳定、易用的 PHP 开源博客程序(CMS),它的定位是简洁实用,不臃肿、不花哨,专注内容展示与管理。

一、基本情况

EMLOG Pro 结构小巧,运行速度快,对服务器要求低,低配主机也能流畅运行,其上手门槛低,适合个人博客、笔记、小站快速搭建。

EMLOG Pro 2.6.2本地文件包含漏洞CVE-2026-34787

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

六、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接