CVE-2025-13159Flo Forms是WordPress平台上一款流行的拖拽式表单构建插件,在1.0.43及之前所有版本中存在严重的存储型跨站脚本漏洞。该漏洞源于插件通过未认证的AJAX端点(flo_form_submit)接收SVG文件上传,但未对上传文件内容进行充分的验证和过滤。攻击者无需任何认证即可上传包含恶意JavaScript代码的SVG文件。当WordPress管理员在后台访问或预览这些上传的SVG文件时,嵌入其中的恶意脚本将执行,可能导致管理员账户被劫持、敏感信息泄露,甚至进一步实现对整个网站的完全控制。此漏洞利用门槛低、危害大,建议立即采取修复措施。
该漏洞的核心问题在于SVG文件上传功能的输入验证不足。SVG(可缩放矢量图形)作为一种XML格式的文件,可以包含<script>标签和事件处理器属性(如onload、onerror等)。攻击者可以构造如下恶意SVG文件:<?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg"><script>alert(document.cookie)</script></svg>。插件的flo_form_submit端点直接接受文件上传请求(无需认证),并将文件保存到服务器指定目录。当管理员通过媒体库或直接访问该SVG文件时,浏览器会解析SVG并执行其中的JavaScript代码。由于SVG文件可以在多种上下文中被触发执行,攻击者可以窃取管理员的认证cookie、创建新的管理员账户、或在后台执行任意操作。漏洞存在于admin/class-flo-forms-admin.php、includes/class-flo-forms.php和public/class-flo-forms-public.php等多个文件中。