TightVNC (et des dérivés comme TurboVNC et certains forks embarqués) introduit le type de sécurité Tight, qui ajoute une négociation de sous-authentification par-dessus la négociation RFB de base, et son code a comporté à la fois des failles de gestion de l'authentification et des bugs de sûreté mémoire. Les problèmes d'authentification permettent d'influencer ou de sauter l'étape de sous-authentification pour atteindre une session sans identifiants valides sur les versions affectées ; les problèmes de corruption mémoire (dans la gestion des messages et des encodages) permettent de faire planter ou d'exploiter le serveur. La bonne attaque dépend de la version exacte de TightVNC, de sorte que l'identification est la première étape.
# identify TightVNC and its version via the offered Tight security type and behaviour
nmap -p5900 --script vnc-info <target> # Tight (16) security type indicates the family
# match the version to the applicable advisory: auth-handling bypass vs memory-corruption
# auth path: manipulate the Tight sub-auth negotiation to avoid the password check
# memory path: send crafted messages/encodings that the server mishandles
Notes d'exploitation#
- L'étape supplémentaire de sous-authentification du type de sécurité Tight constitue la surface distinctive ; des failles spécifiques à certaines versions y permettent d'atteindre une session sans le mot de passe, dans le même esprit que le contournement RealVNC mais dans la négociation Tight.
- Les bugs de corruption mémoire dans la gestion par TightVNC des messages et encodages RFB forment une classe distincte, donnant des plantages ou de l'exécution de code contre le serveur ; ils sont spécifiques au build.
- Les appareils embarqués et les appliances embarquent souvent d'anciens forks de TightVNC avec des versions non corrigées de ces failles, plus des mots de passe faibles ou par défaut ; identifiez l'implémentation et la version.
- Là où aucun contournement ne s'applique, le schéma de mot de passe reste faible, voir Force brute de mot de passe et Mots de passe par défaut.