Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
openmeetings-calendar-save-idor — Apache OpenMeetings 9.1.0 - Alta - Remoto - IDOR - O salvamento do calendário de LOGIN sobrescreve o compromisso e fecha a sala pública | Kitploit
Ferramentas/GitHubGitHub/abraxas/openmeetings-calendar-save-idor
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebColeta de InformaçõesSegurança WebTestes de PenetraçãoLabs e Prática
GitHub
abraxas/openmeetings-calendar-save-idor

openmeetings-calendar-save-idor

Apache OpenMeetings 9.1.0 - Alta - Remoto - IDOR - O salvamento do calendário de LOGIN sobrescreve o compromisso e fecha a sala pública

Ver Repositório
4há 4 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Abraxas Labs - openmeetings-calendar-save-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  openmeetings-calendar-save-idor

openmeetings-calendar-save-idor

Classe: IDOR Alcance: Remoto

Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation

Qualquer usuário LOGIN pode fazer POST /services/calendar/ com o id de outro compromisso e omitir owner. O predicado de save nunca carrega o owner persistido. CalendarMapper e depois RoomMapper gravam closed / ispublic / name na sala anexada. Um usuário registrado sobrescreve a reunião de outra pessoa e fecha uma sala de conferência pública.

IDainda sem CVE
ClasseIDOR
AlcanceRemoto (REST LOGIN autenticado)
CWECWE-639, CWE-284
CVSSAlto: 7.6 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
ProdutoApache OpenMeetings
Afetado9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f)
AutenticaçãoLOGIN (o auto-registro padrão gera isso)
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1:18150. apache/openmeetings:min-9.1.0 mais Temurin 21.

Fixe a tag 9.1.0, peel 9773c59e1af327bf988018e661f456ae9997c29f (2026-07-14). Última GA. Java 21. Não é master.

O que um atacante pode fazer

Registrar-se (wizard allowFrontendRegister=true) ou possuir qualquer senha LOGIN. POST /openmeetings/services/user/login gera um SID. Os ids de compromisso são sequenciais. O id de sala pública 2 é a sala de conferência padrão.

MétodoSinkPrivilégio
POST /services/calendar/?sid= form appointment JSON, owner omitido, id da vítimapredicado CalendarWebService.save (CalendarWebService.java:310-329)Integridade (comprovado em lab): sobrescrever título, horários, membros. Lab: título tornou-se OPENMEETINGS-CALENDAR-SAVE-WITNESS, owner 2→3.
Mesmo save; room.closed=trueRoomMapper.get grava na entidade gerenciada (RoomMapper.java:62-92) e depois dao.updateIntegridade + disponibilidade (comprovado em lab): sala de conferência pública persistida com closed=true, isPublic=false. SOAP GET /room/2 retornou isso.
GET do atacante de título/intervalo após o saveo DTO de resposta é a linha pós-gravaçãoRecon (comprovado em lab): título testemunha. Intervalo da vítima vazio após roubo de owner.

Comprovado em lab vs inferido: save HTTP 200, título, roubo de owner, fechamento de sala são de lab. Bits de capacidade / moderado no mesmo mapper são inferidos.

Requer: caminho de rede para /openmeetings/services. Uma conta LOGIN. Um id de compromisso da vítima (sequencial, ou crie um e aguarde). Cadastro aberto padrão.

Superfície adjacente que permanece fechada

SuperfíciePor quê
DELETE /calendar/{id}owner ou SOAP/ADMIN. LOGIN comum não pode excluir de outros.
Leituras de intervalo / next / títuloescopo de owner. O atacante não obtém uma leitura limpa da linha original.
MP4 de gravaçãoACL diferente (RecordingResourceReference).
list-by-userid apenas SOAPRight.SOAP. Usuários registrados padrão não têm isso.
save não autenticadoperformCall precisa de um SID com LOGIN.

Como eu encontrei

9.1.0 fechou CVE-2026-49488 (leitura de OS via fuid do whiteboard). Continuei caçando ids de objetos REST. O delete de calendário verifica a.isOwner(sd.getUserId()). O save de calendário verifica o owner do DTO da requisição, ou null. CalendarMapper.get carrega appointmentDao.get(dto.getId()) sem escopo de owner. RoomMapper então suja a entidade JPA da sala antes de dao.update.

A listagem SOAP de cada compromisso é a conta de integração do LMS. Esse resíduo é LOGIN vs proprietário.

Laboratório

cd lab
./run.sh

Loopback https://127.0.0.1:18150/openmeetings. Administrador oficial do docker om_admin / 1Q2w3e4r5t^y. TLS autoassinado. Última linha da testemunha:

SUCCESS OPENMEETINGS-CALENDAR-SAVE-WITNESS

Correção sugerida

Carregue o compromisso persistido antes de salvar. Exija a.isOwner(caller) a menos que seja SOAP/ADMIN. Não aplique gravações de RoomMapper a uma sala que o chamador não pode moderar. Trate o proprietário omitido como "manter o proprietário persistido", não como "o chamador se torna proprietário".

Contato

Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]

Vendor: [email protected]

Baixar ferramenta