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

Cách tự kiểm tra website WordPress có bị nhiễm mã độc không

Nguyen Hien
Cách tự kiểm tra website WordPress có bị nhiễm mã độc không
Cỡ chữ

Kiểm tra website WordPress có nhiễm mã độc không là bước xác minh chủ động: thay vì chờ thấy triệu chứng, bạn dùng công cụ quét để truy ra mã lạ. Bài này chỉ cách kiểm từ ngoài lẫn trên máy chủ, và quan trọng hơn — nêu rõ giới hạn của từng cách để bạn không nhầm “quét sạch” với “web sạch”.

1. Quét từ bên ngoài (nhanh, không cần cài)

Cách dễ nhất để bắt đầu. Bạn nhập địa chỉ web vào công cụ quét từ xa:

  • Sucuri SiteCheck (sitecheck.sucuri.net) — kiểm mã độc lộ ra ngoài, tình trạng bị gắn cờ và danh sách đen.
  • VirusTotal — đối chiếu URL với khoảng 70 công cụ dò và cơ sở blacklist.

Giới hạn quan trọng: quét từ xa chỉ “nhìn” được phần HTML/JavaScript hiện ra ngoài. Nó không thấy cửa hậu (backdoor) viết bằng PHP nằm sâu trong máy chủ. Vì vậy “SiteCheck báo sạch” chưa có nghĩa web bạn sạch.

2. Google Search Console — kênh chính thống

Đây là nơi đáng tin nhất để biết Google đánh giá web bạn ra sao:

  • Vào Bảo mật và Tác vụ thủ công → Vấn đề bảo mật (Security Issues). Nếu Google phát hiện web bị hack, mục này liệt kê loại vấn đề và URL mẫu.
  • Đối chiếu thêm trạng thái Google Safe Browsing để xem tên miền có bị gắn cờ không.

Nếu đã dính cảnh báo, xem cách gỡ ở bài gỡ cảnh báo “trang này có thể gây hại”.

3. Đối chiếu file gốc bằng WP-CLI (mạnh nhất, miễn phí)

Cách hiệu quả nhất để phát hiện file bị sửa hoặc chen lén — so file trên web với bản gốc chính thức của WordPress.org:

  • wp core verify-checksums — kiểm các file lõi.
  • wp plugin verify-checksums --all — kiểm các plugin có trên kho chính thức.

Lệnh báo ngay file lõi/plugin bị thay đổi hoặc file lạ chen vào. Nếu không dùng được dòng lệnh, có thể tải đúng bản WordPress (xem số bản trong wp-includes/version.php) rồi so thư mục wp-adminwp-includes.

4. Quét trên máy chủ bằng plugin

Plugin chạy trực tiếp trên hosting (Wordfence, MalCare, Sucuri…) soi được file PHP và cơ sở dữ liệu — sâu hơn quét từ xa. So sánh ưu nhược điểm ở bài so sánh plugin quét mã độc. Lưu ý: nếu web đã bị chiếm sâu, chính plugin cũng có thể bị vô hiệu, nên hãy chéo-kiểm bằng checksums.

5. Soi nhanh thủ công

Vài chỗ đáng liếc qua: tài khoản lạ trong Người dùng; file .php bất thường trong wp-content/uploads/; giá trị siteurl/home trong cài đặt có đúng tên miền không. Mã độc hay ẩn ở những nơi ít ai ngờ — chi tiết ở bài mã độc thường giấu ở đâu trong WordPress.

Hiểu kết quả để khỏi hoảng nhầm

Khi chạy verify-checksums, công cụ liệt kê những file khác với bản gốc — nhưng đừng vội cho rằng tất cả đều là mã độc. File ngôn ngữ hoặc một vài file cấu hình có thể khác một cách hợp lệ. Điều thật sự đáng nghi là file lạ không có trong bản gốc, nhất là khi nằm trong wp-includes/ hay wp-admin/, và file PHP nằm sai chỗ như trong uploads/. Tương tự, với cú pháp site:tenmiencuaban.com trên Google: nếu kết quả trả về những trang bạn chưa từng tạo — tiếng Nhật, thuốc, cờ bạc — đó là bằng chứng rõ ràng của SEO spam đã bị Google lập chỉ mục, cần xử ngay vì nó ảnh hưởng trực tiếp tới thứ hạng.

Đọc kết quả quét sao cho đúng

Khi dùng công cụ quét từ xa như SiteCheck hay VirusTotal, đừng chỉ nhìn chữ “sạch” hay “nhiễm” rồi yên tâm hoặc hoảng loạn. Hãy đọc kỹ phần chi tiết: công cụ thường chỉ ra tên miền lạ mà web bạn đang nạp tài nguyên về, cảnh báo blacklist từ những danh sách nào, và đoạn mã đáng ngờ nằm ở URL nào. Những thông tin này giúp bạn khoanh vùng để xử, thay vì dọn mò. Ngược lại, nếu công cụ báo “không phát hiện” mà web vẫn có triệu chứng lạ, đừng vội mừng — như đã nói, quét từ xa không nhìn được vào bên trong máy chủ.

Đừng quên kiểm trên điện thoại

Nhiều mã chuyển hướng chỉ kích hoạt trên thiết bị di động để né chủ web (vốn hay dùng máy tính). Vì vậy ngoài kiểm trên máy tính, hãy mở web trên điện thoại bằng chế độ ẩn danh và bấm vào từ kết quả Google. Nếu trên điện thoại bị đẩy đi mà trên máy tính thì không, gần như chắc chắn web đã bị chèn mã có điều kiện.

Nên dùng cách nào — bảng so sánh nhanh

Cách kiểmThấy đượcKhông thấyChi phí
Quét từ xa (SiteCheck/VirusTotal)Mã lộ ra ngoài, bị gắn cờCửa hậu PHP trong máy chủMiễn phí
Google Search ConsoleĐánh giá của Google, URL mẫuMã Google chưa bắt đượcMiễn phí
Đối chiếu checksums (WP-CLI)File lõi/plugin bị sửa hoặc lạMã nằm trong cơ sở dữ liệuMiễn phí
Plugin quét server-sideFile PHP và cơ sở dữ liệuCó thể bị vô hiệu nếu web bị chiếm sâuFree / trả phí

Không cách nào thấy hết một mình. Cách chắc chắn là phối hợp: quét từ xa cộng Search Console để biết “có vấn đề không”, rồi checksums cộng plugin để biết “vấn đề nằm ở đâu”.

Sơ đồ 5 lớp kiểm tra website nhiễm mã độc: quét từ xa, Search Console, checksums, plugin server-side, soi thủ công
Năm lớp kiểm tra phối hợp để không bỏ sót mã độc.

Bao lâu nên kiểm một lần

Với web cá nhân ít thay đổi, quét định kỳ hằng tháng và mỗi khi cập nhật lớn là đủ. Với web kinh doanh hay bán hàng, nên bật giám sát thay đổi file để được báo ngay khi có file lạ chen vào, kèm quét tự động hằng tuần. Phát hiện trong vài giờ thay vì vài tuần chính là khác biệt giữa “dọn nhẹ nhàng” và “mất khách, bị Google phạt nặng”.

Quét xong nghi có vấn đề?

Phát hiện được mới là một nửa; dọn sạch tận gốc cả backdoor lẫn lỗ hổng mới là phần khó. Nếu cần làm nhanh và chắc, Web22 nhận kiểm tra và xử lý mã độc kèm gia cố để không tái nhiễm.

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

Công cụ quét online báo sạch là yên tâm chưa?

Chưa hẳn. Quét từ xa không thấy cửa hậu PHP server-side. Hãy kết hợp thêm verify-checksums và Google Search Console.

Bao lâu nên kiểm một lần?

Với web đang kinh doanh, nên bật giám sát thay đổi file liên tục và quét định kỳ hằng tuần, thay vì chỉ kiểm khi có sự cố.

Nguồn: WP-CLI verify-checksums, Google — Security Issues report.

Đọc tiếp

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

Tất cả bài viết