WordPress bị chèn mã độc vào wp-config.php, .htaccess hoặc index.php: cách kiểm tra

Minh họa kiểm tra thay đổi đáng ngờ trong wp-config.php .htaccess và index.php WordPress

Khi nghi WordPress bị chèn mã độc vào wp-config.php, .htaccess hoặc index.php, không nên mặc định mọi dòng lạ đều là malware. Đây đều là những file có thể chứa thay đổi hợp lệ tùy môi trường. Cách kiểm tra đáng tin cậy là đối chiếu baseline, lịch sử thay đổi, chức năng của code và các dấu hiệu compromise đi kèm.

Ba file này khác nhau về baseline

File Baseline phù hợp Lưu ý
index.php Đúng phiên bản WordPress core tin cậy Có thể dùng checksum/core package để đối chiếu
wp-config.php Bản cấu hình do chính tổ chức quản lý Không có một bản public duy nhất để diff vì chứa cấu hình/secret riêng
.htaccess Baseline web server + rule được phê duyệt Plugin cache/security/hosting có thể thêm rule hợp lệ

Quy trình safe diff trước khi sửa

  1. Ghi state hiện tại: path, hash, mtime và owner/process liên quan nếu có.
  2. Khóa clean source: với core dùng đúng WordPress version; với wp-config/.htaccess dùng baseline nội bộ hoặc backup đã xác minh.
  3. Sanitize secret: không đưa database credential, salts, API key hoặc token vào ticket, screenshot hoặc tài liệu chia sẻ.
  4. Diff trên bản sao: so sánh working copy với clean source/baseline; không chỉnh trực tiếp production trong lúc phân tích.
  5. Classify finding: APPROVED_CHANGE, UNEXPLAINED_CHANGE hoặc CONFIRMED_MALICIOUS dựa trên provenance + behavior + timeline.
  6. Chỉ remediation khi có rollback: lưu snapshot/bản sao trước thay thế file hoặc rule.

Kiểm tra index.php và WordPress core bằng checksum

Với WordPress core, có thể dùng lệnh chỉ đọc:

wp core verify-checksums

Lệnh này đối chiếu file core hiện tại với checksum chính thức của WordPress.org. Mismatch là finding cần giải thích, không tự động là malware. Tài liệu chính thức: WP-CLI — Verify core checksums.

Kiểm tra wp-config.php

Đối chiếu cấu hình hiện tại với bản quản lý hoặc backup tin cậy. Tập trung vào đoạn mới xuất hiện, include tới file không rõ nguồn gốc, thay đổi ngoài quy trình và timestamp bất thường. Không công khai credential hoặc secret lấy từ file trong ticket, ảnh chụp hay báo cáo không được bảo vệ.

Với wp-config.php, clean-source rule là baseline của chính website, không phải lấy một file mẫu trên Internet rồi ghi đè. File mẫu WordPress không chứa các giá trị production riêng của site.

Kiểm tra .htaccess

So sánh rule hiện tại với cấu hình web server dự kiến và change history. Redirect hoặc rewrite lạ cần được truy ngược nguồn tạo, nhưng rule khác mặc định chưa chắc độc hại vì plugin cache, bảo mật và hosting có thể thêm cấu hình hợp lệ.

Finding Evidence nên lưu Next action
Redirect/rewrite không có owner Rule, mtime, backup/diff, URL bị ảnh hưởng Đối chiếu hosting/plugin rồi mở rộng sang redirect workflow
Include tới file lạ Path, hash, source line, timeline Static review + provenance; không chạy file để thử
Rule hợp lệ từ plugin/hosting Owner, docs/ticket, thời điểm tạo Đánh dấu APPROVED_CHANGE

Kiểm tra index.php

Nếu index.php chứa code bổ sung không thuộc đúng bản WordPress core dự kiến, ghi nhận evidence trước khi thay thế. Clean replacement nên lấy từ đúng version/source tin cậy, không từ một file ngẫu nhiên tải bên ngoài.

Đừng chỉ tìm một chuỗi mã độc cố định

Signature có thể hữu ích nhưng không đủ. Code hợp lệ đôi khi bị minify hoặc trông khó đọc, còn code trái phép có thể được chèn tinh vi vào phần bình thường. Nên kết hợp diff, provenance, timestamp, log và hành vi website.

Stop condition trước remediation

  • Chưa xác định đúng WordPress version hoặc clean baseline.
  • Không có snapshot/rollback cho file cấu hình quan trọng.
  • Diff chứa secret chưa được sanitize.
  • Thay đổi có thể thuộc hosting/plugin nhưng chưa xác minh owner.
  • Finding cho thấy nhiều file/account/layer cùng bị ảnh hưởng — cần mở rộng incident scope.

Nếu phát hiện thay đổi trái phép thì làm gì?

Ghi nhận file, hash, timestamp và bằng chứng phù hợp trước remediation khi điều kiện cho phép. Bài loại bỏ WordPress backdoor và bảo toàn evidence giải thích nguyên tắc xử lý mà không phá hủy dấu vết cần thiết.

Redirect lạ có nhất thiết đến từ .htaccess?

Không. Redirect có thể phát sinh ở CDN, web server, PHP, database hoặc JavaScript. Nếu triệu chứng chính là chuyển sang domain khác, dùng workflow WordPress redirect sang trang lạ để kiểm tra theo từng lớp.

Sau khi thay file sạch có kết thúc cleanup không?

Chưa. Cần xác định cơ chế nào đã cho phép file bị sửa và liệu có persistence ở vị trí khác hay không. Quy trình tổng thể tại cleanup malware WordPress an toàn từng bước bao quát phần entry point, credential và verification.

Nguồn kỹ thuật tham khảo

Kết luận

Kiểm tra wp-config.php, .htaccess và index.php nên dựa trên baseline và bằng chứng thay vì filename hoặc một signature đơn lẻ. Clean-source rule phải đúng cho từng file, diff cần được thực hiện an toàn và mọi remediation phải có rollback; nếu xác nhận thay đổi trái phép, tiếp tục xử lý persistence, quyền truy cập và nguyên nhân gốc.

◇
Cần hỗ trợ kiểm tra và xử lý website?Đội ngũ SecureWebOps sẵn sàng hỗ trợ theo phạm vi phù hợp.
Liên hệ ngay →
Đoàn Trình Dục
Về tác giả Đoàn Trình Dục TD Digital · Website Operations & Security

Đoàn Trình Dục là tác giả nội dung trên SecureWebOps. Các bài viết tập trung vào bảo mật WordPress, giám sát an ninh website, malware/backdoor, hardening, backup/recovery và Incident Response theo hướng thực hành, có bước kiểm tra, bằng chứng, validation và rollback khi phù hợp.

Xem hồ sơ tác giả →