Apache OpenMeetings 9.1.0 — высокий уровень — удалённо — обход 2FA — вход по паролю через SOAP/REST пропускает TOTP
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-soap-otp-skip
Класс: обход 2FA Доступ: удалённый
Apache OpenMeetings 9.1.0. Когда otp.enabled имеет значение true, TOTP выполняется только в Wicket SignInDialog.processOtp. UserWebService.login — это проверка пароля, затем sessionDao.create. SOAP/REST создают SID без поля OTP. По умолчанию otp.enabled равно false. В лаборатории он включён.
| ID | CVE пока нет |
| Класс | обход 2FA |
| Доступ | Удалённый (пароль, без OTP) |
| CWE | CWE-287, CWE-304 |
| CVSS | Высокий: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N |
| Продукт | Apache OpenMeetings 9.1.0 с otp.enabled=true |
| Аутентификация | пароль зарегистрированного пользователя |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1:18157 |
| Метод | Точка входа | Привилегия |
|---|---|---|
POST /services/user/login только user/pass | UserWebService.login (UserWebService.java:135-143) | Целостность (доказано в лаборатории): SID без OTP. Лаборатория: сохранение календаря с этим SID сохранило свидетельство. |
| Wicket только с паролем (контроль) | SignInDialog.processOtp | Закрыто в Wicket: показан запрос OTP, панель управления недоступна. |
Закрыто: по умолчанию otp.enabled=false (этот остаток — развёртывание с включённым параметром). Инъекция в поисковый фильтр LDAP (OPENMEETINGS-2808).
cd lab
./run.sh
Последняя строка: SUCCESS OPENMEETINGS-SOAP-OTP-SKIP-WITNESS
Предлагаемое исправление: вызывать OtpManager.verify в UserWebService.login и в JAX-WS login, когда у пользователя есть секрет TOTP. Завершать с отказом, если OTP включён, а в запросе нет кода.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Поставщик: [email protected]