
Notes に保存される XSS
OpenKM を使用しているクライアントのペネトレーションテスト中に、アプリケーションの notes セクションで保存型 XSS を発見しました。基本的に、メモを保存する際、通常の HTML が何らかの理由で許可されており、そのままレンダリングされていました。ご存知のとおり、<script> タグや javascript の on-* イベントは、XSS サニタイゼーションのルールセットの一部としてサニタイズ/置換されていました。
しかし、<a> タグで "javascript:" を使用すると、そのサニタイズ/置換ルールをバイパスできることがわかりました。
問題を再現するには、notes セクションに次のペイロードを送信します。
<a href='javascript:alert(1)'>Click here for more info</a>
ペイロードをトリガーするには、ユーザーがそれをクリックするように誘導される必要があります。
影響: 低権限ユーザーが悪意のある javascript ペイロードを送信して、キー入力を記録したり、ユーザーを悪意のある Web サイトにリダイレクトしたり、被害者がリンクをクリックしたときにトリガーされるデータを被害者のコンテキストで送信したりすることができます。
アプリケーション内の影響を受ける領域: すべての notes セクション。
影響を受けるバージョン: OpenKM Community Edition 6.3.11
CVSS 3.1: CVSS:3.0/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N (Medium 5.4)
推奨事項: サニタイゼーションを改善し、おそらく 'javascript' キーワードを完全に置換してください。または、'javascript:' を置換するためのルールを追加してください。
参考: 修正: https://github.com/openkm/document-management-system/pull/336 CVE: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-40317 NIST: https://nvd.nist.gov/vuln/detail/CVE-2022-40317