Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-14855-POC — SureForms <= 2.2.0 - 未认证存储型跨站脚本 | Kitploit
工具/GitHubGitHub/ch4r0nn/cve-2025-14855-poc
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试Payload 开发
GitHubch4r0nn/cve-2025-14855-poc

CVE-2025-14855-POC

SureForms <= 2.2.0 - 未认证存储型跨站脚本

查看仓库
2127个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-14855:SureForms WordPress 插件存储型 XSS 概念验证

  • 目标: WordPress 插件“SureForms”
  • 插件地址: https://wordpress.org/plugins/sureforms/
  • 漏洞类型: 存储型跨站脚本(XSS)
  • CVE: CVE-2025-14855
  • 参考: https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/sureforms/sureforms-220-unauthenticated-stored-cross-site-scripting
  • 身份认证: 未认证(访客/公开)
  • 影响: 通过管理员会话劫持实现远程代码执行(RCE)
  • 发现者: https://nguyentiendung1006.wixsite.com/tiendung

1. 摘要

SureForms 插件中存在一个严重的存储型 XSS 漏洞。该漏洞源于 entries.js 中不安全的客户端实现:用户输入会被程序化地解码(逆转服务端净化处理),随后通过 dangerouslySetInnerHTML 渲染,且没有进行适当的客户端净化。这使得未认证的攻击者能够通过标准表单字段注入恶意 JavaScript 载荷,绕过 WordPress 默认的 wp_kses 过滤器。

2. 版本识别

若要验证目标站点是否正在运行 SureForms,请检查翻译文件头,其中通常包含版本号。

目标 URL: http://target-site.com/wp-content/plugins/sureforms/languages/sureforms.pot

验证命令:

root@kitploit:~
curl -s "http://target-site.com/wp-content/plugins/sureforms/languages/sureforms.pot" | grep "Project-Id-Version"

3. 逆向工程与根因分析

该漏洞位于基于 React 的管理界面中,该界面负责查看表单条目(entries.js)。

3.1. “自动解码器”逻辑(绕过机制)

在压缩后的 entries.js 文件中,有一个辅助函数(在分析版本中标识为 Xv),用于处理 HTML 实体。

代码逻辑(重构):

root@kitploit:~
// Function Xv: Pre-processing field values
var Xv = function(input) {
    var value = input.value;
    
    // VULNERABILITY ROOT CAUSE:
    // If the string contains HTML entities (e.g., &lt;), create a textarea,
    // inject the content, and extract the value. 
    // This effectively DECODES HTML entities back to raw HTML tags.
    // Example: "&lt;img ...&gt;" becomes ""
    
    if (typeof value === "string" && value.match(/&[a-zA-Z0-9#]+;/)) {
        var textarea = document.createElement("textarea");
        textarea.innerHTML = value;
        
        // Logic to revert sanitization
        if (textarea.value.includes("&lt;") || textarea.value.includes("&gt;")) {
             value = textarea.value; // Now 'value' contains RAW HTML
        }
    }
    return { ...input, value: value };
}

分析: 此函数绕过了后端安全机制。即使 WordPress 正确地将 <script> 以 &lt;script&gt; 形式存储在数据库中,此函数也会在从 API 获取数据后立即将其转换回 <script>。

3.2. 危险 Sink

解码后,数据被传递给渲染组件(标识为 Jv)。

代码逻辑(重构):

root@kitploit:~
// Function Jv: Rendering the field
var Jv = function(props) {
    var field = props.field;
    var val = field.value; // This value is now raw HTML (post-decoding)

    // THE TRIGGER: Check if the string looks like HTML
    if (typeof val === "string" && val.match(/<[^>]+>/g)) {
        // THE SINK: Render using dangerouslySetInnerHTML WITHOUT client-side sanitization (e.g., DOMPurify)
        return React.createElement("span", {
            dangerouslySetInnerHTML: { __html: val }
        });
    }
    
    // Safe render for non-HTML text
    return React.createElement("span", null, val);
}

4. 攻击流程

  1. 注入: 未认证的攻击者在前端提交表单。攻击者不使用原始 HTML 标签(这些标签会被 WordPress 后端剥离/净化),而是发送HTML 实体。

  2. 存储: WordPress 将输入(例如 &lt;img...)视为安全文本并存储在数据库中。

  3. 执行(陷阱):

    • 管理员导航到 SureForms > Entries。
    • 浏览器通过 JSON API 获取条目详情。
    • Xv 函数检测到实体,并将 &lt;img... 解码回 ` Entries。
  4. 单击步骤 1 中提交的条目以查看详情。

  5. 结果: 浏览器将执行 JavaScript 载荷(alert('XSS_SUREFORMS'))。

下载工具