Vài ngày trước Zimbra đã đăng về một lỗ hổng bảo mật ảnh hưởng đến tất cả các phiên bản của họ. Nó có một lỗi rất nghiêm trọng vì nó có thể khai thác trên các cổng http / https, điều đó có nghĩa là bạn không có cách nào khác để giữ an toàn cho bạn mà chỉ cần vá cài đặt của bạn! Zimbra đã phát hành các bản vá cho các phiên bản 8.8.11P3, 8.7.11P10 và 8.6.0P14.
Tuy nhiên, bản vá không khắc phục được sự cố cho phép kẻ tấn công xâm nhập, nhưng nó không làm sạch hệ thống của bạn! Nếu một cửa hậu (backdoor) đã được tải lên, bản vá không xóa sạch nó, kẻ tấn công sẽ luôn có thể nhập lại!
Kẻ tấn công sẽ tải 2 tập lệnh bash, s.sh và l.sh vào /tmp, và tải tập tin zmcat vào đường dẫn /tmp/zmcat, từ nguồn 185.106.120.118.
Điều đầu tiên l.sh làm là điều chỉnh cài đặt hệ thống /Proc/sys/vm/nr_hugepages.
Sau đó, nó tải xuống zmcat từ máy chủ ở trên và đặt nó vào /tmp.
Để duy trì, đoạn script cố gắng đặt chính nó vào /etc/crontab và /etc/rc.local, nhưng được chạy với tư cách là người dùng zimbra, nó không thể thực hiện được.
Ngoài ra, nó đặt một số tệp jsp,. Class và .java trong Zimbra. Các file đó được sử dụng làm lệnh proxy : gọi các tệp đó cho phép chạy các lệnh máy chủ thông qua các yêu cầu GET.
Phát hiện zmcat
Phát hiện zmcat thì khá dễ, nếu có công cụ giám sát như Zabbix. Ngoài ra, có thể kiểm tra các file log của Zimbra, cụ thể là mailbox.log và nginx.access.log
Chặn User Agent
Từ log trên, tất cả các yêu cầu tự động đến từ UserAgent: python-request / 1.1.0. Bằng cách chặn UserAgent này, thì có thể ngăn tải tập tin zmcat.
Thực hiện cho http
Mở file /opt/zimbra/conf/nginx/templates/nginx.conf.web.http.default.template và thêm vào như sau :
if ($http_user_agent ~ (python-requests) ) { return 403; }
Thực hiện tương tự cho https, với đường dẫn /opt/zimbra/conf/nginx/templates/nginx.conf.web.https.default.template
Sau đó, restart lại dịch vụ
Dùng tường lửa để chặn
Dùng tường lửa chặn các địa chỉ 87.236.233.105 và 185.106.120.118 (nơi tải các file jsp và sh)
Làm sạch zmcat
Đầu tiên, vá zimbra hoặc khóa useragent
Ngăn các tiến trình đang chạy (kill) của bash và zmcat , như ps faux | grep l\.sh
Cũng có thể có một số tiến trình wget đang chạy, và nên kill
Xóa các tập lệnh sh và zmcat khỏi /tmp;
Xóa các jsp và java từ /opt/zimbra :
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
Điều này sẽ tìm thấy tất cả các tệp tin JSP và JAVA được cập nhật trong vòng 15 ngày qua
Dò quét các tập tin, và xóa các tập tin không cần thiết.
Restart lại zimbra
Có thể tìm thấy tập tin tên ZimbraApps.jsp, cần phải kiểm tra thủ công xem file có hợp lệ hay không
Sau khi dọn dẹp, nên thay đổi mật khẩu của LDAP và MySQL bằng cách sử dụng zmldappasswd, và thay đổi mật khẩu admin, root, amavis, nginx and postfix passwords với các lệnh sau :
zmldappasswd <random>
zmldappasswd -r <random>
zmldappasswd -a <random>
zmldappasswd -n <random>
zmldappasswd -p <random>
zmmypasswd <random>
zmmypasswd –root <random>
Kiểm tra -f /var/log/wtmp cuối cùng , để phát hiện các thông tin đăng nhập không mong muốn
Kiểm tra /var/log/auth.log hoặc /var/log/, để phát hiện đăng nhập từ xa bằng ssh của người dùng
Kiểm tra /etc/shadow
Kiểm tra key với lệnh :
su - zimbra
zmsshkeygen
zmupdateauthkeys