Apereo CAS
Lors d’une mission, un pentester DSecBypass a été confronté au logiciel Java Apereo CAS. Il a été possible de contourner l’authentification SSO gérée par le logiciel en exploitant un défaut de configuration Spring Boot Actuator.
Enterprise SSO – CAS fournit une communauté open source conviviale qui soutient et contribue activement au projet. Bien que le projet soit enraciné dans l’open source d’enseignement supérieur, il s’est développé pour atteindre un public international couvrant des entreprises du Fortune 500 et de petites installations à usage spécial. (https://www.apereo.org/projects/cas)
Le code peut être trouvé sur le GitHub du projet : https://github.com/apereo/cas.
C’est un projet effectivement actif, fortement représenté dans les établissements d’enseignement supérieur en France et à l’international.
Spring Boot Actuator
Les applications développées avec le framework Java Spring MVC exposent sur leurs services HTTP/HTTPS un endpoint appelé actuator (Spring Boot Actuator). Comme le mentionne la documentation de Spring, Actuator permet de superviser la santé des différents services de l’application et va exposer tous les services par défaut. Le développeur a plusieurs possibilités pour restreindre l’accès à ces fonctionnalités :
- Inclure Spring Security dans son projet afin de sécuriser les endpoints d’Actuator par une authentification Basic HTTP
- Paramétrer Spring de manière à n’exposer qu’une liste bien choisie de fonctionnalités
- Bloquer l’accès aux fonctionnalités actuator à l’aide d’un équipement frontal (reverse proxy, pare-feu applicatif)
La sécurité et Actuator
Un des principes fondamentaux de la sécurité informatique est de restreindre la surface d’attaque. En particulier, pour les applications web en production, il est fortement recommandé de désactiver ou restreindre l’accès aux fonctionnalités inutiles à l’utilisateur final.
Actuator fait partie de ces fonctionnalités qui ne sont pas nécessaires à l’utilisateur final et ne devraient pas être accessibles. En effet, certaines fonctionnalités sont une menace directe pour la sécurité de l’application :
- heapdump – télécharge le contenu de la mémoire du processus (heap)
- env – affiche la valeur des variables de l’application
Les techniques d’attaques usuelles sont déjà abordées sur cet article : https://www.veracode.com/blog/research/exploiting-spring-boot-actuators.
Exploiter un serveur Apereo CAS vulnérable
Apereo CAS ne fait pas exception et peut exposer également des endpoints actuator en accédant au chemin « https://CAS_VULNERABLE/cas/actuator ». Une description des endpoints disponibles se trouve dans le fichier suivant : https://github.com/apereo/cas/blob/master/docs/cas-server-documentation-processor/src/main/resources/actuators.properties
Bien que peu courant, certains CAS mal configurés exposent l’actuator avec les endpoints env ou heapdump.
Dans le cas de env, une simple lecture des valeurs retournées permettra d’obtenir parfois des comptes de bases de données, des IP et URLs internes et d’autres paramètres potentiellement sensibles.
Si heapdump est accessible, les informations d’authentification au CAS peuvent être alors récupérées dans la mémoire du processus à l’aide de la commande Linux suivante :
curl -s https://CAS_VULNERABLE/cas/actuator/heapdump | strings | grep -oE « username=(.*)&execution »
Attention à réaliser ces actions sur des applications qui vous appartiennent ou pour lesquelles vous avez reçu l’autorisation d’opérer un test d’intrusion.
Sécuriser Apereo CAS
La configuration des endpoints Actuator est traitée dans la documentation officielle : https://apereo.github.io/cas/6.0.x/monitoring/Monitoring-Statistics.html.
Il est mentionné que seuls les endpoints info, status, health et configurationMetadata sont exposés par défaut. Il convient donc de s’assurer que c’est également le cas dans votre application. Afin de réduire la surface d’attaque d’Apereo CAS, il est également conseillé de ne pas exposer l’URL d’actuator (/cas/actuator/*) sur Internet et de paramétrer l’authentification pour y accéder avec le paramètre suivant :
cas.monitor.endpoints.endpoint.status.access=AUTHENTICATED
🛡️ DSecBypass vous accompagne sur la sécurisation de vos applications lors d’audits site web ou tests d’intrusions externes, avec des prestations de qualité et une expérience significative sur ce type de prestation. N’hésitez pas à nous contacter pour des informations complémentaires et/ou un devis personnalisé 📝.