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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-27621 — CVE-2026-27621 - TypiCMS Core has Stored Cross-Site Scripting (XSS) via SVG File Upload | Kitploit
工具/GitHubGitHub/lukasz-rybak/cve-2026-27621
Vulnerability AnalysisWeb Application ExploitationWeb SecurityPapers & ResearchLearning & Education
GitHublukasz-rybak/cve-2026-27621

CVE-2026-27621

CVE-2026-27621 - TypiCMS Core has Stored Cross-Site Scripting (XSS) via SVG File Upload

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-27621:TypiCMS Core 存在存储型跨站脚本攻击(XSS),通过 SVG 文件上传

概述

字段详细信息
CVE IDCVE-2026-27621
严重性中危
安全通告查看通告
发现者Lukasz Rybak

受影响产品

  • typicms/core(版本:< 16.1.7)

CWE 分类

  • CWE-79:Web页面生成时对输入的未恰当中和('跨站脚本攻击')

详细信息

I. 摘要

TypiCMS 的文件上传模块存在存储型跨站脚本攻击(XSS)漏洞。该应用允许拥有文件上传权限的用户上传 SVG 文件。虽然存在 MIME 类型验证,但未对 SVG 文件内容进行净化。攻击者可上传特制的 SVG 文件,其中包含恶意 JavaScript 代码。当其他用户(如管理员)通过应用程序查看或访问此文件时,脚本会在其浏览器中执行,导致该用户会话被劫持。

SVG 解析逻辑中的一个错误加剧了此问题:若上传的 SVG 不含 viewBox 属性,会导致服务器返回 500 错误。但这并不能缓解 XSS 漏洞,因为攻击者可以轻松地在恶意负载中加入有效的 viewBox 属性。

II. 漏洞详情

  • 漏洞类型: 存储型跨站脚本攻击(XSS)(CWE-79)
  • 受影响组件: TypiCMS\Modules\Core\Http\Requests\FileFormRequest.php 和 TypiCMS\Modules\Core\Services\FileUploader.php
  • 受影响版本: <= 16.0.5

此漏洞源于两个主要方面:

  1. 宽松的文件验证: FileFormRequest 明确将 svg 列入允许上传的 MIME 类型白名单。
  2. 内容未净化: FileUploader 服务将 SVG 文件保存到服务器时,未解析并净化其内容以移除潜在恶意元素(如 <script> 标签或 on* 事件处理程序)。

当默认文件系统磁盘设置为 public 时,上传的 SVG 文件会存储在公开可访问的目录中,使得攻击者通过直接 URL 访问文件并触发 XSS 负载变得轻而易举。

III. 概念验证(PoC)

  1. 创建恶意 SVG 文件: 创建一个名为 malicious.svg 的文件,内容如下。其中包含 viewBox 属性以绕过应用解析错误。

    root@kitploit:~
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
        <script>
            // 简单的 PoC 演示漏洞
            alert('TypiCMS 中的 XSS!你的会话 Cookie 是:' + document.cookie);
        </script>
        <text x="10" y="50">如果你看到此文本,说明脚本已执行。</text>
    </svg>
    
  2. 上传恶意文件:

    • 以拥有文件上传权限的用户身份登录 TypiCMS 管理面板。
    • 导航到“文件”模块(例如 /admin/files)。
    • 上传 malicious.svg 文件。应用将接受该文件并保存。 image
image
  1. 触发 XSS:
    • 应用将为上传的文件提供一个公开 URL,通常格式为 http://<your-site>/storage/files/malicious.svg。
    • 任何访问此 URL 的用户都会在浏览器中执行嵌入的 JavaScript。
    • 攻击者可以将此链接发送给特权用户(例如管理员)。当管理员点击链接时,其会话 Cookie 可能被盗取,攻击者也可代表该用户执行操作。
image image

IV. 影响

成功利用此漏洞可使攻击者在受害者浏览器上下文中执行任意 JavaScript。尽管会话 Cookie 上设置了 HttpOnly 标志阻止通过 document.cookie 直接窃取会话 ID,但攻击者仍可通过代表受害者执行操作来实现账户完全劫持。

影响包括:

  • 通过操作伪造实现账户接管: 攻击者的脚本可从受害者浏览器向应用 API 发送经过身份验证的请求。这使攻击者能执行受害者有权执行的任何操作,例如:

    • 为攻击者创建新的管理员账户。
    • 修改受害者的电子邮件地址和密码。
    • 删除或修改所有内容、用户和设置。
  • 敏感信息泄露: 脚本可读取受害者在管理面板中查看的任何页面内容。这包括用户列表(包含姓名和电子邮件)、私有应用设置及其他敏感数据,随后可将其外传至攻击者控制的服务器。

  • 钓鱼和社会工程: 脚本可操纵管理面板 UI 显示伪造的登录表单,诱骗用户重新输入凭据,或将用户重定向至恶意网站。

  • 按键记录: 脚本可捕获受害者在被攻破页面上输入的任何信息。

由于攻击者可以以已认证管理员的身份执行任何操作,此漏洞实际上会导致完全应用沦陷,即使无法直接访问会话 Cookie。风险等级为高。

V. 推荐补丁与缓解措施

建议采用纵深防御方法来缓解此漏洞。

  1. 主要修复:净化 SVG 内容: 最稳健的解决方案是在上传时净化 SVG 文件。保存文件前,应解析文件以移除所有危险元素,包括 <script>、<style>、<foreignObject> 标签以及所有 on* 事件属性。这可以通过专用的 SVG 净化库实现。

  2. 次要修复:禁用 SVG 上传: 如果 SVG 上传不是应用的关键功能,最简单且最安全的解决方案是完全禁用它。可以通过从 TypiCMS\Modules\Core\Http\Requests\FileFormRequest.php 中允许的 MIME 类型列表中移除 'svg' 来实现。

    root@kitploit:~
    // 在 FileFormRequest.php 中
    // 之前:
    $fileRule = 'mimes:jpeg,gif,png,...,svg,...|max:...';
    
    // 之后:
    $fileRule = 'mimes:jpeg,gif,png,...,pdf,...|max:...'; // 移除了 'svg'
    
  3. 加固 - 内容安全策略(CSP): 为应用实施严格的内容安全策略(CSP)头部。配置良好的 CSP 可阻止内联脚本执行,从而缓解此 XSS 漏洞的影响。

  4. 加固 - 从独立域名提供用户内容: 将所有用户上传的文件托管在独立的无 Cookie 域名上。这是一种高效的隔离用户生成内容与应用主体的安全措施,可阻止脚本访问会话 Cookie 或与应用 DOM 交互。

参考资料

  • https://github.com/TypiCMS/Core/security/advisories/GHSA-xfvg-8v67-j7wp
  • https://nvd.nist.gov/vuln/detail/CVE-2026-27621
  • https://github.com/TypiCMS/Core/commit/d480a0be1e8e7c0600bb9a325bb11920ee66497d
  • https://github.com/advisories/GHSA-xfvg-8v67-j7wp

免责声明

此 CVE 已依照协调漏洞披露实践进行负责任的披露。此处提供的信息仅供教育及防御用途。

下载工具