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