CVE-2021-47783CVE-2021-47783是Phpwcms内容管理系统中的一个中危安全漏洞,CVSS评分5.4,影响版本为1.9.30。该漏洞属于文件上传安全缺陷与存储型跨站脚本攻击(XSS)的复合型漏洞。攻击者利用该漏洞可以通过平台的多次文件上传功能,上传包含恶意JavaScript代码的SVG文件。当其他用户访问或查看这些被上传的SVG文件时,嵌入其中的恶意脚本代码将在受害者浏览器中执行,从而实现窃取用户会话Cookie、劫持用户账号、进行钓鱼攻击或传播恶意软件等恶意行为。由于该漏洞需要认证才能利用,攻击者需要拥有有效的用户账号,但低权限账户即可完成攻击。漏洞的根源在于Phpwcms在文件上传过程中未对SVG文件内容进行充分的安全过滤和清洗,导致攻击者可以绕过常规的安全检查机制。此类漏洞对Web应用的安全性构成严重威胁,特别是在多用户协作环境中,攻击者可能通过存储型XSS横向移动攻击其他用户。
该漏洞的技术原理涉及文件上传验证不严与SVG文件解析特性两个层面。Phpwcms 1.9.30在处理文件上传请求时,虽然可能对上传文件的扩展名和MIME类型进行了基本检查,但对SVG(Scalable Vector Graphics)文件的内容审查存在严重缺陷。SVG是一种基于XML的矢量图形格式,支持内嵌JavaScript代码(通过script标签或事件处理器如onload、onerror等)。攻击者构造恶意SVG文件,将JavaScript代码嵌入到SVG标签中,例如:<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.cookie)">。当服务器接收上传请求时,系统仅验证文件扩展名为.svg或MIME类型为image/svg+xml,但不会解析SVG内容或过滤其中的脚本代码。被上传的恶意SVG文件存储在服务器上后,当其他用户通过浏览器访问该文件时,浏览器会解析SVG并执行其中的JavaScript代码。由于浏览器的同源策略限制被绕过,攻击者可以窃取受害者的认证令牌、会话ID等敏感信息,进而冒充合法用户进行操作。漏洞利用需要攻击者具备Phpwcms系统的有效账号,且拥有文件上传权限,通常为普通用户角色即可满足要求。