📬 Post SMTP : le plugin qui envoie tout… y compris l’accès admin
Épisode dans la série : « Mais pourquoi tant de gens laissent leur WordPress mourir lentement sans mises à jour ? ». Cette fois, c’est le plugin Post SMTP qui fait parler de lui. Utilisé pour envoyer des e-mails depuis WordPress (confirmation de commande, formulaire de contact, insultes automatisées du RGPD…), il est actuellement une porte d’entrée béante pour les cybercriminels, façon double battant et paillasson « Bienvenue ».
Plus de 200 000 sites utiliseraient une version vulnérable de ce plugin. L’exploitation permet carrément de prendre le contrôle du compte administrateur. Rien que ça.
🧨 La faille, en résumé : « Je t’envoie un e-mail et je prends ton site »
La vulnérabilité repose sur une mauvaise gestion des webhooks et des appels API, permettant à un attaquant non authentifié d’injecter des données arbitraires dans une requête POST. Et quand ces données sont mal filtrées… bim : exécution de code, escalade de privilèges, et hop, l’admin est à moi.
Autrement dit : une erreur de validation côté backend, une logique un peu trop confiante, et un plugin open source mal maintenu pendant quelques cycles. Résultat : un accès complet à WordPress, sans forcer la serrure.
😬 Ce que ça permet à un attaquant :
- Modifier les réglages SMTP (envoi d’emails depuis un compte compromis),
- Ajouter des comptes administrateurs (coucou
admin2
), - Déployer des backdoors PHP dans le thème ou via plugins,
- Rediriger les utilisateurs vers des sites frauduleux (phishing, malware, NFT de chats musclés…).
🛠️ La version à jour corrige la faille… mais peu de gens la mettent à jour.
Post SMTP a publié un correctif dans la version 2.8.7, mais comme toujours :
« Pourquoi mettre à jour un plugin gratuit qui marche encore ? » – Proverbe d’administrateur pressé, juste avant l’incendie.
🧯 Ce que vous pouvez faire (maintenant, pas dans 6 mois)
✅ Mettez à jour Post SMTP en version 2.8.7 ou supérieure.
✅ Vérifiez si des comptes admin inconnus ont été ajoutés.
✅ Contrôlez les fichiers .php
ajoutés récemment dans wp-content
.
✅ Activez l’authentification à deux facteurs pour l’admin (oui, même sur WordPress).
✅ Surveillez les connexions et les actions avec un plugin de sécurité (ex : Wordfence, iThemes).
✅ Sauvegardez. Testez vos sauvegardes. Recommencez demain.
💡 Et côté prévention ?
Si vous êtes webmaster ou hébergeur :
- Bloquez les requêtes POST suspectes via NGINX/Apache.
- Interdisez l’écriture sur les fichiers de core WordPress et plugins.
- Activez Fail2Ban avec une règle personnalisée pour les URLs
/wp-json/post-smtp/*
. - Ajoutez une alerte SIEM dès que le plugin est réactivé ou modifié.
🤡 Moralité ?
Si un plugin peut envoyer des mails, il peut aussi envoyer votre site direct chez les pirates, avec suivi Colissimo.
200 000 sites, ce n’est pas une faille, c’est une campagne de prospection gratuite pour les hackers.
Et vous ? Toujours pas de politique de mise à jour automatisée ?
📎 Pour aller plus loin :
📂 Fichier de filtre : /etc/fail2ban/filter.d/wordpress-postsmtp.conf
ini [Definition] failregex = <HOST> -.*"(POST|GET).*/wp-json/post-smtp/.* HTTP/1\.[01]".* ignoreregex =
🛡️ Fichier de jail : /etc/fail2ban/jail.d/wordpress-postsmtp.local
ini [wordpress-postsmtp] enabled = true filter = wordpress-postsmtp action = iptables[name=WordPressPostSMTP, port=http, protocol=tcp] logpath = /var/log/nginx/access.log maxretry = 3 findtime = 3600 bantime = 86400
🔧 Instructions d’activation
- Créer le filtre :
bash sudo nano /etc/fail2ban/filter.d/wordpress-postsmtp.conf
- Créer la jail :
bash udo nano /etc/fail2ban/jail.d/wordpress-postsmtp.local
- Redémarrer Fail2Ban :
bash sudo systemctl restart fail2ban
- Vérifier que la jail est active :
bash sudo fail2ban-client status wordpress-postsmtp
✅ Conseil bonus
Pense à ajouter une alerte sur les bans en envoyant un mail (via sendmail-whois.conf
ou mta-sendmail
) si tu gères un serveur WordPress multi-client.
Souhaite-tu aussi une version adaptée pour Apache ou une visualisation Grafana si tu utilises fail2ban + Loki ?