
CVE-2025-11554で説明されている脆弱性の概念実証です。これは、i-Educarソフトウェアのユーザータイプ変更エンドポイントへの任意リクエストを通じた権限昇格の可能性に関するものです。
CVE-2025-11554 に記載された脆弱性の悪用に関する概念実証です。これは、i-Educar ソフトウェアにおいて、ユーザータイプのエンドポイントへの任意リクエスト中に権限昇格が発生する可能性に関するものです。
ユーザータイプを変更するために必要な権限を持たないユーザーが、この操作を担当するエンドポイントへの任意リクエストを通じて、登録済みユーザータイプの権限を変更できます。これにより、低権限ユーザーは、自分が関連付けられているユーザータイプに最大権限を付与することで権限を昇格させ、アプリケーションのすべてのセクションを侵害できます。
この脆弱性を実証するために、実際の悪用シナリオで使用される可能性のある攻撃経路をシミュレートします。まず、Baixíssimo ユーザータイプに関連付けられたユーザー Usuário sem Privilégios がいます。

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 ファイルにあります。これらのメソッドは、ユーザータイプに対して要求されたアクションを実行する前に、リクエスト元のユーザーの権限チェックを実行しません。


このソフトウェアは、さまざまな公的機関で学校管理ソリューションとして使用されています。各インスタンスには、身分証明書や医療記録(病状)など、登録ユーザーと学生に関するさまざまな種類の機密情報が含まれている可能性があります。低権限の悪意のあるユーザーまたは攻撃者が制御するアカウントがこの脆弱性を悪用するシナリオでは、これらの記録の機密性、完全性、および可用性が危険にさらされます。プロジェクトの迅速なセキュリティ評価により、この弱点が明らかになります。