Cara Menangani Exploit Zimbra zmcat yang sedang marak dikabarkan semua versi zimbra rentan terinfeksi. Bug ini menghasilkan blank page atau halaman putih ketika kita mengakses zimbra. Informasi ini kami dapat dari blog, forum zimbra dan pengalaman pribadi penulis. Exploitasi ini menggunakan metode input file bash script dan jsp pada port http/https.
Sebagai penanganan dini dari bug ini, website resmi zimbra sudah memberi announcement untuk segera melakukan upgrade kepada pengguna. Pengguna zimbra versi 8.8 diminta untuk upgrade ke versi 8.8.10 patch 7 atau 8.8.11 patch 3, sedangkan untuk pengguna zimbra versi 8.7 disarankan untuk upgrade ke versi 8.7.11 patch 10. (refernsi: nist.gov)

Menangani Exploit Zimbra Zmcat

berikut cara memeriksa apakah mail server anda terkena exploit
Buka direktori /tmp, cek apakah terdapat file l.sh, s.sh, dan zmcat dengan menjalankan perintah berikut

cd /tmp/
ls -lah

Bila terdapat file tersebut pada direktori /tmp, cek proses file tersebut dengan menjalankan perintah

ps faux | grep l\.sh
ps faux | grep s\.sh
ps faux | grep zmcat

Kill semua process script tersebut.

Contoh:

[root@mail tmp]# ps faux | grep zmcat
root     25248  0.0  0.0 112640   960 pts/5    S+   23:52   0:00          \_ grep --color=auto zmcat
zimbra   20853 98.3  0.0 193152  5480 ?        Ssl  23:46   5:33 /tmp/zmcat

PID nya adalah 20853

kill -9 20853

Delete atau pindahkan file tersebut ke direktori lain.

mkdir -p /opt/zbug
mv l.sh s.sh zmcat /opt/zbug

Rename scripte tersebut

cd /opt/zbug
mv l.sh l.sh.bak
mv s.sh s.sh.bak
mv zmcat zmcat.bak

Cek script jsp, java, class menggunakan perintah berikut

find /opt/zimbra/jetty/ -name "*.jsp" -mtime -15 -ls
find /opt/zimbra/jetty/ -name "*_jsp.java" -mtime -15 -ls
find /opt/zimbra/jetty/ -name "*.class" -mtime -15 -ls

Nama script .jsp menggunakan 4 karakter acak contohnya mWc6.jsp, shSJ.jsp,zIV2_jsp.java, mWc6_jsp.java, zIV2_jsp.class, mWc6_jsp.class. Pindahkan file-file tersebut ke dalam sebuah direktori baru.

Contoh

[zimbra@mail ~]$ find /opt/zimbra/jetty/ -name "*.jsp" -mtime -15 -ls
1578935    4 -rw-r-----   1 zimbra   zimbra       1236 Apr  3 04:45 /opt/zimbra/jetty/webapps/zimbra/img/mWc6.jsp
1577796    4 -rw-r-----   1 zimbra   zimbra       1236 Apr  3 04:43 /opt/zimbra/jetty/webapps/zimbra/img/zIV2.jsp
1452761    4 -rw-r-----   1 zimbra   zimbra        743 Apr  3 04:43 /opt/zimbra/jetty/webapps/zimbra/downloads/SbWk.jsp
1452958    4 -rw-r-----   1 zimbra   zimbra        743 Apr  3 04:45 /opt/zimbra/jetty/webapps/zimbra/downloads/shSJ.jsp

Hide zimbra dari mesin pencari seperti google, bing, duckduckgo, dan lain-lain menggunakan perintah berikut

su - zimbra
zmprov mcf zimbraMailKeepOutWebCrawlers TRUE +zimbraResponseHeader "X-Robots-Tag: noindex"
zmmailboxdctl restart

 

Setelah sekian hari muncul keanehan pada kinerja prosessor selalu menjadi 100%, setelah di croscek ada file script zimbra yang membuat cpu usage menjadi 100%

Cek apakah terdapat file script zmswatch dan zmswatch.sh pada direktori /opt/zimbra/log

cd /opt/zimbra/log
ls -lah

Detail file tersebut adalah sebagai berikut

-rwxr-x---  1 zimbra   zimbra   976K May 17 23:04 zmswatch
-rwxr-x---  1 zimbra   zimbra    225 May 17 23:04 zmswatch.sh

Cek PID zmswatch dengan perintah berikut

[root@mail tmp]# ps faux | grep zmswatch
root     25248  0.0  0.0 112640   960 pts/5    S+   23:52   0:00          \_ grep --color=auto zmswatch
zimbra   20857 98.3  0.0 193152  5480 ?        Ssl  23:46   5:33 /opt/zimbra/log/zmswatch

Kill process PID 20857 dengan perintah

kill -9 20857

Cek cron tab user zimbra

su - zimbra
crontab -l

Jika cron zimbra tetap ada, berarti sudah tidak masalah.

Jika cron zimbra hilang, maka lakukan langkah berikut

Untuk Single-Server Zimbra 8.7

cp -pvr /var/spool/cron/zimbra  /tmp/zimbra.cron.BAK  
cat /opt/zimbra/conf/crontabs/crontab > /tmp/cron.zimbra
cat /opt/zimbra/conf/crontabs/crontab.ldap >> /tmp/cron.zimbra
cat /opt/zimbra/conf/crontabs/crontab.store >> /tmp/cron.zimbra
cat /opt/zimbra/conf/crontabs/crontab.logger >> /tmp/cron.zimbra
cat /opt/zimbra/conf/crontabs/crontab.mta >> /tmp/cron.zimbra
echo "# ZIMBRAEND -- DO NOT EDIT ANYTHING BETWEEN THIS LINE AND ZIMBRASTART" >> /tmp/cron.zimbra 
crontab -u zimbra /tmp/cron.zimbra

Jika menggunakan Zimbra Network Edition, tambahkan perintah berikut

su - zimbra -c "zmschedulebackup -D"

Untuk Multi Server Zimbra 8.7

LDAP Server:

cp -pvr /var/spool/cron/zimbra  /tmp/zimbra.cron.BAK 
cat /opt/zimbra/conf/crontabs/crontab > /tmp/cron.zimbra
cat /opt/zimbra/conf/crontabs/crontab.ldap >> /tmp/cron.zimbra  
echo "# ZIMBRAEND -- DO NOT EDIT ANYTHING BETWEEN THIS LINE AND ZIMBRASTART" >> /tmp/cron.zimbra  
crontab -u zimbra /tmp/cron.zimbra   
su - zimbra -c "zmschedulebackup -D"

Mailbox Server:

cp -pvr /var/spool/cron/zimbra  /tmp/zimbra.cron.BAK 
cat /opt/zimbra/conf/crontabs/crontab > /tmp/cron.zimbra
cat /opt/zimbra/conf/crontabs/crontab.store >> /tmp/cron.zimbra
echo "# ZIMBRAEND -- DO NOT EDIT ANYTHING BETWEEN THIS LINE AND ZIMBRASTART" >> /tmp/cron.zimbra  
crontab -u zimbra /tmp/cron.zimbra   
su - zimbra -c "zmschedulebackup -D"

MTA+Proxy Server:

cp -pvr /var/spool/cron/zimbra  /tmp/zimbra.cron.BAK  
cat /opt/zimbra/conf/crontabs/crontab > /tmp/cron.zimbra
cat /opt/zimbra/conf/crontabs/crontab.mta >> /tmp/cron.zimbra
echo "# ZIMBRAEND -- DO NOT EDIT ANYTHING BETWEEN THIS LINE AND ZIMBRASTART" >> /tmp/cron.zimbra 
crontab -u zimbra /tmp/cron.zimbra

Setelah itu restart service cron dengan perintah

Ubuntu

service cron restart

RHEL/Centos 7.x

systemctl restart crond

RHEL/Centos 6.x

service crond restart

CATATAN:
– Tutorial diatas hanya untuk penanganan dini dan sangat tidak dianjurkan untuk menggunakan email server sebagai produksi untuk selanjutnya jika;
– email server sudah terkena local exploit ataupun root exploit
– SANGAT DISARANKAN untuk migrasi ke server baru