CVE-2026-33911OpenEMR是一款广泛使用的开源电子健康记录和医疗实践管理应用软件。在8.0.0.3版本之前,该系统存在一个跨站脚本(XSS)安全漏洞。问题的核心在于服务器在处理包含`title`参数的POST请求时,将用户输入的数据通过`json_encode()`函数封装成JSON格式返回,但错误地将HTTP响应的Content-Type设置为`text/html`。这种配置导致浏览器将服务器返回的JSON数据误认为是HTML文档进行解析。经过身份验证的攻击者可以构造包含恶意HTML标签或JavaScript代码的请求,诱导受害者访问,从而在受害者的浏览器会话中执行任意恶意脚本,可能导致会话劫持或敏感数据泄露。
该漏洞利用了浏览器对响应内容类型的处理机制以及服务器配置错误。正常情况下,API接口应返回`application/json`类型的响应,浏览器会将其作为纯数据处理。然而,OpenEMR在受影响版本中,虽然使用了`json_encode()`对数据进行序列化,但未指定正确的MIME类型。当攻击者在`title`参数中注入如`<script>alert(1)</script>`或`<img src=x onerror=alert(1)>`等载荷时,服务器将其编码并放入JSON字符串中返回。由于响应头为`text/html`,浏览器会尝试渲染该内容。如果载荷没有被正确转义或上下文允许,浏览器将执行其中的JavaScript代码。由于CVSS向量显示需要低权限用户(PR:L)和用户交互(UI:R),攻击者通常需要通过社会工程学手段诱导已登录的管理员或用户点击特定的链接或按钮,从而触发恶意代码的执行,进而窃取Cookie或进行进一步的内网攻击。