Distinct de la devinette d'identifiants, le démon qui analyse l'IMAP pour vous dispose de sa propre surface d'attaque. Trois implémentations dominent : Dovecot (de loin la plus déployée), Cyrus IMAP (grandes installations institutionnelles) et Courier (hôtes anciens / hérités). Les cibles à forte valeur sont celles en pré-authentification : le code accessible avant LOGIN, dans le message d'accueil, STARTTLS ou le traitement SASL. Les bugs post-authentification comptent toujours pour l'élévation de privilèges ou pour briser l'isolation des boîtes aux lettres une fois que vous détenez un compte. Identifiez d'abord la version exacte, car chacun de ces bugs dépend de la version.
Identifier la version#
nc <target> 143
* OK [CAPABILITY ...] Dovecot ready.
nmap -p143,993 -sV <target> # -sV resolves the product/version string
openssl s_client -connect <target>:993 -quiet
a ID NIL # some builds answer ID with name/version
La bannière de Dovecot est laconique par défaut, appuyez-vous donc sur -sV, sur la réponse ID lorsqu'elle est activée, et sur les canaux auxiliaires (le service de soumission sur le port 587, le service ManageSieve sur le port 4190) pour cerner la version. Cyrus et Courier affichent leurs chaînes de produit dans le message d'accueil.
Dovecot#
L'exposition de Dovecot se concentre dans ses services auxiliaires davantage que dans le cœur IMAP :
- Proxy de soumission : le proxy de soumission/LMTP intégré de Dovecot présentait une faille où une séquence forgée envoyée au service de soumission corrompait son traitement et pouvait faire planter ou perturber la session relayée. Il est accessible sur le port de soumission et est pré-authentification au sens où l'analyse se produit pendant le handshake d'envoi du courrier.
- stats / analyse d'entrée de style
openssl: les composants de Dovecot qui analysent des entrées structurées (le service de stats, et le traitement TLS/SNI transmis à la couche OpenSSL) ont historiquement mal géré les entrées malformées, produisant un déni de service. Ce sont des cas de la classe « analyser des octets non fiables avant l'authentification » ; la valeur réside dans la perturbation et, lorsque la mémoire est corrompue, dans un point d'appui. - Sieve / ManageSieve : une fois que vous détenez un identifiant, le service ManageSieve (4190) vous permet de téléverser des scripts de filtre Sieve. Les extensions
vnd.dovecot.executeet pipe de Sieve, lorsqu'elles sont compilées, exécutent des programmes externes sur le courrier entrant, transformant un identifiant de boîte aux lettres en exécution de commandes sur le serveur. Même sans ces extensions, l'analyseur de script lui-même est une surface d'attaque post-authentification.
# ManageSieve: list capabilities, then upload a filter (post-auth)
nc <target> 4190
"IMPLEMENTATION" "Dovecot Pichia"
"SIEVE" "fileinto reject envelope ... vnd.dovecot.execute"
# the SIEVE line reveals whether the execute/pipe extensions are compiled in
Lisez la liste d'extensions "SIEVE" annoncée : la présence de vnd.dovecot.execute ou de vnd.dovecot.pipe est le signal qu'un filtre chargé peut exécuter des commandes, ce qui est le chemin à poursuivre depuis un compte détenu.
Cyrus IMAP#
Cyrus porte la lignée plus ancienne de corruption mémoire. Son analyse des commandes et des arguments (notamment le traitement des longueurs de littéraux et de certaines commandes dans les versions plus anciennes) contenait des débordements de tampon atteignables en envoyant une commande ou un littéral trop long. Les cas classiques se trouvaient dans la répartition des commandes en pré-authentification, de sorte qu'une commande forgée avant la connexion pouvait corrompre la mémoire. Ces cas sont liés à des versions plus anciennes spécifiques de Cyrus et sont la raison pour laquelle l'identification de version compte : le déclencheur n'existe que sur la plage vulnérable, et sur une installation corrigée la même commande est traitée proprement.
Courier#
L'historique de Courier-IMAP se situe surtout dans sa couche d'authentification et SASL et dans courier-authlib environnant, où des failles de traitement d'entrée produisaient des plantages et, dans les versions plus anciennes, pire encore. La présence de Courier dans la bannière est elle-même le signe d'un hôte vieillissant susceptible d'être en retard sur d'autres services également.
Lignée#
Le schéma des trois est le même arc : les démons anciens (Cyrus, Courier, UW-IMAP avant eux) portaient les bugs de corruption mémoire typiques des services réseau en C des années 1990/2000 analysant des entrées non fiables en pré-authentification. Dovecot moderne a largement refermé cette classe dans le cœur IMAP, et l'exposition a migré vers l'extérieur, vers les services auxiliaires (soumission, stats, ManageSieve) et vers la surface de script (Sieve) qui échange un identifiant de boîte aux lettres contre l'exécution. Quand vous identifiez un vieux Cyrus ou Courier, pensez corruption mémoire en pré-authentification ; quand vous identifiez un Dovecot actuel, pensez déni de service des services auxiliaires et exécution Sieve post-authentification.