EMLOG Pro 2.6.2 SQL注入漏洞CVE-2026-34788
EMLOG Pro 是一个基于 PHP 语言的开源博客及网站建设系统,其后台界面清爽,操作直观,文章、分类、评论、附件管理一应俱全。
一、基本情况
EMLOG Pro 的整体风格务实省心,稳定性强,适合不想折腾复杂系统、追求够用、好用、长期稳定的站长,支持伪静态与基础 SEO。

EMLOG Pro 的模板与插件生态轻量化,修改成本低,适合二次开发,既能做纯粹个人博客,也能改成小型资讯站、笔记站或单页官网。
栋科技漏洞库关注到 EMLOG Pro 在 2.6.2 及之前版本中存在的 SQL 注入漏洞,该漏洞被追踪为CVE-2026-34788,CVSS 3.1评分8.1。
二、漏洞分析
CVE-2026-34788 存在于是 EMLOG Pro 在 2.6.2 及之前版本中,其 include/model/tag_model.php 文件第 168 行存在 SQL 注入漏洞。
其 include/model/tag_model.php 文件第 168 行,updateTagName () 函数将用户输入直接拼接到 SQL 查询语句中未使用参数化查询。
由于直接将用户输入的变量进行字符串插值,也未进行正确的转义处理($this->db->escape_string ()),导致存在 SQL 注入攻击风险。
攻击者可以通过后台管理功能构造恶意的 SQL 片段,实现对数据库的非法查询、篡改敏感数据,甚至可以获取系统更高级别的控制权。
因此,该漏洞的潜在风险包括已认证管理员可获取数据库完整读写权限,可能导致权限提升与数据泄露等等。
1、存在漏洞的代码(include/model/tag_model.php,第 166-170 行):
function updateTagName($tagId, $tagName, $kw, $title, $description)
{
$sql = "UPDATE $this->table SET tagname='$tagName', kw='$kw', title='$title', description='$description' WHERE tid=$tagId";
$this->db->query($sql);
}
注:同一文件中的其他方法(如第 162 行的 updateBlogTags)已正确使用$this->db->escape_string()进行转义,
但updateTagName()方法未做该处理。
2、数据流向:
$_POST → Input::postStrVar() → addslashes() → updateTagName() → $this->db->query()
仅使用了addslashes()函数进行防护,
在部分配置环境下(如 GBK 字符集、NO_BACKSLASH_ESCAPES 模式等),该防护手段无法抵御 SQL 注入攻击。
3、修复建议
使用 $this->db->escape_string() 对用户输入进行安全转义,或直接使用参数化查询。
function updateTagName($tagId, $tagName, $kw, $title, $description) {
$tagId = (int)$tagId;
$tagName = $this->db->escape_string($tagName);
$kw = $this->db->escape_string($kw);
$title = $this->db->escape_string($title);
$description = $this->db->escape_string($description);
$sql = "UPDATE `$this->table` SET tagname='$tagName', kw='$kw', title='$title', description='$description' WHERE tid=$tagId";
$this->db->query($sql);
}
三、POC概念验证
1、以管理员身份登录后台
2、进入标签管理页面
3、编辑任意标签,在标签名称输入框中注入 SQLPayload
4、示例 Payload:
管理员已设置登录后刷新可查看5、保存并观察 SQL 执行结果
四、影响范围
EMLOG Pro <= 2.6.2
五、修复建议
EMLOG Pro >= 2.6.9
六、参考链接
管理员已设置登录后刷新可查看