
CVE-2025-11554에 설명된 취약점 악용에 대한 개념 증명으로, i-Educar 소프트웨어의 사용자 유형 변경 엔드포인트에 대한 임의 요청을 통한 권한 상승 가능성에 관한 것입니다.
CVE-2025-11554에 설명된 취약점 악용에 대한 개념 증명으로, i-Educar 소프트웨어에서 사용자 유형 엔드포인트에 대한 임의 요청 중 권한 상승 가능성에 관한 것입니다.
사용자 유형을 변경하는 데 필요한 권한이 없는 사용자도 이 작업을 담당하는 엔드포인트에 대한 임의 요청을 통해 등록된 사용자 유형의 권한을 수정할 수 있습니다. 이를 통해 낮은 권한의 사용자가 자신과 연결된 사용자 유형에 최대 권한을 부여하여 권한을 상승시키고, 애플리케이션의 모든 섹션을 손상시킬 수 있습니다.
취약점을 입증하기 위해 실제 악용 시나리오에서 사용될 수 있는 공격 경로를 시뮬레이션합니다. 먼저, Baixíssimo 사용자 유형과 연결된 Usuário sem Privilégios 사용자가 있습니다.

Baixíssimo 사용자 유형에는 연결된 권한이 없으며, 레벨 8을 가진 최저 접근 수준인 Biblioteca가 할당되어 있습니다.

이 데모의 목적상, 이 역할에 대해 사용자 유형 편집 권한이 비활성화되어 있음을 확인할 수 있습니다. 즉, 이 역할과 연결된 사용자는 사용자 유형을 보거나 생성/편집하거나 삭제할 수 없어야 합니다.

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 파일에서 찾을 수 있습니다. 이러한 메서드는 사용자 유형에 대해 요청된 작업을 실행하기 전에 요청 사용자에 대한 권한 확인을 수행하지 않습니다.


이 소프트웨어는 다양한 공공 기관에서 학교 관리 솔루션으로 사용됩니다. 각 인스턴스에는 등록된 사용자와 학생에 대한 신분증 문서 및 의료 기록(질병 정보)과 같은 다양한 유형의 민감한 정보가 잠재적으로 포함되어 있습니다. 낮은 권한의 악의적인 사용자나 공격자가 제어하는 계정이 이 취약점을 악용하는 시나리오에서 이러한 기록의 기밀성, 무결성 및 가용성이 위험에 처하게 됩니다. 프로젝트에 대한 빠른 보안 평가를 통해 이 약점을 발견할 수 있습니다.