
Proof-of-concept хранимого XSS для раздела заметок OpenKM, демонстрирующий обход правил санитизации с помощью javascript:, с оценкой по CVSS 3.1 и рекомендациями по устранению уязвимости.
Хранимый XSS в заметках
Хранимый XSS был обнаружен в разделе заметок приложения, когда мы проводили пентест клиента, использовавшего OpenKM. По сути, при сохранении заметок обычный HTML каким-то образом допускался и отображался как есть. Как вы знаете, теги
Однако мы обнаружили, что использование "javascript:" в теге <a> обходит это правило очистки/замены.
Чтобы воспроизвести проблему, вы можете отправить следующий payload в разделе заметок.
<a href='javascript:alert(1)'>Click here for more info</a>
Чтобы payload сработал, пользователя необходимо обманом заставить кликнуть по нему.
С точки зрения воздействия: пользователь с низкими привилегиями может отправлять вредоносные javascript-пейлоады для перехвата нажатий клавиш, перенаправлять пользователей на вредоносные сайты или отправлять данные от имени жертвы; всё это срабатывает, когда жертва кликает по ссылке.
Затронутые области приложения: Все разделы заметок.
Затронутые версии: 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