Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
openmeetings-calendar-save-idor — Apache OpenMeetings 9.1.0 - Alta - Remoto - IDOR - Il salvataggio del calendario LOGIN sovrascrive l'appuntamento e chiude la stanza pubblica | Kitploit
Strumenti/GitHubGitHub/abraxas/openmeetings-calendar-save-idor
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebRaccolta InformazioniSicurezza WebPenetration TestingLab e Pratica
GitHub
abraxas/openmeetings-calendar-save-idor

openmeetings-calendar-save-idor

Apache OpenMeetings 9.1.0 - Alta - Remoto - IDOR - Il salvataggio del calendario LOGIN sovrascrive l'appuntamento e chiude la stanza pubblica

Vedi Repository
12 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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 Portata: Remota

Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation

Qualsiasi utente LOGIN può eseguire POST /services/calendar/ con l'id di un altro appuntamento e omettere owner. Il predicato di salvataggio non carica mai il proprietario persistito. CalendarMapper e poi RoomMapper scrivono closed / ispublic / name sulla stanza collegata. Un utente registrato sovrascrive la riunione di qualcun altro e chiude una sala conferenze pubblica.

IDnessuna CVE al momento
ClasseIDOR
PortataRemota (REST LOGIN autenticato)
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
ProdottoApache OpenMeetings
Affetto9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f)
AuthLOGIN (la registrazione automatica predefinita lo genera)
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:18150. apache/openmeetings:min-9.1.0 più Temurin 21.

Ho fissato il tag 9.1.0, peel 9773c59e1af327bf988018e661f456ae9997c29f (2026-07-14). Ultima GA. Java 21. Non master.

Cosa può fare un attaccante

Registrarsi (procedura guidata allowFrontendRegister=true) o possedere qualsiasi password LOGIN. POST /openmeetings/services/user/login genera un SID. Gli id degli appuntamenti sono sequenziali. L'id della stanza pubblica 2 è la sala conferenze predefinita.

MetodoSinkPrivilegio
POST /services/calendar/?sid= form appointment JSON, owner omesso, id della vittimapredicato CalendarWebService.save (CalendarWebService.java:310-329)Integrità (dimostrato in lab): sovrascrive titolo, orari, membri. Lab: il titolo è diventato OPENMEETINGS-CALENDAR-SAVE-WITNESS, owner 2→3.
Stesso salvataggio; room.closed=trueRoomMapper.get scrive sull'entità gestita (RoomMapper.java:62-92) poi dao.updateIntegrità + disponibilità (dimostrato in lab): sala conferenze pubblica persistita con closed=true, isPublic=false. SOAP GET /room/2 ha restituito ciò.
GET dell'attaccante su titolo/intervallo dopo il salvataggioil DTO di risposta è la riga post-scritturaRicognizione (dimostrato in lab): titolo testimone. Intervallo della vittima vuoto dopo il furto dell'owner.

Dimostrato in lab vs dedotto: salvataggio HTTP 200, titolo, furto dell'owner, chiusura della stanza sono dimostrati in lab. I bit capacity / moderated sullo stesso mapper sono dedotti.

Richiede: percorso di rete verso /openmeetings/services. Un account LOGIN. Un id di appuntamento della vittima (sequenziale, oppure crearne uno e attendere). Registrazione aperta predefinita.

Superficie adiacente che resta chiusa

SuperficieMotivo
DELETE /calendar/{id}owner oppure SOAP/ADMIN. Un LOGIN normale non può eliminare quelli altrui.
Letture di intervallo / next / titololimitate all'owner. L'attaccante non ottiene una lettura pulita della riga originale.
MP4 della registrazioneACL diversa (RecordingResourceReference).
list-by-userid solo SOAPRight.SOAP. Gli utenti registrati predefiniti non lo possiedono.
Salvataggio non autenticatoperformCall richiede un SID con LOGIN.

Come l'ho trovato

La 9.1.0 ha chiuso CVE-2026-49488 (lettura OS tramite fuid della lavagna). Ho continuato a cercare id di oggetti REST. La delete del calendario verifica a.isOwner(sd.getUserId()). La save del calendario verifica l'owner del DTO della richiesta, oppure null. CalendarMapper.get carica appointmentDao.get(dto.getId()) senza ambito di owner. RoomMapper poi sporca l'entità JPA della stanza prima di dao.update.

l'account di integrazione LMS è elencato in SOAP per ogni appuntamento. Questo residuo è LOGIN vs owner.

Lab

cd lab
./run.sh

Loopback https://127.0.0.1:18150/openmeetings. Admin docker ufficiale om_admin / 1Q2w3e4r5t^y. TLS autofirmato. Ultima riga di verifica:

SUCCESS OPENMEETINGS-CALENDAR-SAVE-WITNESS

Correzione suggerita

Caricare l'appuntamento persistito prima del salvataggio. Richiedere a.isOwner(caller) a meno che non si tratti di SOAP/ADMIN. Non applicare le scritture di RoomMapper a una stanza che il chiamante non può moderare. Trattare il proprietario omesso come "mantieni il proprietario persistito", non come "il chiamante diventa proprietario".

Contatto

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

Fornitore: [email protected]

Scarica lo strumento