Apache OpenMeetings 9.1.0 - Élevée - À distance - Contournement de la 2FA - La connexion par mot de passe SOAP/REST contourne le TOTP
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-soap-otp-skip
Classe : contournement de la 2FA Portée : à distance
Apache OpenMeetings 9.1.0. Lorsque otp.enabled est vrai, le TOTP ne s'exécute que dans SignInDialog.processOtp de Wicket. UserWebService.login vérifie le mot de passe puis appelle sessionDao.create. SOAP/REST génèrent un SID sans champ OTP. Par défaut, otp.enabled est faux. Le lab l'active.
| ID | pas encore de CVE |
| Classe | contournement de la 2FA |
| Portée | à distance (mot de passe, sans OTP) |
| CWE | CWE-287, CWE-304 |
| CVSS | Élevé : 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N |
| Produit | Apache OpenMeetings 9.1.0 avec otp.enabled=true |
| Authentification | mot de passe d'un utilisateur enrôlé |
| Licence | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1:18157 uniquement |
| Méthode | Point d'aboutissement | Privilège |
|---|---|---|
POST /services/user/login utilisateur/mot de passe uniquement | UserWebService.login (UserWebService.java:135-143) | Intégrité (prouvé en lab) : SID sans OTP. Lab : enregistrement d'un calendrier avec ce SID a stocké le témoin. |
| Wicket mot de passe uniquement (témoin) | SignInDialog.processOtp | Fermé sur Wicket : défi OTP affiché, pas de tableau de bord. |
Fermé : otp.enabled=false par défaut (ce reliquat correspond au déploiement activé). Injection dans le filtre de recherche LDAP (OPENMEETINGS-2808).
cd lab
./run.sh
Dernière ligne : SUCCESS OPENMEETINGS-SOAP-OTP-SKIP-WITNESS
Correctif suggéré : appeler OtpManager.verify dans UserWebService.login et dans la connexion JAX-WS lorsque l'utilisateur possède un secret TOTP. Échouer par défaut si l'OTP est activé et que la requête ne contient aucun code.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Fournisseur : [email protected]