
Laboratoire basé sur Docker démontrant l'exécution de code à distance CVE-2020-7247 dans OpenSMTPD 6.6.1p1 avec un PoC Python pour des tests de sécurité éducatifs.
WHS 4e génération Park Sol-min
Lien original: https://github.com/vulhub/vulhub/blob/43eae7170d09e7748c3aac64cd6a8e5af508a8ef/opensmtpd/CVE-2020-7247/README.md
OpenSMTPD est un serveur SMTP utilisé sur les systèmes d'exploitation de type Unix. Il peut être utilisé sur BSD, macOS, GNU/Linux, etc., et fonctionne sur la base du protocole SMTP RFC 5321.
CVE-2020-7247 est une vulnérabilité d'exécution de commande à distance dans OpenSMTPD due à une validation insuffisante des adresses d'expéditeur ou de destinataire. Un attaquant peut envoyer une requête SMTP malveillante pour exécuter des commandes arbitraires sur le serveur.
Cette vulnérabilité a été corrigée dans la version 6.6.2p1 d'OpenSMTPD.
| Élément | Contenu |
|---|
| Numéro de vulnérabilité | CVE-2020-7247 |
| Logiciel vulnérable | OpenSMTPD |
| Version vulnérable | OpenSMTPD 6.6.1p1 |
| Type de vulnérabilité | Remote Code Execution |
| Environnement de pratique | Docker / Vulhub |
| Port utilisé | 8825:25 |

Utilisez la commande suivante pour exécuter l'environnement OpenSMTPD vulnérable.
docker compose up -d
Vérifiez que le conteneur s'est exécuté correctement.
docker compose ps

Connectez-vous au port 8825 pour vérifier que le service SMTP fonctionne correctement.
nc 127.0.0.1 8825 -v
Si la connexion réussit, la bannière OpenSMTPD suivante s'affiche.
220 <container-id> ESMTP OpenSMTPD

Utilisez le code PoC pour envoyer une commande au serveur cible. Dans cet exercice, nous avons utilisé une commande qui crée un fichier /tmp/proof.txt au lieu d'une commande dangereuse.
python3 poc.py 127.0.0.1 8825 'touch /tmp/proof.txt'
Ensuite, vérifiez que le fichier a été créé à l'intérieur du conteneur.
docker compose exec smtpd ls -l /tmp/proof.txt
Si le fichier /tmp/proof.txt est présent, cela signifie que la commande envoyée a été exécutée à l'intérieur du conteneur.
Nous avons confirmé qu'une validation insuffisante des entrées lors du traitement des requêtes SMTP dans OpenSMTPD peut permettre à un attaquant d'exécuter des commandes arbitraires sur le serveur via des requêtes malveillantes.
Cet exercice a été réalisé uniquement dans un environnement Docker local et ne doit pas être effectué sur des serveurs réels ou des systèmes non autorisés.