
Docker-basiertes Labor, das die Remote-Code-Ausführung von CVE-2020-7247 in OpenSMTPD 6.6.1p1 mit einem Python-PoC zu Bildungszwecken im Sicherheitstesting demonstriert.
WHS 4기 박솔민
Original-Link: https://github.com/vulhub/vulhub/blob/43eae7170d09e7748c3aac64cd6a8e5af508a8ef/opensmtpd/CVE-2020-7247/README.md
OpenSMTPD ist ein SMTP-Serverprogramm, das auf Unix-ähnlichen Betriebssystemen verwendet wird. Es kann auf BSD, macOS, GNU/Linux usw. verwendet werden und basiert auf dem RFC 5321 SMTP-Protokoll.
CVE-2020-7247 ist eine Remote-Befehlsausführungs-Schwachstelle in OpenSMTPD, die durch unzureichende Überprüfung der Absender- oder Empfängeradressen verursacht wird. Ein Angreifer kann manipulierte SMTP-Anfragen senden, um beliebige Befehle auf dem Server auszuführen.
Diese Schwachstelle wurde in Version 6.6.2p1 von OpenSMTPD behoben.
| Element | Inhalt |
|---|
| Schwachstellennummer | CVE-2020-7247 |
| Verwundbare Software | OpenSMTPD |
| Verwundbare Version | OpenSMTPD 6.6.1p1 |
| Schwachstellentyp | Remote Code Execution |
| Übungsumgebung | Docker / Vulhub |
| Verwendeter Port | 8825:25 |

Führen Sie die folgende Anweisung aus, um die verwundbare OpenSMTPD-Umgebung zu starten.
docker compose up -d
Überprüfen Sie, ob der Container ordnungsgemäß ausgeführt wird.
docker compose ps

Um zu überprüfen, ob der SMTP-Dienst ordnungsgemäß funktioniert, verbinden Sie sich mit Port 8825.
nc 127.0.0.1 8825 -v
Bei erfolgreicher Verbindung wird das OpenSMTPD-Banner wie folgt ausgegeben:
220 <container-id> ESMTP OpenSMTPD

Verwenden Sie den PoC-Code, um einen Befehl an den Zielserver zu senden. In der Übung wurde ein Befehl verwendet, der keine gefährliche Aktion ausführt, sondern die Datei /tmp/proof.txt erstellt.
python3 poc.py 127.0.0.1 8825 'touch /tmp/proof.txt'
Überprüfen Sie anschließend, ob die Datei im Container erstellt wurde.
docker compose exec smtpd ls -l /tmp/proof.txt
Wenn die Datei /tmp/proof.txt vorhanden ist, bedeutet dies, dass der von außen übermittelte Befehl innerhalb des Containers ausgeführt wurde.
Es wurde bestätigt, dass ein Angreifer durch unzureichende Eingabevalidierung bei der Verarbeitung von SMTP-Anfragen in OpenSMTPD beliebige Befehle auf dem Server ausführen kann, indem er manipulierte Anfragen sendet.
Diese Übung wurde nur in einer lokalen Docker-Umgebung durchgeführt und darf nicht gegen echte Server oder nicht autorisierte Systeme eingesetzt werden.