Uncanny Groups for LearnDash (uncanny-learndash-group) 是 LearnDash LMS (sfwd-lms) 的第三方插件。该插件允许 Group Leaders(自定义 LearnDash 角色)在前端管理自己 LearnDash 分组的用户。
Group Leaders 可以将现有用户添加到他们的分组中。现有用户会被自动添加(即无需接受任何邀请)。
如果站点管理员启用了名为“Allow group leaders to edit users”(允许组长编辑用户)的插件功能,Group Leaders 还可以更改其组成员的姓名和电子邮件地址。该功能默认处于禁用状态。
如果启用了“Allow group leaders to edit users”设置,Group Leader 可以更改管理员的电子邮件地址,从而获得管理员访问权限。当与 CVE-2024-8350 联合利用时,无论“Allow group leaders to edit users”设置的状态如何,所有 Group Leaders 都能成为管理员。
该插件在将现有组成员(用户)添加到新分组时,未检查其角色。如果启用了“Allow group leaders to edit users”,Group Leader 可以通过将现有管理员添加到其分组来获得站点管理员权限。将现有管理员添加到分组后,Group Leader 只需更改管理员的电子邮件地址并重置密码即可。
Uncanny Owl 于 2024-08-26 发布了不充分的补丁(6.1.0.1)。该漏洞无法再被利用来成为管理员(除非与 CVE-2024-8350 联合利用),但仍可被任何 Group Leader 利用来成为编辑(或更低角色)。必须启用“Allow group leaders to edit users”。
Uncanny Owl 于 2024-09-11 发布了完整补丁(6.1.1)。
Group Leader 能够更改用户的联系信息,原因是 REST API 中缺少权限检查。当与 CVE-2024-8349 联合利用时,所有 Group Leaders 都能给自己管理员权限。
该插件有一个全站权限设置,名为“Allow group leaders to edit users”(允许组长编辑用户)。启用后,Group Leaders 可以更改其组成员的姓名和电子邮件地址。此功能默认禁用。
然而,禁用该功能仅能阻止设置在前端显示。Group Leader 仍然可以通过发送具有相同操作的 POST 请求来执行操作。由于 Group Leaders 可以将所有用户添加到他们的分组中,因此他们也可以更改所有用户的姓名和电子邮件地址。
https://example.com/wp-json/ulgm_management/v1/edit_user/?
action=edit-user&group-id={Group ID}&edit-user-id={user ID}&first_name=Lorem&last_name=Ipsum&email={攻击者的电子邮件地址}
(分组 ID 和用户 ID 可以在页面内容中找到。)
当与 CVE-2024-8349 联合利用时,所有 Group Leaders 都能给自己管理员权限。
Uncanny Owl 于 2024-08-26 发布了不充分的补丁(6.1.0.1)。该漏洞被部分修复,但再次仅在前端。必须启用“Allow group leaders to edit users”设置。
如果 Group Leader 的分组中有管理员,则 Group Leader 无法再显示用于更改管理员电子邮件地址的模态框。然而,REST API 仍然允许 Group Leader 执行此操作。
Group Leader 仍然可以通过联合利用 CVE-2024-8350 和 CVE-2024-8349 成为管理员。Group Leader 首先需要将编辑者添加到其分组中,并接管编辑者的账户。然后,该 Group Leader(现为编辑者)可以通过 LearnDash 后端添加管理员,并通过 Uncanny Groups 的 REST API 更改管理员的电子邮件地址。
Uncanny Owl 于 2024-09-11 发布了完整补丁(6.1.1)。
Uncanny Owl 对漏洞报告处理得当,并在 90 天的负责任的披露窗口内解决了这些漏洞。
站点管理员应注意,Group A 的 Group Leader 可以在未经用户同意的情况下,将属于 Group B 的用户添加到 Group A 中。如果 Group A 和 Group B 属于两家不同的公司,这可能会成为保密性和 GDPR 合规性问题。然而,这并非漏洞,因为该插件本身就是如此设计的。
我早在 2021 年就已提交了一项功能请求,希望解决这一保密性问题。Uncanny Owl 将重新考虑我的功能请求。受影响的站点在此期间可以使用 ulgm_gdpr_is_group_leader_allowed 过滤器和自定义前端模板覆盖来实现自己的解决方案。