Cách loại bỏ Malware shell WordPress mới nhất?

Cách loại bỏ Malware shell WordPress mới nhất?

Từ 20/3/2019 đã có rất rất nhiều web WordPress tại Việt Nam cũng như trên thế giới, dính Malware nguy hiểm, chiếm quyền điều khiển Adminstrator của website. Đâu các cách khắc phục tốt nhất?

WordPress đang có biến lớn, rất nhiều trang bị dính mã độc chuyển hướng sang 1 web khác. Nó không hẳn do một người nào đó tạo ra mà có thể từ một tổ chức hacker chuyên nghiệp nào đó – có thể, vì mình cũng không biết đó là ai.

* Nguyên nhân Malware

Có vô vàn nguyên nhân, nó đến từ những nguyên nhân chủ quan và cả khách quan. Một phần do sự bất cẩn của đội ngũ Admin, ngoài ra, nguyên nhân cũng một phần – nhỏ thôi, do mã nguồn mở WordPress có rất nhiều “phần chắp vá tính năng” là các Plugin – vừa để nâng cấp, nhưng cũng vừa tạo ra rất nhiều lỗ hổng cho hacker tìm cách xâm nhập.

1. Do CMS WordPress:

Sơ qua, hacker có thể làm như sau: Đăng ký thành viên -> Bình luận bằng 1 đoạn mã code đặc dụng -> nhờ đoạn code này, họ thay đổi quyền Thành viên đăng ký (Customer) thành Quản trị viên cao nhất (Administrator). Và từ đó, họ có thể làm việc bất kỳ với web bạn. Tất nhiên họ thao tác bằng Tool, một phát vài nghìn web.

Lỗ hổng tồn tại trong các phiên bản trước của WordPress 5.1.1 và có thể được khai tác bằng các cài đặt thông qua bình luận mặc định. Theo báo cáo của WordPress thì có hơn 33% các trang web Internet đang sử dụng nền tảng WordPress. Nhận xét bài viết là một tính năng cốt lõi của blog và được bật theo mặc định, điều này ảnh hưởng đến hàng triệu trang web.

Lỗ hổng được vá trong trước WordPress 5.1.1 sẽ khiến các tác nhân xấu có thể chiếm lấy các trang web bằng cách sử dụng lỗ hổng giả mạo yêu cầu chéo trang (CSRF) bằng cách dụ quản trị viên đăng nhập truy cập vào trang web độc hại có payload XSS.

2. Do Plugin Easy WP SMTP

Dò qua tất cả các web dính Malware, mình thấy có một điểm chung là: đều sử dụng Plugin Easy WP SMTP – Đây là Plugin rất hay, giúp giửi thông báo email SMTP cho web WordPress, 90% website mình sử dụng ẻm nó.

Theo thông báo mới nhất từ Easy WP SMTP, họ đã fix thành công lỗi bảo mật này ở bản mới nhất. Điều quan trọng là lỗ hổng bảo mật này chỉ có trong Easy WP SMTP 1.3.9.0, sau khi nâng cấp lên Easy WP SMTP 1.3.9.1 thì lỗ hổng này đã được vá.

3. Cách loại bỏ Malware

Nếu bị dính con Shell này, việc đầu tiên là bình tĩnh, phải thật bình tĩnh vì nóng vội sẽ hỏng việc đó. Xem kỹ xem có đúng lỗi mô tả như trên không? nếu đúng, các bác làm theo các bước sau là được nhé:

* Phương án tạm thời:

Bước 1: Báo ngay bên hosting: Restore lại toàn bộ Host của bạn, về cách đó 24 tiếng, chắc nhất là về khoảng 48 tiếng trước đó. Nếu Host có R1soft thì các bác có thể tự thao tác, chỉ mất vài phút là phiên bản web sạch trước đó.

Bước 2:

1. Nâng cấp phiên bản WordPress của bạn lên mới nhất WP 5.1.1.
Lưu ý: Nếu theme không hỗ trợ và custom quá nhiều: đừng dại update, tạm bỏ qua update WP.

2. Tạm thời tắt chức năng Bình luận trong WordPress. Tắt bình luận ở tất cả các bài viết và bình luận bài viết mới. Xem cách làm như 2 hình dưới:

Bước 3:

Nâng cấp ngay và ngay lập tức plugin Easy WP SMTP lên phiên bản mới nhất 1.3.9.1. Theo mình thấy, mình chạy nhiều phiên bản plugin này trên 30 web, có cả bản cũ như V1.3.6.0 nhưng web không bị hack, có thể – lỗ hổng bảo mật chỉ có trong Easy WP SMTP 1.3.9.0

Bước 4:

Vào Admin kiểm tra lại thành phần Quản trị viên 🙂 tất nhiên, có thể vẫn còn lưu lại tài khoản hacker đấy, hãy xóa ngay.Tiếp, truy cập phpMyadmin kiểm tra table user xem có liên kết lạ không, nếu có xoá ngay lập tức.

* Phương án nâng cao

1. Cài đặt lại WordPress

Sau khi Restore web lại bản sạch (trước khi bị nhiễm malware), bạn nên cài lại phiên bản WordPress đang dùng. Nhất là với các web không Update lên WP 5.1.1 được, phải cài lại ngay.

Trước tiên, trong thư mục chứa website, phải giữ lại các file và thư mục sau:

  • wp-content: chứa nội dung của website như: theme, plugin, ảnh,…
  • .htaccess: chứa một số thông tin cấu hình của server
  • wp-config.php: chứa thông tin cấu hình liên quan đến database, user, password,…

Còn lại thì xóa bỏ hết và thay thế chúng bởi mã nguồn sạch của WordPress mà bạn mới tải về.

2. Dùng Script xóa mã .js

Dùng cho VPS: Script xóa tất cả mã JS malware chuyển hướng website nằm trong tập tin *.js đang hoành hành
Tác giả: Anh Tuấn từ datuan.dev

Vui lòng tự backup web trước khi thực hiện, mình không chịu bất cứ mất mát dữ liệu nào. Nếu script chạy rồi vẫn còn, vui lòng gửi file js mẫu cho mình để mình kiểm tra và hướng dẫn lại.

Lưu ý: đoạn Script này chỉ giúp bạn khôi phục nhanh nhất website về trạng thái ban đầu. Malware lây nhiễm từ file .php nên hoàn toàn có thể bị nhiễm lại.

  • Nơi cài đặt Script: cd /var/www/thư-mục-gốc-website/
  • Chạy đoạn mã này:

find . -type f -name “*.js” -print0 | xargs -0 sed -i -E “s/var _0x(.*)0x1d62x4\)\}\(\)\)\;//”

Tất cả các file javascript bị chèn mã như trong video dẫn tới bị chuyển hướng khi truy cập trang. Chạy 1 dòng lệnh là xóa toàn bộ và vẫn giữ nội dung gốc.

Phương án lâu dài

Bảo mật lại toàn bộ web là một bước quan trọng, không nên bỏ qua. Nếu không biết, hãy nhờ hoạc thuê chuyên gia. Nếu web bạn có tiềm năng phát triển thì hãy lo bảo mật ngay từ bây giờ, nếu web bạn kiếm ra tiền – dù ít hay nhiều, càng phải lo bảo mật ngay.

Tăng bảo mật web

Thay đổi đường dẫn đăng nhập /wp-admin
Đặt mật khẩu Admin thật khó, nhiều ký tự
Cài plugin bảo mật cho web, cần làm sớm
Xóa các liên kết từ wp_head (nâng cao)
Giới hạn thành viên, chỉ 1 Administrator
Tắt XML-RPC – Tăng bảo mật hệ thống
Thiết lập nâng cao cho wp-config.php
Bảo mật 2 bước, Thiết lập nâng cao

Hạn chế malware, shell

Có 2 cách chính để chèn header HTTP Content-Security-Policy vào response của website nhưng mình khuyên nếu có thể, hãy chèn vào cài đặt của webserver (Apache, Nginx,…) thay cho PHP vì hacker vẫn có thể vô hiệu hóa đoạn mã của chúng ta đi.

Triển khai bằng PHP

Chèn đoạn script dưới vào cuối tập tin functions.php của WP theme (child theme), sau đó tận hưởng thành quả.

PHP

<?php

function header_csp_generate(){
header(“Content-Security-Policy: script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ www.googletagmanager.com connect.facebook.net www.googleadservices.com www.google-analytics.com googleads.g.doubleclick.net onesignal.com tpc.googlesyndication.com”);
}
add_filter(‘wp_head’, ‘header_csp_generate’);

Triển khai Webserver

Đây là cách mình khuyên dùng, một bởi vì hacker khó có thể can thiệp làm thay đổi giá trị này đi, hai bởi vì bạn có thể chèn vào cấu hình của các webserver, bảo đảm tất cả các trang trên server đều được triển khai header này ngay lập tức.

Nginx

Chèn vào tập tin /etc/nginx/nginx.conf, đặt trong block http, sau đó restart lại Nginx.

http {
# ….
add_header Content-Security-Policy “script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ www.googletagmanager.com connect.facebook.net www.googleadservices.com www.google-analytics.com googleads.g.doubleclick.net onesignal.com tpc.googlesyndication.com;”;
# ….
}

Apache

Với apache có thể đơn giản hơn, bạn chỉ việc chèn vào tập tin .htaccess (vẫn khuyên không nên vì hacker có thể can thiệp, nếu không còn cách nào khác, hãy chmod hợp lý trước khi dùng) là được, hoặc chèn vào /etc/httpd/conf/httpd.conf. Sau đó restart lại Apache.

Header set Content-Security-Policy “script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ www.googletagmanager.com connect.facebook.net www.googleadservices.com www.google-analytics.com googleads.g.doubleclick.net onesignal.com tpc.googlesyndication.com;”;

3. Kết luận

Không có mã nguồn hay website nào dám khẳng định không thể bị hack, nhất là với WordPress – mã nguồn mở đến hơn 30 triệu website trên toàn thế giới. Các hacker vốn đã không phải người thường, họ sẽ luôn tìm cách phá hoại với nhiều mục đích.

 

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *