
Apache OpenMeetings 9.1.0 - Alta - Remoto - Privilegi residui - la procedura guidata /install obsoleta inserisce un secondo ADMIN
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-stale-install-admin
Classe: Privilegio residuo Raggiungibilità: Remota
Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation
InstallWizardPage reindirizza le richieste nuove dopo isInstalled(). Una pagina Wicket aperta prima della prima installazione rimane attiva. Il completamento su quella sessione obsoleta esegue loadAll(cfg, true). ImportInitvalues.checkInstalled registra "no need to install" e non restituisce nulla. Il secondo completamento inserisce un altro utente ADMIN+SOAP.
| ID | nessuna CVE al momento |
| Classe | Privilegio residuo |
| Raggiungibilità | Remota (/install non autenticato durante la prima configurazione) |
| CWE | CWE-367, CWE-269 |
| CVSS | Alto: 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Prodotto | Apache OpenMeetings |
| Affetto | 9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f) finestra di prima installazione |
| Auth | nessuna sulla sessione obsoleta della procedura guidata |
| Licenza | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1:18159. Tarball ufficiale 9.1.0, non installato, HTTP 5080. |
Ho fissato il tag 9.1.0, peel 9773c59e1af327bf988018e661f456ae9997c29f. Il residuo richiede una pagina della procedura guidata aperta prima del completamento della prima installazione.
Raggiungere /openmeetings/install mentre l'istanza non è ancora installata. Conservare quel JSESSIONID. Attendere che un operatore completi la prima installazione. Inviare POST Finish sulla pagina obsoleta.
| Metodo | Sink | Privilegio |
|---|---|---|
POST obsoleto Finish della procedura guidata (wizard-form-buttons-finish) | ImportInitvalues.checkInstalled registra e continua (ImportInitvalues.java:607-612); loadInitUserAndGroup | Integrità (dimostrato in lab): secondo utente staleadm con diritti ADMIN, SOAP, LOGIN, DASHBOARD, ROOM. Login SOAP riuscito. Conteggio utenti=2. |
Stesso loadAll(cfg, true) | persistenza / SMTP / percorsi dal form obsoleto | Integrità (dedotto): riscrittura di persistence.xml e delle impostazioni mail dai campi della procedura guidata controllati dall'attaccante. Non necessario per SUCCESS. |
Dimostrato in lab vs dedotto: il secondo login ADMIN+SOAP è dimostrato in lab. La riscrittura di persistence.xml è dedotta da loadAll.
Richiede: che l'attaccante abbia recuperato /install prima di isInstalled(). L'operatore ha poi completato l'installazione. Lo stesso id di pagina Wicket viene ancora inviato. L'immagine docker ufficiale è già installata, quindi questa è la finestra del primo avvio del tarball (e qualsiasi reinstallazione).
| Superficie | Motivo |
|---|---|
GET /install nuovo dopo l'installazione | il costruttore reindirizza a /signin (InstallWizardPage.java:31-34). Lab: la nuova sessione è finita su signin. |
| Login SOAP non autenticato prima dell'installazione | health installed=false; il login fallisce fino al completamento della procedura guidata. |
| Tomcat manager / console H2 | manager escluso, console H2 disattivata su questo pin. |
Il lock nel costruttore sembra una correzione completa per "installazione dopo installazione". checkInstalled continua comunque a registrare soltanto. Wicket memorizza la pagina nella sessione. Una sessione che ha attraversato isInstalled() mantiene un pulsante Finish che chiama ancora loadAll.
admin.sh -i è una seconda JVM e non carica CryptProvider di Tomcat, quindi questo lab usa una seconda procedura guidata web come primo installatore e la pagina obsoleta come attaccante.
cd lab
./run.sh
Loopback http://127.0.0.1:18159/openmeetings. Testimone ultima riga:
SUCCESS OPENMEETINGS-STALE-INSTALL-WITNESS
checkInstalled deve restituire (o lanciare un'eccezione) quando è già installato. Vincolare Finish a un token di installazione monouso. Rimuovere la pagina Wicket dalla sessione quando isInstalled() cambia stato. Non inserire un secondo ADMIN da loadInitUserAndGroup se un admin esiste già.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Fornitore: [email protected]