Bỏ qua tới nội dung
Bảo mật website· ·9 phút đọc

Cách tự gỡ mã độc WordPress thủ công từng bước

Nguyen Hien
Cách tự gỡ mã độc WordPress thủ công từng bước
Cỡ chữ

Tự gỡ mã độc WordPress là việc làm được nếu theo đúng thứ tự và cẩn thận sao lưu trước. Bài này tóm quy trình mười bước đã được kiểm chứng — từ thay sạch file lõi tới đổi mật khẩu và khoá lại cửa hậu — kèm những bước hay bị bỏ sót khiến web vừa dọn xong đã dính lại.

Trước khi bắt đầu — đọc kỹ

Thao tác này đụng vào file hệ thống và cơ sở dữ liệu, làm sai có thể khiến web sập. Nếu đây là web bán hàng hoặc web đang ra tiền, hãy cân nhắc nhờ dịch vụ thay vì mạo hiểm. Dù tự làm hay thuê, nguyên tắc số một là: sao lưu toàn bộ trước khi đụng bất cứ thứ gì — vừa để có đường lui, vừa giữ bằng chứng.

Quy trình mười bước

  1. Sao lưu file và cơ sở dữ liệu, rồi bật chế độ bảo trì (maintenance) để khách không thấy web lúc đang dọn.
  2. Xác định phiên bản WordPress đang chạy (đọc wp-includes/version.php) và tải đúng bản gốc từ WordPress.org.
  3. Thay sạch lõi: xoá và thay toàn bộ hai thư mục wp-admin/wp-includes/ bằng bản gốc. Không đụng wp-content và không ghi đè wp-config.php ở bước này (nhưng phải mở nó ra soi).
  4. Plugin và theme: xoá hẳn thư mục rồi cài lại bản gốc từ nguồn chính thức — đừng chỉ “sửa” file nhiễm. Dùng wp core verify-checksumswp plugin verify-checksums --all để truy file lạ.
  5. Dọn uploads: xoá mọi file .php trong wp-content/uploads/ (thư mục này không nên chứa file PHP chạy được).
  6. Dọn cơ sở dữ liệu: sửa lại siteurl/home cho đúng tên miền, xoá tuỳ chọn lạ trong wp_options; gỡ thẻ <script>/iframe bị chèn trong wp_posts; xoá tài khoản admin lạ. Xem các vị trí ở bài mã độc giấu ở đâu.
  7. Khôi phục .htaccess về bản mặc định của WordPress; gỡ code lạ ở đầu wp-config.php.
  8. Đổi tất cả mật khẩu (quản trị WordPress, hosting/cPanel, FTP/SFTP, người dùng cơ sở dữ liệu) và thay mới bộ khoá bảo mật (SALT) trong wp-config.php bằng bộ sinh chính thức của WordPress. Bước này huỷ mọi phiên đăng nhập đang bị chiếm — bỏ qua là hacker vẫn còn đường vào.
  9. Cập nhật lõi, plugin, theme lên bản mới nhất; gỡ thứ không dùng.
  10. Kiểm lại từ ngoài: quét Sucuri SiteCheck, đối chiếu Google Safe Browsing và chạy lại checksums. Sạch rồi mới tắt bảo trì.

Cần chuẩn bị gì trước khi dọn

Để quy trình trên trơn tru, hãy có sẵn ba thứ: quyền truy cập file (qua trình quản lý file của hosting, FTP/SFTP, hoặc SSH); quyền vào cơ sở dữ liệu (phpMyAdmin hoặc công cụ tương đương); và bản WordPress gốc đúng phiên bản tải từ wordpress.org. Nếu dùng được dòng lệnh, bộ công cụ WP-CLI giúp ích rất nhiều: wp core verify-checksums để soi file lõi, wp core download --force --skip-content để thay lõi sạch mà giữ nguyên nội dung, và wp user list --role=administrator để rà nhanh tài khoản quản trị lạ. Không có dòng lệnh thì làm thủ công qua giao diện hosting vẫn được, chỉ chậm hơn một chút.

Sơ đồ quy trình gỡ mã độc WordPress 10 bước, từ sao lưu đến kiểm lại từ ngoài
Quy trình gỡ mã độc WordPress an toàn theo mười bước.

Dọn cơ sở dữ liệu — phần hay bị làm qua loa

Bước dọn cơ sở dữ liệu (database) thường bị làm sơ sài vì nghe có vẻ kỹ thuật, nhưng đây là nơi mã độc trú ẩn rất nhiều. Vào phpMyAdmin (hoặc công cụ tương đương trên hosting) rồi rà ba điểm chính:

  • Bảng wp_options: kiểm hai dòng siteurlhome phải đúng tên miền của bạn; xoá những tuỳ chọn lạ tên vô nghĩa hoặc giá trị là đoạn mã dài.
  • Bảng wp_posts: tìm bài/trang chứa thẻ <script>, iframe hoặc link ra tên miền lạ — đó là dấu vết chèn nội dung.
  • Bảng wp_users: rà danh sách tài khoản, xoá tài khoản quản trị bạn không tạo.

Nếu không quen thao tác cơ sở dữ liệu, hãy sao lưu trước khi sửa và làm từng bước thật cẩn thận — một câu lệnh sai có thể làm hỏng toàn bộ nội dung.

Sau khi dọn: theo dõi một đến hai tuần

Dọn xong không có nghĩa là kết thúc. Cửa hậu tinh vi có thể nằm im vài ngày rồi mới hoạt động lại. Trong một đến hai tuần đầu, hãy quét lại định kỳ, theo dõi log đăng nhập xem có truy cập lạ không, và để ý thứ hạng cùng lưu lượng trên Search Console. Nếu mọi thứ yên ổn sau hai tuần, khả năng cao bạn đã dọn sạch.

Năm lỗi khiến “tự gỡ” thành “tự phá web”

  1. Không sao lưu trước. Lỡ tay xoá nhầm là mất luôn cả dữ liệu lẫn bằng chứng, không có đường lui.
  2. Chỉ sửa file nhiễm thay vì thay nguyên bản gốc. Rất dễ sót, vì cùng một loại mã có thể bị chèn ở nhiều file.
  3. Quên đổi mật khẩu và thay SALT. Hacker vẫn còn phiên đăng nhập đang chiếm — bạn dọn xong nó vào lại như chưa hề có chuyện gì.
  4. Xoá mù mọi file chứa base64_decode. Nhiều plugin tốt cũng dùng hàm này; xoá bừa là web trắng trang ngay.
  5. Dọn xong không vá lỗ hổng gốc. Plugin/theme cũ vẫn hở thì vài hôm sau lại nhiễm, công cốc.

Nếu lỡ gặp một trong các tình huống này và web đã hỏng, đừng cố sửa chồng lên — khôi phục từ bản sao lưu sạch rồi làm lại từ đầu thường nhanh và an toàn hơn nhiều.

Đừng quên cửa hậu

Bước nguy hiểm nhất để sót là cửa hậu (backdoor). Nó không phá hoại nên dễ bị bỏ qua, nhưng để hacker quay lại — đây là lý do số một khiến web tái nhiễm. Hãy làm riêng bước dọn backdoor để mã độc không quay lại như một phần bắt buộc của quy trình.

Khi nào nên giao cho người làm nghề

Nếu sau khi dọn web vẫn dính lại, hoặc bạn không chắc đã truy hết cửa hậu, đó là lúc nên dừng tự xoay. Web22 nhận bóc gỡ mã độc và gia cố lại website — rà cả file lẫn cơ sở dữ liệu, vá lỗ hổng gốc và dựng hàng rào để không tái phát.

Câu hỏi thường gặp

Cài plugin diệt rồi bấm quét là đủ chưa?

Chưa. Nếu bỏ bước đổi mật khẩu và thay SALT, hoặc còn sót cửa hậu, web sẽ dính lại. Plugin chỉ là một phần của quy trình.

Có nên sửa từng file nhiễm thay vì thay cả thư mục?

Không nên — rất dễ sót. Cách an toàn là thay nguyên lõi/plugin/theme bằng bản gốc rồi đối chiếu checksums.

Nguồn: Sucuri — How to Clean a Hacked WordPress Site.

Đọc tiếp

Bài viết
cùng chủ đề.

Tất cả bài viết