EMLOG Pro 2.6.13反射跨站脚本CVE-2026-46686
EMLOG Pro是国内开发、基于PHP+MySQL轻量专业博客/CMS 建站程序,资源占用低,适合个人博客、技术笔记、小型资讯站搭建。
一、基本情况
EMLOG Pro支持宝塔、1Panel、Docker 一键安装,兼容 PHP5.6~8.x、MySQL/MariaDB 数据库,即便是新手,几分钟即可搭建完成。
EMLOG Pro内置了原生Markdown编辑器,非常适合个人技术博客、自媒体日记、软件资源站、企业小型资讯专栏、笔记归档等站点。

EMLOG Pro内置大模型接口,支持 AI 写文、AI 文生图,并且还内置了完善分类、标签、搜索、评论、投稿功能,支持访客注册互动。
栋科技漏洞库关注到EMLOG Pro 2.6.13及更早版本中存在的反射跨站脚本,现在已经被追踪为CVE-2026-46686,CVSS 4.0评分8.5。
二、漏洞分析
CVE-2026-46686漏洞位于EMLOG Pro相关版本中的内容管理系统后台用户管理页面搜索功能,漏洞是一个高危反射型跨站脚本漏洞。
该漏洞源于EMLOG Pro相关版本的后台用户搜索模块(admin/user.php)的keyword参数仅经过addslashes转义,
渲染至模板admin/views/user.php的value属性前未做HTML转义,可在管理员后台会话中触发反射型跨站脚本漏洞。
具体来说,由于keyword参数仅经过addslashes处理(该函数仅用于防御SQL注入,不会转义HTML特殊字符),
随后直接输出至HTML输入标签的value属性中。
攻击者可构造携带HTML标签的恶意链接,在管理员后台会话内执行任意JavaScript代码,窃取管理员会话Cookie或执行后台敏感操作。
1、漏洞代码路径
入参处理代码(include/lib/input.php 第47至51行):
function getStrVar($var, $var_default = '') {
$str = isset($_GET[$var]) ? addslashes(trim($_GET[$var])) : '';
return $str ? addslashes(trim($str)) : $var_default;
}
2、路由处理代码(admin/user.php 第20行):
$keyword = Input::getStrVar('keyword');
3、模板渲染代码(admin/views/user.php第39行)——漏洞输出点:
$keyword = Input::getStrVar('keyword');
4、攻击向量
GET /admin/user.php?keyword="><script>alert(document.cookie)</script>
三、POC概念验证
1、解析流程:
经过addslashes处理:双引号被转义为\",但尖括号<、>未做处理。
输出至HTML后内容为:value="\"><script>alert(document.cookie)</script>"
首个\"会闭合value属性,后续<script>标签会被当作全新HTML标签注入。
浏览器会解析并执行这段JavaScript代码。
2、复现步骤
前置条件
目标管理员已登录Emlog后台。
3、攻击者知晓网站后台访问地址。
4、攻击流程
步骤1:构造恶意链接
管理员已设置登录后刷新可查看步骤2:通过钓鱼邮件、即时通讯消息或社会工程手段诱导管理员点击该链接。

5、危害评估
窃取后台登录凭证EM_AUTHCOOKIE,完全接管管理员账号 ;取后台页面内容,获取数据库配置、用户名单等数据
6、漏洞利用限制
必须由管理员主动点击恶意链接,攻击依赖钓鱼手段。
现代浏览器开启HttpOnly标识的Cookie可缓解会话劫持风险。
7、修复方案
输出处增加HTML转义(推荐方案)
修改admin/views/user.php第39行代码:
<!-- Before Fix -->
<input type="text" name="keyword" value="<?= $keyword ?>" ...>
<!-- After Fix -->
<input type="text" name="keyword" value="<?= htmlspecialchars($keyword, ENT_QUOTES, 'UTF-8') ?>" ...>
四、影响范围
EMLOG Pro ≤ 2.6.13
五、修复建议
EMLOG Pro ≥ 2.6.22
六、参考链接
管理员已设置登录后刷新可查看