
Apache OpenMeetings 9.1.0 - Alta - Remoto - Residuo di scrittura file - L'importazione ADMIN_BACKUP salta Path.of su Type.PATH
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-backup-config-path
Classe: Residuo di scrittura su file Raggiungibilità: Remota
Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation
CVE-2023-29246 ha chiuso l'iniezione di NUL sulla Config Admin Type.PATH tramite Path.of. BackupImport.importConfigs scrive ancora quelle righe senza Path.of. Un ripristino ADMIN_BACKUP memorizza un percorso di converter grezzo. Su Java 21, anche ProcessBuilder rifiuta NUL, quindi questo è il residuo del sink di 29246, non una nuova RCE via argv.
| ID | nessuna CVE al momento |
| Classe | Residuo di scrittura su file (residuo di CVE-2023-29246) |
| Raggiungibilità | Remota (ripristino ADMIN_BACKUP autenticato) |
| CWE | CWE-20, CWE-22 |
| CVSS | Alto: 6.5 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:H |
| Prodotto | Apache OpenMeetings |
| Affetto | 9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f) importazione backup |
| Auth | ADMIN_BACKUP (l'admin dell'installer lo possiede) |
| Licenza | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1:18160. apache/openmeetings:min-9.1.0 più Temurin 21. |
Ho fissato il tag 9.1.0. Nessun payload NUL. Nessuna esecuzione di ffmpeg.
Possedere ADMIN_BACKUP (admin dell'installer, o un admin di backup impiantato). Ripristinare uno zip di backup le cui config impostano imagemagick_path / ffmpeg su una stringa arbitraria.
| Metodo | Sink | Privilegio |
|---|---|---|
admin.sh -r / ripristino backup Wicket | BackupImport.importConfigs cfgDao.update Type.PATH, senza Path.of | Integrità (dimostrata in lab): configuration.path.imagemagick e path.ffmpeg memorizzati come PATH /tmp/OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS. |
| Successivi job di conversione (dedotto) | argv di imagemagick/ffmpeg/sox/office da quelle righe | Integrità / disponibilità (dedotto): converter puntato a un percorso dell'attaccante. ProcessBuilder di Java 21 rifiuta ancora NUL. Non esercitato. |
Dimostrato in lab vs dedotto: la stringa testimone Type.PATH memorizzata è dimostrata in lab. L'esecuzione del converter è dedotta. La RCE via argv con NUL è chiusa su questo JDK (InvalidPathException Nul character not allowed su Path.of; anche ProcessBuilder rifiuta NUL).
Controllo: Path.of accetta questo percorso testimone Unix. Il residuo è il controllo mancante sull'importazione, non un bypass di Path.of su un normale percorso Unix. La ConfigForm dell'interfaccia usa ancora Path.of.
Richiede: ADMIN_BACKUP. Un ripristino. Wicket /admin/backup/upload con un SID REST ha restituito accesso negato (serve il Client SID del websocket). Il lab ha usato admin.sh -r, stesso BackupImport.performImport.
| Superficie | Motivo |
|---|---|
| Chiavi PATH della Config Admin UI | Path.of (ConfigForm). NUL genera un'eccezione. |
| NUL in ProcessBuilder su Java 21 | rifiutato. La RCE di CVE-2023-29246 non si ripete su questo JDK. |
| Ripristino ROOM / LOGIN | nessun ADMIN_BACKUP. |
29246 ha corretto l'interfaccia. Ho cercato Path.of con grep in importConfigs. La rimappatura imagemagick_path → path.imagemagick forza Type.PATH e aggiorna il DAO. La stessa classe che l'interfaccia usa dopo un ripristino.
cd lab
./run.sh
Loopback https://127.0.0.1:18160/openmeetings. Testimone ultima riga:
SUCCESS OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS
Eseguire lo stesso validatore Path.of / Type.PATH in BackupImport.importConfigs che usa ConfigForm. Rifiutare i percorsi del convertitore contenenti NUL e non canonici prima di cfgDao.update.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Fornitore: [email protected]