127.0.0.1 SỔ TAY VẬN HÀNH MÁY CHỦ & CỨU HỘ WORDPRESS THỰC CHIẾN
MINH BẠCH

WordPress Tự Chuyển Hướng Sang Trang Cá Cược, Web Lạ: Cách Bắt Tận Tay Kẻ Giật Dây

Khách bấm vào web WordPress lại bị nhảy sang trang cá cược hoặc sàn TMĐT lạ? Xem cách dùng DevTools bắt đúng thủ phạm redirect và xử lý tận gốc.

Bảo mật & Sao lưu // localhost.vn
Mục lục bài viết (8 mục)
ĐÚC KẾT THỰC CHIẾN

Mã độc chuyển hướng rất biết 'diễn kịch': thấy Admin đăng nhập thì ngoan ngoãn đứng im, thấy khách vãng lai vào từ Google trên điện thoại mới tung chiêu nhảy trang. Hãy tái hiện đúng điều kiện của khách và khoanh vùng từ trình duyệt, WordPress đến .htaccess trước khi xóa file.

Có một tình huống khiến không ít chủ website rơi vào cảnh “ông nói gà, bà nói vịt” với khách hàng: bạn ngồi máy tính ở văn phòng mở web mình ra xem thì giao diện vẫn đẹp lung linh, bấm chục trang chẳng thấy lỗi gì; nhưng khách hàng lại chụp màn hình gửi qua Zalo tố rằng cứ bấm vào web bạn từ Google trên điện thoại là bị đá văng sang… trang cá cược bóng đá, sòng bài trực tuyến hoặc một sàn thương mại điện tử tận đẩu tận đâu. Nếu bạn chỉ ngồi bấm F5 liên tục trong chính trình duyệt đang đăng nhập sẵn tài khoản Administrator của mình, bạn sẽ không bao giờ bắt được con mã độc tinh ranh này! Việc đầu tiên cần làm là tái hiện chính xác môi trường của khách, rồi lần theo dấu vết xem tầng kỹ thuật nào đang ra lệnh chuyển hướng (Redirect).

Bài viết này hướng dẫn bạn cách khoanh vùng, truy vết và chuẩn bị dữ kiện xử lý khi website WordPress gặp hiện tượng tự động chuyển hướng sang trang lạ. Lưu ý nguyên tắc đạo đức và pháp lý: bạn chỉ nên thực hiện các bước kiểm tra chuyên sâu này trên chính website thuộc quyền sở hữu của mình hoặc đã được chủ sở hữu ủy quyền hợp pháp.

Sơ đồ truy vết chuỗi chuyển hướng bất thường từ trình duyệt người dùng qua mã nguồn WordPress và máy chủ
Lần theo dấu vết lệnh chuyển hướng (Redirect) từ phản hồi HTTP trên trình duyệt về tới mã nguồn WordPress, bảng wp_options và cấu hình máy chủ.

Khoan vội tắt bừa Plugin: Bạn cần làm gì ngay khi nhận tin báo?

Trước khi lao vào wp-admin xóa plugin hay sửa code, hãy đóng vai một điều tra viên thu thập đủ các thông tin từ phía người gặp lỗi: họ định mở chính xác đường dẫn URL nào, vào lúc mấy giờ (kèm múi giờ để lát nữa tra access.log), dùng điện thoại hay máy tính, mạng Wi-Fi hay 4G, và quan trọng nhất là họ đi vào web từ đâu? Họ gõ trực tiếp tên miền lên thanh địa chỉ, bấm từ kết quả tìm kiếm Google, hay bấm từ link chạy quảng cáo Facebook/Zalo? Hiện tượng nhảy trang chỉ xảy ra đúng một lần đầu tiên rồi bấm quay lại thì hết (nhờ mã độc đã gắn Cookie đánh dấu), hay lần nào vào cũng bị đá sang trang lạ? Chính những chi tiết nhỏ này quyết định 90% khả năng bạn có tóm được thủ phạm hay không.

Tuyệt đối đừng nhờ khách hàng bấm bỏ qua màn hình cảnh báo đỏ của trình duyệt hoặc điền thử thông tin vào trang đích lạ kia. Nếu trang đích là ổ lừa đảo (Phishing) hoặc phát tán phần mềm độc hại đang gây nguy hiểm trực tiếp cho người truy cập, bạn nên phối hợp ngay với kỹ thuật viên hoặc nhà cung cấp hosting để bật chế độ bảo trì tạm thời phần bị ảnh hưởng trong lúc mổ xẻ. Nhớ thống nhất rõ ai là người giữ quyền bật/tắt chế độ bảo trì này.

Và trước khi sửa bất kỳ dòng code nào, hãy tạo ngay một bản sao lưu (Snapshot) toàn bộ mã nguồn, cơ sở dữ liệu và file cấu hình cất vào nơi an toàn, đồng thời ghi chú rõ ràng: “Bản chụp hiện trường lúc đang dính lỗi Redirect — chỉ dùng để đối chiếu và cứu dữ liệu, cấm bung ngược lại làm bản sạch”. Đây cũng chính là bước đầu tiên luôn được nhấn mạnh trong tài liệu hướng dẫn xử lý website bị hack của WordPress.org.

Bước 1: Lập ma trận điều kiện kích hoạt lệnh chuyển hướng

Các dòng Malware chuyển hướng hiện nay rất hiếm khi chuyển hướng tất cả mọi người một cách lộ liễu. Chúng thường dùng câu lệnh điều kiện kiểm tra User-Agent (chỉ nhắm vào điện thoại), HTTP Referer (chỉ kích hoạt khi khách bấm từ Google tìm kiếm sang), trạng thái Cookie (bỏ qua nếu thấy wordpress_logged_in_*) hoặc địa chỉ IP. Bảng dưới đây giúp bạn khoanh vùng nhanh điều kiện kích hoạt:

Kịch bản truy cập Dữ kiện cần ghi chép lại Manh mối kỹ thuật rút ra được
Khách vãng lai (Chưa đăng nhập) vs Admin URL truy cập, trình duyệt ẩn danh, khác biệt giữa lần mở đầu tiên và lần bấm tải lại trang Phát hiện mã độc có cơ chế né tránh phiên đăng nhập Admin và cài Cookie ẩn mình sau lần nhảy trang đầu tiên
Điện thoại (Mobile 4G) vs Máy tính (Desktop) Loại thiết bị, hệ điều hành (iOS/Android), nhà mạng di động hay Wi-Fi văn phòng Nhận diện điều kiện lọc theo User-Agent di động hoặc kích thước màn hình trên trình duyệt
Vào từ Google Search vs Gõ trực tiếp URL Từ khóa tìm kiếm, trang xuất phát (Referer) và đường dẫn đích bị nhảy tới Bắt bài các đoạn mã kiểm tra biến $_SERVER['HTTP_REFERER'] chứa google.com
Chỉ bị ở 1 bài viết lẻ vs Bị trên toàn bộ website Danh sách 3–5 đường dẫn URL mẫu gặp sự cố và các URL vẫn bình thường Phân biệt mã độc chèn cục bộ trong nội dung một vài bài đăng (wp_posts) hay nằm ở file dùng chung toàn cục (wp-config.php, functions.php, .htaccess)

Bạn không cần phải ngồi thử hàng trăm lượt làm gì cho mệt. Chỉ cần lấy đúng 2–3 kịch bản mà khách hàng đã phản ánh, mở cửa sổ ẩn danh (Incognito) hoặc dùng một chiếc điện thoại chưa từng đăng nhập quản trị để kiểm chứng, và ghi nhận cả những lần truy cập bình thường. Lưu ý rằng chế độ ẩn danh giúp xóa sạch phiên đăng nhập và Cookie cũ, nhưng vẫn mang địa chỉ IP và User-Agent của máy tính bạn đang ngồi.

Một mẹo phân loại nhanh: nếu chỉ duy nhất một vị khách kêu bị nhảy sang trang quảng cáo lạ trên máy của họ, và mở trang báo lớn nào họ cũng bị y hệt, thì thủ phạm nhiều khả năng là Adware hoặc tiện ích mở rộng (Extension) rác cài trên trình duyệt của vị khách đó. Ngược lại, nếu nhiều khách hàng ở các mạng khác nhau cùng báo lỗi trên đường dẫn của bạn, hãy lập tức tập trung khám xét phía máy chủ website.

Bước 2: Dùng Chrome DevTools phân biệt Redirect từ Server hay từ JavaScript

Khi đã biết cách tái hiện lỗi, người có chút kinh nghiệm kỹ thuật có thể mở công cụ Chrome DevTools (F12), chuyển sang tab Network, đánh dấu tích vào ô Preserve log (Giữ lại nhật ký khi chuyển trang) rồi mới truy cập vào URL đang nghi vấn. Lưu ý an toàn: nếu trình duyệt đã bật màn hình đỏ cảnh báo trang web nguy hiểm hoặc lừa đảo, hãy dừng lại ngay ở màn hình đó và để kỹ thuật viên chuyên nghiệp dùng môi trường cách ly (Sandbox/curl) thu thập dữ liệu.

Trong bảng Network, bạn hãy cuộn lên dòng request đầu tiên (loại document) để xem chuyện gì diễn ra:

  • Trường hợp 1 — Chuyển hướng ngay từ phản hồi máy chủ (HTTP Redirect): Request đầu tiên nhận về mã trạng thái 301, 302, 307 hoặc 308 kèm theo trường Location trong phần Response Headers trỏ thẳng sang tên miền lạ. Điều này chứng tỏ lệnh bẻ lái diễn ra ở tầng cấu hình máy chủ (.htaccess, Nginx config), tầng CDN/Proxy, hoặc hàm header('Location: ...') / wp_redirect() trong PHP trước khi HTML kịp xuất ra.
  • Trường hợp 2 — Trang vẫn trả về HTTP 200 rồi mới bị JavaScript lôi đi (Client-side Redirect): Request đầu tiên vẫn trả về mã 200 OK và tải HTML như thường, nhưng chỉ một tích tắc sau, một file .js hoặc đoạn thẻ <script> / <meta http-equiv="refresh"> mới kích hoạt lệnh window.location.href đưa khách sang trang cá cược. Lúc này, hãy nhìn vào cột Initiator trong tab Network để xem chính xác dòng code hay file script nào đã phát lệnh gọi tên miền lạ đó. Bạn có thể tham khảo thêm tài liệu chính thức về Network panel của Chrome DevTools để nắm rõ cách đọc Initiator, Header và Timing.

Khi xuất file nhật ký mạng (HAR file) để gửi cho kỹ thuật viên phân tích, hãy hết sức cẩn trọng: file HAR lưu lại toàn bộ Cookie phiên đăng nhập, Authorization Token và dữ liệu bạn vừa gõ vào form. Tuyệt đối không đăng file HAR lên các diễn đàn hay nhóm Facebook công khai để hỏi bệnh! Ngoài ra, đừng thấy một tên miền lạ trong tab Network là vội kết luận ngay nó là virus — rất nhiều thư viện font chữ, trình theo dõi quảng cáo hoặc widget chat hợp lệ cũng gọi về máy chủ bên thứ ba.

Bước 3: Rà soát đúng 4 tầng có khả năng cài cắm lệnh Redirect

Trước khi nghĩ đến những kịch bản phức tạp, hãy kiểm tra những thay đổi gần nhất trên website: tuần vừa rồi có ai cài thêm plugin quản lý link rút gọn/redirect, chỉnh sửa cấu hình tên miền trên Cloudflare, gắn mã quảng cáo kiếm tiền (Ad network) hay chèn thêm đoạn script theo dõi nào vào phần Header & Footer không? Hãy hỏi kỹ các thành viên trong nhóm trước khi xóa. Sau đó, tiến hành rà soát theo 4 tầng từ ngoài vào trong:

Tầng kỹ thuật cần rà soát Những “ổ phục kích” thường bị cài lệnh chuyển hướng Phương pháp kiểm tra và xử lý chuẩn
Ứng dụng WordPress & Database File index.php, wp-config.php, functions.php của theme, thư mục mu-plugins, hoặc các đoạn <script> chèn hàng loạt vào bảng wp_posts và wp_options (đặc biệt là siteurl/home) Đối chiếu mã băm (Checksum) với bản gốc tin cậy, tìm kiếm chuỗi lạ trong database và kiểm tra lịch sử sửa đổi file
Cấu hình Web Server (Máy chủ) File .htaccess (trên Apache/LiteSpeed) bị chèn các dòng RewriteCond / RewriteRule đẩy xuống dưới cùng với hàng trăm dấu cách trắng để giấu mắt, hoặc file cấu hình Virtual Host của Nginx Mở file kiểm tra toàn bộ chiều ngang lẫn chiều dọc; phối hợp với quản trị viên máy chủ rà soát cấu hình đang có hiệu lực
Tầng Proxy / DNS / CDN Page Rules, Redirect Rules, Transform Rules hoặc Cloudflare Workers bị kẻ xấu (sau khi lộ mật khẩu tài khoản CDN) cài lén lệnh bẻ lái Đăng nhập tài khoản quản trị DNS/CDN chính chủ để rà soát toàn bộ danh sách Rule và Audit Log của tên miền
Tài nguyên phía Trình duyệt Các file .js hợp lệ trong theme/plugin bị nối đuôi (append) thêm một đoạn mã rối (obfuscated code) ở dòng cuối cùng, hoặc script nhúng từ một tên miền bên ngoài đã bị chiếm quyền Đối chiếu chính xác file khởi tạo lệnh điều hướng trong cột Initiator của DevTools, không đoán mò chỉ dựa vào tên file

Một lời khuyên chân thành từ thực tế cứu hộ: đừng bao giờ nghe theo các mẹo vặt trên mạng mà xóa phăng file .htaccess đi khi chưa đọc nội dung bên trong! File .htaccess không chỉ chứa cấu hình đường dẫn tĩnh (Permalinks) của WordPress mà còn có thể đang giữ các quy tắc chuyển hướng 301 phục vụ SEO suốt nhiều năm hoặc các lệnh bảo vệ thư mục quan trọng. Hơn nữa, nếu máy chủ của bạn chạy thuần Nginx, file .htaccess vốn dĩ chẳng có tác dụng gì — bạn có xóa hay sửa nó cả ngày thì lỗi chuyển hướng vẫn trơ trơ.

Bước 4: Bóc tách từng phần có kiểm soát và luôn giữ đường hoàn nguyên (Rollback)

Khi đã khoanh vùng được một đoạn code, một file cấu hình hay một plugin đáng ngờ, hãy lưu giữ nguyên trạng bản hiện tại rồi mới thử vô hiệu hóa hoặc khôi phục sạch đúng thành phần đó. Nguyên tắc vàng là: mỗi lần chỉ thay đổi một biến số duy nhất, rồi lập tức kiểm tra lại kịch bản lỗi ban đầu. Nếu bạn hoảng quá vào tắt cái rụp 15 cái plugin cùng một lúc, có thể hiện tượng nhảy trang sẽ biến mất thật đấy, nhưng bạn sẽ chẳng biết chính xác cái nào là thủ phạm, đồng thời làm sập luôn cả giỏ hàng lẫn giao diện của trang web.

Và hãy nhớ: nếu bạn phát hiện ra một đoạn code lạ được chèn vào đầu file functions.php hay index.php, việc bạn xóa dòng code đó đi mới chỉ là cắt cái ngọn. Câu hỏi lớn hơn nhiều là: “Bằng con đường nào mà kẻ tấn công có quyền ghi (Write) vào file đó?” Lúc này, phạm vi xử lý bắt buộc phải mở rộng sang việc quét tìm Backdoor/Webshell ẩn náu trong các thư mục khác, kiểm tra danh sách tài khoản Administrator, rà soát các tác vụ tự động (wp-cron và Cronjob hệ thống) cũng như lỗ hổng của các plugin đang cài. Nếu không nhổ tận gốc Backdoor, chỉ vài tiếng hoặc vài ngày sau đoạn code chuyển hướng sẽ tự động được ghi đè trở lại y như cũ.

Khi áp dụng bản sửa lỗi lên website đang chạy thật, hãy chọn khung giờ vắng khách và bố trí người theo dõi sát sao. Nếu chẳng may thao tác sửa làm phát sinh lỗi phụ, bạn chỉ cần hoàn nguyên (Rollback) đúng file hoặc cấu hình vừa chạm vào — tuyệt đối không bung đè toàn bộ cơ sở dữ liệu từ bản backup cũ nếu trong khoảng thời gian đó cửa hàng đã phát sinh đơn đặt hàng hoặc khách hàng mới.

Checklist kiểm chứng trước khi thở phào tuyên bố “Đã hết lỗi chuyển hướng”

  • Tái kiểm tra đúng kịch bản lỗi: Dùng thiết bị di động (mạng 4G, trình duyệt ẩn danh, chưa đăng nhập) bấm vào từ kết quả tìm kiếm Google và mở lại toàn bộ các URL mẫu từng bị nhảy trang để xác nhận lỗi đã biến mất.
  • Đảm bảo các chuyển hướng hợp lệ vẫn sống tốt: Kiểm tra lại xem việc tự động chuyển từ http:// sang https://, từ www sang non-www (hoặc ngược lại) và các link chuyển hướng 301 phục vụ chiến dịch marketing có bị xóa nhầm không.
  • Kiểm tra luồng nghiệp vụ chính: Bấm thử menu điều hướng, thanh tìm kiếm, biểu mẫu đăng ký tư vấn, đăng nhập tài khoản và luồng thêm vào giỏ hàng – thanh toán.
  • Giám sát chống tái nhiễm: Kiểm tra lại các file từng bị can thiệp (.htaccess, index.php, wp-config.php, wp_options) sau vài giờ và vài ngày để chắc chắn không còn tiến trình ngầm nào tự động chèn lại mã độc.
  • Lưu hồ sơ kỹ thuật: Ghi chép rõ những thành phần đã kiểm tra, những gì đã làm sạch, thời điểm hoàn tất và những phần nào chưa thể can thiệp do giới hạn quyền truy cập máy chủ.

Cần phân biệt rạch ròi: việc không còn thấy nhảy trang ở các kịch bản vừa thử chứng tỏ bạn đã cắt được triệu chứng chuyển hướng, nhưng để kết luận toàn bộ máy chủ đã sạch bóng mã độc thì phải dựa trên một đợt rà soát toàn diện mã nguồn và dữ liệu. Ngoài ra, nếu trước đó trình duyệt Chrome hoặc Google Search Console đã kịp gắn nhãn cảnh báo đỏ cho tên miền của bạn, bạn sẽ cần thực hiện thêm bước gửi yêu cầu xem xét lại (Request a review) sau khi đã dọn sạch ổ bệnh.

Khi nào bạn nên dừng tự mò mẫm và gọi đội kỹ thuật chuyên nghiệp?

Hãy dừng ngay việc tự xóa file nếu bạn rơi vào một trong ba trường hợp sau: (1) Bạn chưa có trong tay một bản backup hoàn chỉnh có thể khôi phục được, (2) Bạn nhìn vào đống code PHP hay cấu hình máy chủ mà không phân biệt được đâu là hàm hệ thống hợp lệ, đâu là mã độc đã bị làm rối (Obfuscated), hoặc (3) Bạn cứ xóa dòng code lạ xong thì đúng 15 phút sau nó lại tự động chui ra nguyên vẹn. Bạn có thể tham khảo chi tiết quy trình quét và xử lý mã độc website tại localhost.vn để nắm rõ cách tụi mình khoanh vùng, nhổ gốc Backdoor và bàn giao nghiệm thu.

Cần xử lý dứt điểm lỗi website tự nhảy sang trang lạ? Gửi ngay URL và biểu hiện lỗi qua Zalo 0985840593, nhắn tin SMS hoặc gửi email về hello@localhost.vn. Ở bước đầu tiên này, bạn chỉ cần cho tụi mình biết đường dẫn bị lỗi, thiết bị gặp sự cố, thời điểm phát hiện và những thao tác bạn đã thử làm — tuyệt đối không gửi mật khẩu hay mã xác thực 2FA. Mọi phạm vi công việc và chi phí sẽ được báo rõ ràng trước khi bắt tay vào xử lý.

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

Tôi đổi lại toàn bộ mật khẩu Admin WordPress và Hosting thì web có tự hết bị chuyển hướng không?

Đổi mật khẩu là bước bắt buộc để khóa cửa không cho kẻ xấu tiếp tục đi vào bằng chìa khóa cũ, nhưng nó không thể tự động xóa bỏ đoạn mã chuyển hướng hay con Webshell mà hacker đã cài sẵn bên trong mã nguồn hoặc cơ sở dữ liệu trước đó. Bạn vừa phải đổi mật khẩu, vừa phải lùng sục và bóc gỡ toàn bộ phần mã độc đã bị chèn vào hệ thống.

Tôi dán link vào các trang web quét virus online đều báo an toàn (Clean), vậy có phải khách hàng nhìn nhầm không?

Đừng vội bác bỏ lời phàn nàn của khách khi họ có ảnh chụp màn hình và thời điểm rõ ràng! Như đã phân tích ở trên, hầu hết các trình quét online miễn phí chỉ truy cập trang web bằng User-Agent máy chủ thông thường và không đi qua luồng tìm kiếm Google trên điện thoại, nên mã độc dễ dàng nhận diện và “giả chết” để qua mặt máy quét. Hãy coi kết quả quét online chỉ là một dữ kiện tham khảo bề nổi, và ưu tiên kiểm tra trực tiếp từ bên trong mã nguồn.

Tài liệu kỹ thuật được đối chiếu ngày 06/10/2026. Tên gọi các mục cấu hình có thể thay đổi tùy theo loại máy chủ, bảng điều khiển hosting và plugin bạn đang sử dụng; bài viết đóng vai trò hướng dẫn chẩn đoán kỹ thuật, không phải kết luận rà soát sẵn cho website của bạn.

CẦN KỸ SƯ HỖ TRỢ TRỰC TIẾP? Đang làm theo hướng dẫn nhưng vướng lỗi hệ thống hoặc sợ đụng chạm dữ liệu đang chạy?

Gửi địa chỉ URL qua Zalo để kỹ thuật viên localhost.vn kiểm tra sơ bộ miễn phí trước khi quyết định can thiệp.

Xem bảng dịch vụ
Góc thực chiến localhost.vn

Mọi hướng dẫn đều dựa trên số liệu đo đạc, log thực tế và nguyên tắc "luôn có đường lùi (Snapshot/Backup) trước khi gõ lệnh".

Nguyên tắc biên tập & Minh bạch ↗