针对 CVE-2025-11554 中所述漏洞的利用概念验证,该漏洞涉及 i-Educar 软件中通过任意请求用户类型端点实现权限提升的可能性。
没有更改用户类型所需权限的用户,可以通过向负责此操作的端点发送任意请求来修改已注册用户类型的权限。这允许低权限用户通过向其关联的用户类型授予最大权限来提升自身权限,从而危及应用程序的所有部分。
为演示该漏洞,我们将模拟一条可在真实利用场景中使用的攻击路径。首先,我们有一个用户 Usuário sem Privilégios,其关联的用户类型为 Baixíssimo。

Baixíssimo 用户类型没有关联任何权限,并被分配了最低访问级别 Biblioteca,其级别为 8。

出于本次演示的目的,我们可以看到,编辑用户类型的权限对此角色是禁用的,这意味着与其关联的用户不应能够查看、创建/编辑或删除用户类型。

以 Usuário sem Privilégios 身份登录后,我们可以确认没有分配任何权限,因为对他来说没有任何可用部分。

权限提升过程的第一步是识别用户被分配的用户类型。在应用程序返回的渲染 HTML 文档的各种请求响应中,此信息可以在文档中第一个 script 元素内的 dataLayer 变量中找到。例如,我们可以通过访问应用程序的主页来验证此信息。在本次演示中,将使用 Burp Suite 进行请求分析和操作。

识别出与当前用户关联的用户类型后,下一步是确定其在数据库中存储的标识符。为此,应使用端点 /usuarios/tipos/<cod_tipo_usuario>。由于用户类型标识符是数字且连续的,因此可以枚举所有存储的用户类型,直到找到与当前用户关联的那个。
例如,标识符为 1 的用户类型默认是管理用户类型 Administrador。

在应用程序的响应中,我们可以在 processes 对象中看到与该用户类型关联的权限。每个特定部分由唯一的数字标识符标识,用户类型对该部分的访问级别由数字 0、1、2 或 3 决定:
我们可以观察到,管理用户类型对所有部分都具有访问级别 3。

当请求标识符为 2 的用户类型时,我们看到它对应于与当前用户关联的用户类型。该用户类型对所有部分的访问级别均为 0。


考虑到以上所有信息,我们可以继续进行权限提升。为此,必须向同一端点发送一个 POST 请求,其中包含与当前用户关联的用户类型标识符相对应的用户类型标识符。请求体应包含参数 _method、name、level、description 和 processes。并非所有必需值都能立即理解,但由于这是一个开源项目,请求的正确结构可以通过代码审查或在本地实例上进行手动测试轻松发现。
在下面的请求中,我们将所有部分的访问级别修改为最大访问权限 (3),并将用户类型从 Biblioteca 更改为 Poli-institucional(level 参数设置为值 1)。这意味着该用户将获得对所有已注册机构的访问权限,而不仅仅是其创建时关联的那个机构。

之后,重新加载主页,我们可以确认之前无权限的用户现在拥有应用程序上下文中的所有可用权限,这些权限是被任意授予的。

易受攻击端点的路由可以在 routes/web.php 文件中找到。

这些路由使用的易受攻击方法可以在 app/Http/Controllers/AccessLevelController.php 文件中找到。这些方法在执行对用户类型的请求操作之前,不会对请求用户进行权限检查。


该软件被用作多个公共机构的学校管理解决方案。每个实例可能包含各种关于已注册用户和学生的敏感信息,例如身份证明文件和医疗记录(健康状况)。在低权限恶意用户或攻击者控制的账户利用此漏洞的场景中,这些记录的机密性、完整性和可用性将面临风险。对该项目进行快速安全评估即可发现此弱点。