
Apache OpenMeetings 9.1.0 — высокий уровень опасности — удалённая — без аутентификации KMS — docs docker публикует Kurento JSON-RPC на порту 8888
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-kms-unauth
Класс: Unauth KMS Доступ: Удалённый
Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation
В OpenMeetings на Java параметр kurento.ws.url по умолчанию указывает на loopback. Официальный InstallMediaServer.md публикует Kurento с помощью docker -p 8888:8888. У этого JSON-RPC нет аутентификации. Неаутентифицированный WebSocket connect плюс invoke manager_ServerManager.getInfo возвращает Kurento 7.3.0.
| ID | CVE пока нет |
| Класс | Unauth KMS |
| Доступ | Удалённый (неаутентифицированный JSON-RPC на опубликованном порту 8888) |
| CWE | CWE-306 |
| CVSS | Высокий: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:L |
| Продукт | Apache OpenMeetings + Kurento 7.3.0 |
| Затронуто | Публикация KMS 8888 в документации/docker для 9.1.0 |
| Аутентификация | отсутствует в Kurento JSON-RPC |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1:18164. kurento/kurento-media-server:7.3.0 в соответствии с путём публикации из документации. |
Я зафиксировал тег 9.1.0. Для этого релиза требуется KMS 7.3.0+.
Достучаться до опубликованного порта Kurento. Без заголовка Authorization. HTTP POST поддерживается только для WebSocket (426). ws://host:8888/kurento выполняет апгрейд 101.
| Метод | Приёмник | Привилегия |
|---|---|---|
Неаутентифицированный ping | Kurento JSON-RPC | Разведка (подтверждено в лаборатории): pong. |
Неаутентифицированный connect | создание сессии | Целостность (подтверждено в лаборатории): sessionId без секрета. |
Неаутентифицированный invoke manager_ServerManager.getInfo | ServerInfo | Разведка (подтверждено в лаборатории): версия 7.3.0, список модулей (chroma/core/...). |
Неаутентифицированные PlayerEndpoint / RecorderEndpoint (тот же сокет) | медиаэлементы KMS | Разведка / целостность (предположительно): HTTP/file-запросы от имени UID KMS; создание/уничтожение конвейера. Не проверялось. Лаборатория ограничилась getInfo. |
Подтверждено в лаборатории vs предположительно: ping, connect, getInfo — лабораторно. SSRF через PlayerEndpoint / DoS конвейера — предположительно на основе неаутентифицированного JSON-RPC.
Требуется: KMS, опубликованный в сеть так, как показано в InstallMediaServer.md (-p 8888:8888). Значение loopback по умолчанию в OM Java безопасно до такой публикации.
| Поверхность | Почему |
|---|---|
Значение по умолчанию kurento.ws.url в OM Java | loopback. Этот остаток — публикация из документации, а не значение по умолчанию в Java. |
OM /openmeetings без SID | Wicket/CXF по-прежнему требуют сессию для комнат. |
HTTP POST /kurento без Upgrade | 426. JSON-RPC работает через WebSocket. |
Полный образ apache/openmeetings:9.1.0 запускает kurento-media-server на 0.0.0.0:8888 без аутентификации JSON-RPC, после чего этот контейнер может не запустить catalina от имени nobody без JAVA_HOME. Остаток, которому учит документация, — это публикация отдельного KMS. Я воспроизвёл в лаборатории kurento/kurento-media-server:7.3.0 с 127.0.0.1:18164:8888.
cd lab
./run.sh
Loopback ws://127.0.0.1:18164/kurento. Последняя строка-свидетель:
SUCCESS OPENMEETINGS-KMS-UNAUTH-WITNESS
Не публикуйте 8888 на публичном интерфейсе. Привяжите KMS к loopback или к приватной сети compose. Добавьте токен аутентификации на JSON-RPC (Kurento secureKms / обратный прокси). Измените пример в документации по установке, убрав -p 8888:8888.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Поставщик: [email protected]