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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-44401 — Typemill CMS 中的持久性 XSS:Markdown 解析器未经过滤地放行 javascript: URI。Writeup + PoC。 | Kitploit
工具/GitHubGitHub/sn0x-sharma/cve-2026-44401
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试学习与教育
GitHubsn0x-sharma/cve-2026-44401

CVE-2026-44401

Typemill CMS 中的持久性 XSS:Markdown 解析器未经过滤地放行 javascript: URI。Writeup + PoC。

查看仓库
110天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
ChatGPT Image Aug 11, 2026, 02_18_30 PM
CVECVE-2026-44401
CWECWE-79(Web 页面生成过程中对输入的错误中和)
受影响版本typemill/typemill >= 2.0.0, < 2.23.0
修复版本v2.23.0(提交 31b72ea)
认证要求是,任何具有 system:update ACL 权限的角色(默认为 admin 或 manager)
CVSS(报告方)7.6 / 中高(Medium-High)
CVSS-B (VulnCheck, v4.0)4.6 CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:A/VC:N/VI:L/VA:L/SC:N/SI:L/SA:L
致谢sn0x(@sn0x-sharma)
公告VulnCheck

评分为中危(Medium)而非严重(Critical),因为它需要 PR:H(主题配置权限)+ UI:A(受害者必须点击链接)——但有效载荷是存储型的,因此每个点击链接的访问者都会触发。

概述

Typemill 是一款平面文件 Markdown CMS。其 Markdown 解析器在将链接目标写入 href 属性之前,不会验证链接目标的 URI 协议(scheme)。具有主题配置权限的用户(例如 Landingpage Intro Segment 文本字段,该字段接受原始 Markdown)可以存储 javascript: 链接。该链接会在公共主页上未经转义地渲染,并在任何点击它的访问者的浏览器中执行——持久型(存储型)XSS。

根因

ParsedownExtension::inlineLink() — system/typemill/Extensions/ParsedownExtension.php,第 934–996 行(v2.22.0,最后一个存在漏洞的标签)。

相对链接和 media/ 链接会加上基础 URL 前缀,但在将其赋给 href 之前,没有任何代码检查 URI 协议(scheme):

root@kitploit:~
# start typemill: if relative link or media-link
$href = $matches[1];
if($href[0] == '/')
{
    $href = $this->baseUrl . $href;
}
elseif(substr( $href, 0, 6 ) === "media/")
{
    $href = $this->baseUrl . '/' . $href;
}
# end typemill

$Element['attributes']['href'] = $href;   // <-- no scheme validation

[Click me](javascript:alert(document.domain)) → <a href="javascript:alert(document.domain)">Click me</a>。

此特定 sink 的渲染路径:themes/cyanine/home/landingpageIntro.twig → TwigMarkdownExtension.php → ParsedownExtension.php。任何其他通过同一解析器处理用户 Markdown 的主题字段也同样受影响。

修复方案(v2.23.0)

root@kitploit:~
              # end typemill
-
+
+             # block dangerous URI schemes (e.g. javascript:, vbscript:, data:)
+             $scheme = parse_url($href, PHP_URL_SCHEME);
+             if ($scheme !== null && !in_array(strtolower($scheme), ['http', 'https', 'mailto', 'ftp'], true))
+             {
+                 $href = '#';
+             }
+
              $Element['attributes']['href'] = $href;

与原始报告中提出的允许列表(http、https、mailto、ftp)一致。通过对比 v2.22.0 和 v2.23.0 标签之间的 ParsedownExtension.php 差异,确认了修复内容。

权限说明

主题设置路由(GET /tm/themes、POST /api/v1/theme)受 system/update ACL 资源门控——根据 Typemill 自身的路由定义(routes/web.php、routes/api.php),该权限默认授予 manager 角色,而不仅仅是 admin。因此,受影响的范围不仅限于顶级管理员账户。

复现步骤

  1. 以具有主题配置权限的用户身份登录 → 系统 → 主题 → 配置(当前主题,例如 Cyanine)。

    image
  2. 展开 Landingpage Intro Segment → 在 "Text for your landingpage intro (use markdown)" 中输入:

    root@kitploit:~
    [Click me](javascript:alert(document.domain))
    
    image
  3. 保存。以任意用户身份访问主页并点击该链接 → JS 会在该访问者的会话中执行。

    image

概念验证(PoC)

CVE-2026-44401_POC.py - 两种模式:

root@kitploit:~
# Offline: exercises the parser directly against a Typemill checkout
# (composer install already run, so vendor/ exists)
python3 CVE-2026-44401_POC.py local --source /path/to/typemill

# ...or straight against a running container, same way it was originally verified
python3 CVE-2026-44401_POC.py local --docker typemill --container-path /var/www/html

# Live: logs in, stores the payload via the theme-settings API, confirms the
# raw javascript: href on the public homepage, restores the original value
python3 CVE-2026-44401_POC.py remote --url http://localhost:8080 \
    --username admin --password '********'

最小手动复现(报告验证时所用的方式):

root@kitploit:~
php -r '
  require "vendor/autoload.php";
  require "system/typemill/Extensions/ParsedownExtension.php";
  $p = new \Typemill\Extensions\ParsedownExtension("",[],null);
  echo $p->markup($p->text("[x](javascript:alert(1))"));
'
# vulnerable: <p><a href="javascript:alert(1)">x</a></p>
# patched:    <p><a href="#">x</a></p>

影响

  • admin/manager 会话劫持(Cookie 窃取)
  • 通过注入的表单/重定向窃取凭据
  • 以受害者身份链式执行更多需要认证的操作

参考

  • Typemill 仓库
  • 修复版本 — v2.23.0
  • VulnCheck 公告
下载工具