
Apache OpenMeetings 9.1.0 - 高 - リモート - 権限の残留 - SOAP POST /user が ADMIN を含む UserDTO.rights をコピーする
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-soap-user-rights
クラス: 権限の残留 到達範囲: リモート
Apache OpenMeetings 9.1.0。SOAP POST /user/ は UserDTO.rights をコピーし、id による更新を行います。SOAP は LMS 連携アカウントです。ADMIN 未満に留まるべきものです。UserMapper は userDao.get(dto.getId()) を実行した後、u.setRights(dto.getRights()) を実行します。UserWebService.add は ROOM/LOGIN/DASHBOARD を追加し、ADMIN を決して除去しません。
| ID | CVE 未割当 |
| クラス | 権限の残留 |
| 到達範囲 | リモート (SOAP SID) |
| CWE | CWE-269, CWE-280 |
| CVSS | High: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 製品 | Apache OpenMeetings 9.1.0 |
| 認証 | Right.SOAP (ADMIN ではない) |
| ライセンス | GNU Affero GPL v3.0 |
| ラボ | 127.0.0.1:18152 のみ |
| メソッド | シンク | 権限 |
|---|---|---|
SOAP POST /services/user/?sid= rights=["ADMIN"] | UserMapper.setRights + userDao.update | 整合性 (ラボで実証済み): ADMIN を植え付ける。ラボ: plantedadm の firstname を目印とし、植え付けたユーザーとして DELETE /user/3 を実行すると 200 Deleted が返された。SOAP のみの soaplab による DELETE は error.notallowed であった。 |
既存の id を使った同じ POST | userDao.get(dto.getId()) | 整合性 (ラボで実証済み): id マージによる上書き。ラボ: ユーザー 4 のログイン mergeover を ADMIN にした。 |
クローズ済み: DELETE /user/{id} は依然として ADMIN を必要とする。ROOM SID は追加時に NO_PERMISSION となる。フロントエンドの登録は rights 配列を受け取らない。
cd lab
./run.sh
最終行: SUCCESS OPENMEETINGS-SOAP-RIGHTS-WITNESS
推奨される修正: SOAP の追加時に UserDTO.rights を無視する、または LOGIN/ROOM/DASHBOARD のみを許可する。追加時に id によるロードを決して行わない。呼び出し元が ADMIN でない限り、ADMIN/SOAP を除去する。
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
ベンダー: [email protected]