Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
openmeetings-calendar-save-idor — Apache OpenMeetings 9.1.0 - Alta - Remota - IDOR - El guardado del calendario LOGIN sobrescribe la cita y cierra la sala pública | Kitploit
Herramientas/GitHubGitHub/abraxas/openmeetings-calendar-save-idor
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónSeguridad WebPruebas de PenetraciónLabs y Práctica
GitHub
abraxas/openmeetings-calendar-save-idor

openmeetings-calendar-save-idor

Apache OpenMeetings 9.1.0 - Alta - Remota - IDOR - El guardado del calendario LOGIN sobrescribe la cita y cierra la sala pública

Ver Repositorio
4hace 3 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - openmeetings-calendar-save-idor

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

openmeetings-calendar-save-idor

Clase: IDOR Alcance: Remoto

Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation

Cualquier usuario con LOGIN puede hacer POST /services/calendar/ con el id de otra cita y omitir owner. El predicado de guardado nunca carga el propietario persistido. CalendarMapper y luego RoomMapper escriben closed / ispublic / name en la sala adjunta. Un usuario registrado sobrescribe la reunión de otra persona y cierra una sala de conferencias pública.

IDaún sin CVE
ClaseIDOR
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
ProductoApache OpenMeetings
Afectado9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f)
AutenticaciónLOGIN (el autorregistro por defecto lo genera)
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1:18150. apache/openmeetings:min-9.1.0 más Temurin 21.

Fijé la etiqueta 9.1.0, peel 9773c59e1af327bf988018e661f456ae9997c29f (2026-07-14). Última GA. Java 21. No master.

Qué puede hacer un atacante

Registrarse (asistente allowFrontendRegister=true) o tener cualquier contraseña LOGIN. POST /openmeetings/services/user/login genera un SID. Los ids de cita son secuenciales. El id de sala pública 2 es la sala de conferencias por defecto.

MétodoSumideroPrivilegio
POST /services/calendar/?sid= formulario appointment JSON, owner omitido, id de la víctimapredicado CalendarWebService.save (CalendarWebService.java:310-329)Integridad (probado en laboratorio): sobrescribir título, horarios, miembros. Laboratorio: el título pasó a ser OPENMEETINGS-CALENDAR-SAVE-WITNESS, propietario 2→3.
Mismo guardado; room.closed=trueRoomMapper.get escribe sobre la entidad gestionada (RoomMapper.java:62-92) y luego dao.updateIntegridad + disponibilidad (probado en laboratorio): la sala de conferencias pública persistió closed=true, isPublic=false. SOAP GET /room/2 devolvió eso.
GET del atacante de título/rango tras el guardadoel DTO de respuesta es la fila posterior a la escrituraReconocimiento (probado en laboratorio): título testigo. Rango de la víctima vacío tras el robo del propietario.

Probado en laboratorio vs inferido: guardado HTTP 200, título, robo de propietario, cierre de sala son de laboratorio. Los bits de capacidad / moderación en el mismo mapper son inferidos.

Requiere: ruta de red a /openmeetings/services. Una cuenta LOGIN. Un id de cita de la víctima (secuencial, o crear una y esperar). Registro abierto por defecto.

Superficie adyacente que permanece cerrada

SuperficiePor qué
DELETE /calendar/{id}propietario o SOAP/ADMIN. Un LOGIN normal no puede borrar las de otros.
Lecturas de rango / next / títulolimitadas al propietario. El atacante no obtiene una lectura limpia de la fila original.
Grabación MP4ACL distinta (RecordingResourceReference).
Listado por userid solo SOAPRight.SOAP. Los usuarios registrados por defecto no lo tienen.
Guardado no autenticadoperformCall necesita un SID con LOGIN.

Cómo lo encontré

9.1.0 cerró CVE-2026-49488 (lectura de OS de fuid en la pizarra). Seguí buscando ids de objetos REST. El borrado de calendario comprueba a.isOwner(sd.getUserId()). El guardado de calendario comprueba el propietario del DTO de la petición, o null. CalendarMapper.get carga appointmentDao.get(dto.getId()) sin ámbito de propietario. RoomMapper luego ensucia la entidad JPA de la sala antes de dao.update.

La cuenta de integración del LMS aparece en el listado SOAP de cada cita. Este residuo es LOGIN frente a propietario.

Laboratorio

cd lab
./run.sh

Loopback https://127.0.0.1:18150/openmeetings. Administrador oficial de docker om_admin / 1Q2w3e4r5t^y. TLS autofirmado. Testigo de la última línea:

SUCCESS OPENMEETINGS-CALENDAR-SAVE-WITNESS

Corrección sugerida

Cargar la cita persistida antes de guardar. Requerir a.isOwner(caller) a menos que sea SOAP/ADMIN. No aplicar las escrituras de RoomMapper a una sala que el llamador no puede moderar. Tratar el propietario omitido como "mantener el propietario persistido", no como "el llamador se convierte en propietario".

Contacto

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

Proveedor: [email protected]

Descargar herramienta