Bạn gõ thẳng tên miền thì website vẫn bình thường, nhưng khách bấm từ Google hoặc dùng điện thoại lại bị đưa sang trang cá độ, thuốc, hàng giả. Đây là kiểu chuyển hướng có điều kiện: mã độc chỉ chạy với một nhóm người truy cập để chủ website khó phát hiện. Bài này hướng dẫn cách tái hiện lỗi, tìm chỗ mã ẩn và việc nên làm trước khi xóa bất cứ thứ gì.
Website bị chuyển hướng chỉ khi vào từ Google hoặc trên điện thoại thường là do mã độc kiểm tra “người truy cập đến từ đâu” rồi mới chuyển hướng. Cách phát hiện là truy cập đúng như khách: từ kết quả Google, bằng điện thoại, ở cửa sổ ẩn danh, rồi đối chiếu với file .htaccess, bảng wp_options, bài viết trong database và thư mục mu-plugins. Hãy sao lưu hiện trạng trước khi sửa, vì xóa vội làm mất dấu vết cần để tìm cửa hậu.
Vì sao bạn không thấy lỗi còn khách thì thấy?
Mã độc dạng này thường kiểm tra ít nhất một trong ba điều kiện trước khi chuyển hướng:
- Nguồn truy cập (referer): chỉ chuyển hướng khi khách đến từ google.com hoặc bing.com, không chuyển hướng khi gõ thẳng tên miền.
- Thiết bị: chỉ chạy trên điện thoại, vì chủ website thường kiểm tra bằng máy tính.
- Trạng thái đăng nhập: bỏ qua người đang đăng nhập quản trị, nên bạn kiểm tra trong lúc đang đăng nhập sẽ không thấy gì.
Vì vậy “tôi mở web thấy bình thường” chưa đủ để kết luận website sạch.
Cách tái hiện lỗi đúng như khách truy cập
Mở cửa sổ ẩn danh, tìm trên Google rồi bấm vào kết quả
Đăng xuất khỏi WordPress, gõ site:tenmiencuaban.com hoặc tên thương hiệu, bấm vào kết quả thay vì gõ thẳng địa chỉ. Thử cả trang chủ và vài bài viết.
Thử trên điện thoại bằng mạng di động
Dùng 4G thay vì wifi nhà để tránh bộ nhớ đệm trên mạng nội bộ. Ghi lại địa chỉ trang đích bị chuyển tới.
Giả lập từ dòng lệnh
Nếu quen dùng terminal, gửi yêu cầu có nguồn truy cập từ Google và trình duyệt điện thoại, rồi xem phần đầu phản hồi:
curl -I -L -A "Mozilla/5.0 (Linux; Android 13)" -e "https://www.google.com/" https://tenmiencuaban.com/Nếu phản hồi có dòng location trỏ sang tên miền lạ thì mã chuyển hướng đang chạy ở phía máy chủ.
Xem Google nhìn thấy gì
Trong Google Search Console, kiểm tra mục Vấn đề bảo mật và dùng công cụ Kiểm tra URL để xem trang Googlebot thu thập. Bạn cũng có thể tra tên miền trên trang Safe Browsing của Google (Báo cáo minh bạch) để biết có bị gắn cờ không.
Những nơi thường giấu mã chuyển hướng
| Vị trí | Dấu hiệu cần tìm | Cách kiểm tra |
|---|---|---|
| .htaccess (thư mục gốc, thư mục uploads) | Dòng RewriteCond kiểm tra HTTP_REFERER hoặc HTTP_USER_AGENT rồi RewriteRule sang tên miền lạ | Mở file, so với bản mặc định của WordPress; thường có thêm hàng chục dòng lạ |
| Bảng wp_options | Giá trị siteurl hoặc home bị đổi, hoặc có option lạ chứa đoạn mã mã hóa | Vào Cài đặt chung xem địa chỉ, hoặc đọc bảng trong phpMyAdmin |
| Nội dung bài viết và widget | Thẻ script hoặc iframe lạ trong database mà giao diện soạn thảo không hiện | Tìm chuỗi “script” và “eval(” trong wp_posts và wp_options |
| functions.php, header.php của theme | Đoạn mã base64_decode, eval hoặc gọi tới địa chỉ ngoài | So sánh với bản theme gốc tải từ nhà cung cấp |
| wp-content/mu-plugins | File lạ không hiện trong danh sách plugin của quản trị | Xem thư mục qua File Manager hoặc SSH |
| Tài khoản quản trị | Người dùng quản trị bạn không tạo | Mục Người dùng, lọc vai trò Quản trị viên |
Nếu hosting có SSH và WP-CLI, hai lệnh sau giúp phát hiện file lõi và plugin bị sửa so với bản gốc: wp core verify-checksums và wp plugin verify-checksums --all. Chúng chỉ phát hiện file bị sửa, không tìm được file lạ thêm vào, nên vẫn cần xem thủ công các thư mục ở bảng trên.
Việc nên làm theo thứ tự
Sao lưu hiện trạng
Sao lưu cả file và database, kể cả khi website đang bị nhiễm. Bản sao này dùng để truy vết, không dùng để khôi phục.
Đổi mật khẩu
Đổi mật khẩu hosting, SSH/FTP, database và mọi tài khoản quản trị WordPress. Đổi luôn các khóa bảo mật (salt) trong wp-config.php để đăng xuất mọi phiên đang mở.
Xóa tài khoản quản trị lạ và plugin, theme không dùng
Xóa bản đã nhiễm và cài lại từ nguồn gốc. Plugin hoặc theme bẻ khóa là nguồn lây phổ biến.
Làm sạch và tìm lỗ hổng gốc
Gỡ mã độc ở file và database, rồi tìm cách kẻ tấn công vào, thường là plugin lỗi thời hoặc mật khẩu lộ. Nếu chỉ xóa mã chuyển hướng mà không đóng cửa hậu, website sẽ bị nhiễm lại.
Kiểm tra lại như khách
Lặp lại các bước tái hiện lỗi ở trên, rồi gửi yêu cầu xem xét lại trong Search Console nếu Google đã gắn cảnh báo. Thời gian Google gỡ cảnh báo do Google quyết định.
Nếu website còn chạy chức năng đặt hàng hoặc có dữ liệu khách hàng, hãy ghi nhận thời điểm bắt đầu nhiễm để cân nhắc việc thông báo cho khách.
Khi nào nên nhờ người xử lý?
Bạn nên nhờ chuyên gia khi đã đổi mật khẩu mà vẫn bị chuyển hướng, khi website bị nhiễm lại sau khi dọn, hoặc khi không tìm thấy mã ở các vị trí trên. Marketing SEO Top nhận xử lý mã độc WordPress từ 1.500.000đ, chi phí báo trước sau khi kiểm tra hiện trạng. Nếu muốn tự kiểm tra trước, xem thêm dấu hiệu website bị hack, cách quét mã độc WordPress và cách bảo mật website tránh bị hack. Sau khi dọn sạch, gói bảo trì giúp cập nhật và sao lưu định kỳ để hạn chế bị nhiễm lại.
Câu hỏi thường gặp
Tôi xóa file .htaccess lạ thì có hết bị chuyển hướng không?
Có thể hết tạm thời, nhưng nếu cửa hậu còn trong website, mã sẽ được ghi lại. Hãy sao lưu trước khi xóa và tìm nguyên nhân gốc.
Website chỉ chuyển hướng trên điện thoại có phải chắc chắn bị hack?
Không chắc chắn. Một số plugin giao diện di động hoặc quảng cáo cũng chuyển hướng theo thiết bị. Nhưng nếu trang đích là website lạ mà bạn không cài, hãy coi đó là dấu hiệu nhiễm mã.
Có cần báo Google khi website đã sạch?
Nếu Search Console có mục Vấn đề bảo mật hoặc trình duyệt hiện cảnh báo, bạn gửi yêu cầu xem xét lại sau khi làm sạch. Nếu không có cảnh báo thì không cần.
Cần người làm giúp phần này?
Mô tả ngắn nhu cầu hoặc gửi link website. Chúng tôi phản hồi bằng đánh giá cụ thể trước khi báo giá.
