Zimbra CVE-2019-9670 lỗi nghiêm trọng giao thức http và https

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

Nguồn :
https://lorenzo.mile.si/zimbra-cve-2019-9670-being-actively-exploited-how-to-clean-the-zmcat-infection/961/

Leave a Comment