Skip to content

Broken Access Control

High
edersoares published GHSA-53vj-fq8x-2mvg Aug 28, 2024

Package

i-Educar (Portábilis)

Affected versions

2.9

Patched versions

None

Description

Resumo

Um atacante possuindo apenas privilégios mínimos de visualização na seção de configurações é capaz de alterar seu tipo de usuário para Administrador (ou para outro tipo com super-permissões).

Detalhes

Qualquer usuário, que seja de algum tipo de usuário que possua pelo menos permissão de visualização de configurações de tipos de usuário é capaz de alterar o seu próprio nível para tornar-se administrador. Um exemplo de tipo de usuário com permissionamento reduzido seria:

image

PoC

Para exploração dessa vulnerabilidade, consideremos o tipo de usuário Non-perm (que possui, unica e exclusivamente, a permissão especificada na imagem na seção de Detalhes acima):

image

Consideremos, também, que exista o usuário sem privilégios cuja matrícula seja pwnuser (repare o tipo de usuário):

image

Podemos verificar o baixo permissionamento do usuário pwnuser ao logarmos na dashboard (note o cookie de sessão utilizado):

image

Após isso, podemos realizar uma requisição POST para o arquivo ieducar/intranet/educar_usuario_cad.php especificando o parâmetro nivel_usuario_ para o ID de algum tipo de usuário específico (no nosso caso, o tipo de usuário Administrador possui ID 1):

image

Dessa forma, o usuário pwnuser torna-se do tipo Administrador, obtendo todos os privilégios (note que o cookie de sessão permaneceu inalterado, provando que continuamos com o mesmo usuário):

image

Impacto

Qualquer usuário é capaz de tornar-se administrador, o que pode levar à roubo de contas, alteração de tarefas administrativas, etc.

Mitigação

A falha ocorre no arquivo localizado em ieducar/intranet/educar_usuario_cad.php na linha 446, que não realiza as verificações sobre o nível de permissionamento atual do usuário para realizar alterações. O método Editar da classe clsCadastro verifica se o usuário tem permissão para realizar a edição:

image

Observando o método canChange, é possível concluir que a alteração só acontece em três cenários:

  1. Se o usuário que estiver realizando a alteração for admin
  2. Se o usuário que estiver sendo alterado não existir
  3. Se o usuário que estiver sendo alterado NÃO for admin

image

Portanto, é necessário que uma validação mais robusta seja implementada, garantindo que o usuário não possa alterar seu nível, exceto se possuir a permissão de fato.

Severity

High

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N

CVE ID

CVE-2024-45058

Credits