
CVE-2023-4771 PoC CKEditor 4 AJAXサンプルにおけるクロスサイトスクリプティング(XSS)の脆弱性
CVE-2023-4771 PoC: AJAX サンプルにおける CKEditor 4 のクロスサイトスクリプティング (XSS) 脆弱性
このドキュメントでは、CKEditor を使用して XSS 脆弱性 (CVE-2023-4771) を再現する方法について説明します。 以下の手順は、細心の注意を払って実行してください。
前提条件
• CKEditor インスタンスにアクセスできること。
ファイル: ckeditor/samples/old/ajax.html。
XSS 脆弱性の再現手順:
CKEditor サンプルページにアクセスする お好みのブラウザを開き、この URL にアクセスしてください: /ckeditor/samples/old/ajax.html。この URL は、テスト対象の Web アプリケーション上にある CKEditor サンプルページを指している必要があります。
新しいエディタインスタンスを作成する: CKEditor サンプルページに移動し、新しいエディタインスタンスを作成できるコントロール(ボタン、リンクなど)を見つけてクリックしてください。ページ上の CKEditor インスタンスが有効になります。
ソースモードに切り替える: CKEditor インスタンスの準備ができたら、「ソース」ボタンを見つけてクリックしてください。このボタンを使用すると、エディタ内の生の HTML コンテンツを操作できます。
XSS ペイロードを注入する: ソースビューには、HTML コードを記述できるテキストエリアがあります。以下は、このテキストエリアに注入する XSS ペイロードの例です:
<p>Xss<!-- --!>-->Attack</p>
このペイロードは、この HTML をレンダリングした際にアラートを表示させるロジックです。
エディタインスタンスを削除する: ペイロードを貼り付けたら、"Remove Editor" というボタン/リンクを探してクリックしてください。これにより CKEditor インスタンスが無効になり、コンテンツが HTML として出力されます。
XSS アラートを確認する: アプリケーションに脆弱性がある場合、エディタが削除されてコンテンツが HTML としてレンダリングされた後、「XSS」というメッセージのアラートボックスが表示されます。
ajax.html 内の脆弱なコード: document.getElementById( 'editorcontents' ).innerHTML = html = editor.getData();

参照:
• https://cve.mitre.org/cgi-bin/cvename.cgi?name=2023-4771
PoC のクレジット: Sahar Shlichove
CVE レポートのクレジット: Rafael Pedrero