
Apache OpenMeetings 9.1.0 - Alta - Remoto - IDOR - dashboard chatTab-u{id} exporta o chat privado de outro usuário
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-chat-user-idor
Classe: IDOR Alcance: Remoto
Apache OpenMeetings 9.1.0 (9773c59e). Qualquer sessão ROOM/DASHBOARD exporta o chat privado de outro usuário definindo activeTab=chatTab-u{id}. O ramo de usuário do ChatToolbar é u -> true. Os botões de salvar/excluir são visíveis apenas para administradores; AjaxDownloadBehavior está registrado na própria toolbar.
| ID | ainda sem CVE |
| Classe | IDOR |
| Alcance | Remoto (dashboard Wicket autenticado) |
| CWE | CWE-639 |
| CVSS | Alto: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N |
| Produto | Apache OpenMeetings 9.1.0 |
| Autenticação | LOGIN + DASHBOARD (registro padrão) |
| Licença | GNU Affero GPL v3.0 |
| Lab | apenas 127.0.0.1:18151 |
| Método | Sink | Privilégio |
|---|---|---|
Download de chat Wicket activeTab=chatTab-u{victimId} | Ramo de usuário do ChatToolbar u -> true (ChatToolbar.java:87-94, 134-138) | Recon (comprovado em lab): CSV de DMs. Lab: "Vic User",...,"OPENMEETINGS-CHAT-IDOR-WITNESS". |
Mesmo activeTab no AjaxButton de exclusão | chatDao.deleteUser(id) (ChatToolbar.java:208-212) | Integridade (inferido): apagar aquela caixa de entrada. A exportação foi o oráculo de SUCESSO. |
Fechado: exportação global/de sala ainda exige administrador ou moderador da sala. Kick/mute-all não são este callback.
cd lab
./run.sh
Última linha: SUCCESS OPENMEETINGS-CHAT-IDOR-WITNESS
Correção sugerida: o download/exclusão do ramo de usuário deve ser u.getId().equals(getUserId()) ou administrador. Não registrar AjaxDownloadBehavior para botões de administrador ocultos.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Vendor: [email protected]