
Apache OpenMeetings 9.1.0 - Alta - Remoto - Privilégio residual - SOAP POST /user copia UserDTO.rights incluindo ADMIN
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-soap-user-rights
Classe: Resíduo de privilégio Alcance: Remoto
Apache OpenMeetings 9.1.0. SOAP POST /user/ copia UserDTO.rights e atualiza por id. SOAP é a conta de integração do LMS. Ela deveria permanecer abaixo de ADMIN. UserMapper faz userDao.get(dto.getId()) e depois u.setRights(dto.getRights()). UserWebService.add adiciona ROOM/LOGIN/DASHBOARD e nunca remove ADMIN.
| ID | ainda sem CVE |
| Classe | Resíduo de privilégio |
| Alcance | Remoto (SID SOAP) |
| CWE | CWE-269, CWE-280 |
| CVSS | Alto: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Produto | Apache OpenMeetings 9.1.0 |
| Autenticação | Right.SOAP (não ADMIN) |
| Licença | GNU Affero GPL v3.0 |
| Laboratório | apenas 127.0.0.1:18152 |
| Método | Destino | Privilégio |
|---|---|---|
SOAP POST /services/user/?sid= rights=["ADMIN"] | UserMapper.setRights + userDao.update | Integridade (comprovado em laboratório): plantar ADMIN. Laboratório: plantedadm primeiro nome testemunha, DELETE /user/3 como usuário plantado retornou 200 Deleted. DELETE de soaplab apenas via SOAP foi error.notallowed. |
Mesmo POST com id existente | userDao.get(dto.getId()) | Integridade (comprovado em laboratório): sobrescrita por mesclagem de id. Laboratório: usuário 4 login mergeover com ADMIN. |
Fechado: DELETE /user/{id} ainda exige ADMIN. SID ROOM é NO_PERMISSION ao adicionar. O registro do frontend não aceita um array de rights.
cd lab
./run.sh
Última linha: SUCCESS OPENMEETINGS-SOAP-RIGHTS-WITNESS
Correção sugerida: ignorar UserDTO.rights na adição via SOAP, ou permitir apenas LOGIN/ROOM/DASHBOARD. Nunca carregar por id na adição. Remover ADMIN/SOAP a menos que o chamador seja ADMIN.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Vendor: [email protected]