Nếu trang WordPress của bạn bị tấn công và giờ đang hiện spam dược phẩm, chuyển hướng khách sang một nơi khó chịu, hoặc bị Google gắn cờ là lừa đảo, hãy bắt đầu từ đây chứ đừng bắt đầu từ một plugin. Bản năng đầu tiên là cài một trình quét bảo mật rồi bấm nút dọn dẹp. Việc đó gỡ đi triệu chứng nhìn thấy được nhưng để nguyên đường vào, và đó là lý do rất nhiều trang tái nhiễm chỉ sau vài ngày, còn chủ trang thì kết luận rằng WordPress vốn không an toàn.

Không phải vậy. Gần như mọi vụ xâm nhập đều đi vào qua một plugin đã lỗi thời, và gần như mọi lần dọn dẹp thất bại đều xảy ra vì ai đó đã gỡ mã độc mà không gỡ quyền truy cập.

Giờ đầu tiên: Đưa trang xuống hoặc chuyển sang chế độ bảo trì. Đổi mật khẩu bảng điều khiển hosting, mật khẩu cơ sở dữ liệu, toàn bộ mật khẩu quản trị và thông tin đăng nhập FTP hoặc SSH. Chưa khôi phục bản sao lưu, và cũng chưa xóa bất cứ thứ gì. Bạn cần đúng hiện trạng để tìm ra họ đã vào bằng cách nào, còn một lần khôi phục sẽ phá hủy chứng cứ đó và nhiều khả năng dựng lại chính lỗ hổng cũ.


Việc cần làm trong giờ đầu tiên

Ở đây thứ tự rất quan trọng, và những sai lầm phổ biến đều đến từ sự nôn nóng.

Trước hết hãy đưa trang xuống. Một trang bảo trì, hoặc một lệnh chặn tạm thời ở tầng hosting hay CDN, sẽ bảo vệ khách truy cập và ngăn trang tiếp tục phát tán mã độc trong lúc bạn làm việc. Nếu trang đang trả về những lần chuyển hướng độc hại thì mỗi giờ nó còn mở là thêm một lớp tổn hại uy tín.

Tiếp theo hãy xoay vòng mọi thông tin đăng nhập, không chỉ mật khẩu quản trị WordPress. Điều đó bao gồm bảng điều khiển hosting, người dùng cơ sở dữ liệu, khóa FTP và SSH, cùng mọi khóa API được lưu trong tệp cấu hình của trang. Kẻ tấn công thường xuyên tạo thêm một tài khoản quản trị thứ hai hoặc để lại một chiếc khóa, nên đổi đúng một mật khẩu thì chẳng đạt được gì.

Hãy bảo toàn chứng cứ trước khi thay đổi bất cứ thứ gì. Sao chép đầy đủ tệp và cơ sở dữ liệu đúng như hiện trạng, rồi tải về nhật ký truy cập máy chủ của ít nhất ba mươi ngày gần nhất. Chính những nhật ký đó cho bạn biết điểm xâm nhập, và nhiều nhà cung cấp hosting xoay vòng chúng chỉ trong vài ngày.

Sau đó, và chỉ sau đó, mới đến lúc dựng lại xem chuyện gì đã xảy ra.


Trang WordPress của bạn bị hack thế nào và tìm điểm xâm nhập ra sao

Dọn dẹp mà không chẩn đoán chính là lý do tái nhiễm phổ biến đến vậy. Bốn bước kiểm tra sau tìm ra nguyên nhân trong phần lớn trường hợp.

Đối chiếu phiên bản plugin và giao diện với các lỗ hổng đã biết. Plugin lỗi thời là nguyên nhân hàng đầu, bỏ xa mọi nguyên nhân khác. Ghi lại từng plugin, phiên bản của nó, và liệu có bản vá bảo mật nào bạn chưa áp dụng hay không. Hãy đặc biệt chú ý tới những thứ đã hết hạn giấy phép, bởi plugin trả phí ngừng nhận cập nhật khi giấy phép hết hiệu lực trong khi vẫn hiện ra là đã cài và đang bật.

Đọc nhật ký truy cập quanh dấu hiệu bất thường đầu tiên. Thứ bạn tìm là các yêu cầu POST tới những đường dẫn lạ, các yêu cầu tới những tệp lẽ ra không tồn tại, và một đợt hoạt động dồn dập từ một địa chỉ ngay trước khi trang bị thay đổi. Câu trả lời thường nằm ở đây.

Tìm những tệp không thuộc về nơi đó. Các tệp PHP được sửa gần đây trong thư mục tải lên là dấu hiệu rất mạnh, bởi ở đó không có gì được phép thực thi. Những tệp được đặt tên cho trông có vẻ hợp lý, cùng các thay đổi trong tệp cấu hình và tệp điều khiển máy chủ, cũng đáng ngờ y như vậy.

Kiểm tra các tài khoản quản trị mới thêm và các tác vụ định kỳ. Kẻ tấn công thường tạo một người dùng để quay lại, đồng thời đăng ký một tác vụ định kỳ cài lại tải trọng độc hại sau khi bạn dọn xong. Một trang cứ tái nhiễm theo chu kỳ đều đặn thì gần như luôn có một tác vụ định kỳ mà chưa ai chịu tìm.


Vì sao lời khuyên khôi phục bản sao lưu thường thất bại

Đó là gợi ý đầu tiên ai cũng nhận được, và nó đúng khoảng một phần ba số lần.

Khôi phục có tác dụng khi bạn biết ngày bị xâm nhập, có một bản sao lưu từ trước ngày đó, và đã xác định cùng khắc phục lỗ hổng. Thiếu một trong ba, cách nó thất bại có thể đoán trước. Bạn khôi phục bản sao lưu của tuần trước và có thể đang khôi phục một trang vốn đã bị xâm nhập từ hai tuần trước mà chỉ nằm im. Bạn khôi phục mà không vá plugin có lỗ hổng thì bạn vừa dựng lại đúng cái cửa đã khóa bạn ở ngoài.

Còn một vấn đề nữa là khôi phục khiến bạn mất gì. Với một cửa hàng hay một trang hội viên, lùi lại nghĩa là mất mọi đơn hàng, mọi lượt đăng ký và mọi bình luận kể từ bản sao lưu. Điều đó thường không chấp nhận được, và nó đẩy bạn sang hướng dọn sạch trang đang chạy thay vì thay thế trang.

Cách đáng tin cậy là dựng lại chứ không phải khôi phục. Cài lại lõi WordPress hoàn toàn mới, cài bản sạch của từng plugin và giao diện lấy từ nguồn chính thức chứ không lấy từ trang đã bị xâm nhập, và chỉ mang sang thư mục tải lên cùng cơ sở dữ liệu, cả hai đều được kiểm tra trước. Cách đó bảo đảm phần mã sẽ chạy là sạch, điều mà việc dọn từng tệp không bao giờ đạt được trọn vẹn.


Dọn sạch cơ sở dữ liệu

Cơ sở dữ liệu là nơi những lần dọn dẹp dở dang bỏ sót thứ gì đó, vì các trình quét tập trung vào tệp.

Nội dung bị chèn thường xuất hiện trong nội dung bài viết dưới dạng liên kết ẩn hoặc khung nhúng, trong bảng tùy chọn nơi các đoạn mã chuyển hướng được lưu, và trong dữ liệu mô tả của người dùng. Hãy tìm thẻ mã, các khối được mã hóa và những tên miền lạ trên khắp bảng nội dung và bảng tùy chọn.

Kiểm tra bảng người dùng bằng tay. Xem từng tài khoản có quyền quản trị, xác nhận bạn nhận ra từng cái một, rồi đối chiếu ngày đăng ký với hồ sơ của chính bạn.

Hãy nhìn cả các tác vụ định kỳ, thứ mà trong WordPress nằm trong bảng tùy chọn. Một mục trỏ tới một hàm bạn không nhận ra chính là cách một trang tự tái nhiễm theo lịch rất lâu sau khi các tệp đã được dọn sạch.

Đặc biệt cẩn trọng với bất cứ thứ gì được mã hóa. Kẻ tấn công cố tình làm rối tải trọng để một lần tìm kiếm theo chuỗi hiển nhiên sẽ bỏ sót nó, nên hãy giải mã những gì đáng ngờ thay vì mặc định rằng đó là một plugin hợp lệ đang làm điều gì đó thông minh.


Gỡ cảnh báo và lấy lại thứ hạng tìm kiếm

Dọn sạch trang chưa phải là kết thúc, bởi các cảnh báo vẫn còn cho tới khi bạn yêu cầu xem xét lại.

Nếu Google đã gắn cờ trang, báo cáo vấn đề bảo mật trong Search Console cho bạn biết họ phát hiện điều gì và cho phép yêu cầu xem xét sau khi bạn đã khắc phục. Chỉ yêu cầu xem xét khi trang thực sự sạch, vì một lần xét duyệt thất bại sẽ kéo dài quy trình.

Kiểm tra xem tên miền có nằm trong các danh sách chặn mà trình duyệt và nhà cung cấp email sử dụng hay không. Sạch thôi là chưa đủ, bởi mỗi bên duy trì danh sách riêng và quy trình gỡ riêng.

Rồi hãy nhìn vào thiệt hại. Khả năng hiển thị trên tìm kiếm thường hồi phục sau khi cảnh báo được gỡ, nhưng một trang đã phục vụ các trang spam suốt nhiều tuần có thể đã bị lập chỉ mục những trang đó. Hãy tìm các URL được lập chỉ mục vốn chưa bao giờ là của bạn, gỡ chúng đi, và xác nhận các phiên bản sạch đang được thu thập. Hướng dẫn kiểm tra bảo mật website của chúng tôi trình bày các bước xác minh chi tiết hơn.


Chi phí phục hồi chuyên nghiệp

Các mức giá dưới đây phản ánh thị trường Anh và thay đổi tùy theo vụ xâm nhập đã trôi qua bao lâu mà không ai nhận ra.

Một lần dọn dẹp đơn giản trên trang nhỏ được phát hiện sớm, với nguyên nhân đã rõ, thường tốn từ 400 đến 1.200 bảng và mất một đến hai ngày. Đây là trường hợp phổ biến khi có người phát hiện trong vòng một tuần.

Một quy trình ứng phó sự cố đầy đủ, gồm phân tích nhật ký để xác định điểm xâm nhập và dòng thời gian, dựng lại sạch, kiểm tra cơ sở dữ liệu, xoay vòng thông tin đăng nhập, gia cố và gỡ khỏi danh sách chặn, thường tốn từ 1.500 đến 5.000 bảng. Đây là mức mà một cửa hàng hay một trang nắm giữ dữ liệu khách hàng nên chuẩn bị, bởi bạn còn phải xác định xem dữ liệu có bị truy cập hay không.

Những trang bị xâm nhập suốt nhiều tháng, hoặc chứa nhiều website trên cùng một tài khoản, tốn nhiều hơn, bởi lây nhiễm chéo giữa các trang trên hosting dùng chung là chuyện thường gặp và từng trang đều phải được kiểm tra.

Nếu dữ liệu cá nhân có thể đã bị truy cập, có những nghĩa vụ vượt ra ngoài phần dọn dẹp kỹ thuật. GDPR của Anh yêu cầu thông báo cho cơ quan quản lý trong vòng 72 giờ kể từ khi biết về một vi phạm thuộc diện phải báo, và chiếc đồng hồ đó bắt đầu chạy từ lúc biết chứ không phải lúc dọn xong. Hãy xin tư vấn sớm thay vì sau khi đã thu dọn xong xuôi. Bài viết về tuân thủ GDPR ở khía cạnh kỹ thuật của chúng tôi bàn về phần kỹ thuật của việc đó.


Bảo đảm chuyện đó không lặp lại

Phục hồi mà không gia cố thì chỉ là quay lại vạch xuất phát.

Kỷ luật cập nhật là toàn bộ cuộc chơi. Đại đa số các vụ xâm nhập khai thác một lỗ hổng đã có bản vá sẵn, nên cách khắc phục là một quy trình áp dụng các bản vá bảo mật kịp thời cùng chính sách loại bỏ mọi thứ không còn được duy trì. Plugin trả phí hết hạn giấy phép thì phải gia hạn hoặc thay thế, không bao giờ được để nguyên tại chỗ.

Hãy giảm những gì có thể chạy được. Không thứ gì trong thư mục tải lên được phép chạy dưới dạng PHP, chức năng sửa tệp từ giao diện quản trị nên bị tắt, và tài khoản quản trị nên ít và mang tên từng người cụ thể.

Thêm xác thực đa yếu tố cho mọi tài khoản quản trị và giới hạn tần suất ở điểm đăng nhập. Phần lớn các cuộc tấn công nhắm vào thông tin đăng nhập đều tự động, và chúng hết khả thi ngay khi có yếu tố thứ hai.

Cuối cùng, hãy sao lưu cho đúng và thử khôi phục thật. Một bản sao lưu bạn chưa từng khôi phục chỉ là một giả thuyết. Hãy giữ nhiều thế hệ, bởi bản mới nhất có thể đã chứa sẵn vụ xâm nhập. Danh sách kiểm tra gia cố bảo mật WordPress của chúng tôi trình bày toàn bộ cấu hình, còn hướng dẫn kiểm tra hiệu năng WordPress bàn về kỷ luật quản lý plugin, thứ giúp thu hẹp bề mặt tấn công như một tác dụng phụ.


Hãy để trang được dọn cho đúng cách

Mecanik nhận kiểm tra bảo mật WordPress và công việc phục hồi sự cố: xác định vụ xâm nhập đã xảy ra thế nào, dựng lại sạch thay vì vá đè lên, kiểm tra cơ sở dữ liệu, và gia cố trang để chính con đường đó khép lại sau lưng bạn.

Chúng tôi làm việc từ nhật ký máy chủ chứ không từ kết quả của một trình quét, bởi trình quét chỉ nói cho bạn biết những gì nó nhận ra, còn nhật ký nói cho bạn biết điều gì thực sự đã xảy ra. Với những trang xử lý dữ liệu khách hàng, chúng tôi cũng nói thẳng liệu bạn có vẻ đang đối mặt với một vi phạm phải báo cáo hay không, thay vì để bạn tự phát hiện sau này. Bảo trì thường xuyên có sẵn qua dịch vụ phát triển WordPress của chúng tôi, và thường rẻ hơn một sự cố thứ hai.

Nếu trang của bạn đang bị xâm nhập ngay lúc này, hãy đưa nó xuống, xoay vòng thông tin đăng nhập, giữ lại nhật ký, và liên hệ với chúng tôi.


Bài viết liên quan: Bảo mật API: Cách bảo vệ một API công khai năm 2026 , Giải thích OWASP Top 10 cho chủ doanh nghiệp , Danh sách kiểm tra audit bảo mật máy chủ: kiểm gì , Hướng dẫn kiểm tra bảo mật website cho doanh nghiệp Anh năm .


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

Tôi nên làm gì đầu tiên nếu trang WordPress bị hack? Hãy đưa trang xuống, xoay vòng mọi thông tin đăng nhập gồm hosting, cơ sở dữ liệu, FTP và tất cả tài khoản quản trị, rồi giữ lại một bản sao của tệp, cơ sở dữ liệu và nhật ký máy chủ hiện tại. Chưa khôi phục bản sao lưu hay xóa tệp, vì việc đó phá hủy chứng cứ cần để tìm điểm xâm nhập.

Vì sao trang WordPress của tôi cứ bị tái nhiễm? Gần như luôn là vì lần dọn dẹp đã gỡ mã độc nhưng không gỡ quyền truy cập. Hãy tìm các tài khoản quản trị bạn không nhận ra, backdoor trong thư mục tải lên, và các tác vụ định kỳ trong bảng tùy chọn có nhiệm vụ cài lại tải trọng. Tái nhiễm theo chu kỳ đều đặn thường là dấu hiệu của một tác vụ định kỳ.

Tôi chỉ cần khôi phục bản sao lưu là sửa được trang bị hack phải không? Chỉ khi bạn biết vụ xâm nhập xảy ra lúc nào, có bản sao lưu từ trước đó, và đã khắc phục lỗ hổng gốc. Thiếu một trong ba, bạn có nguy cơ khôi phục một trang vốn đã bị xâm nhập hoặc mở lại chính lỗ hổng cũ. Dựng lại sạch với lõi, plugin và giao diện mới thì đáng tin cậy hơn.

Gỡ mã độc WordPress tốn bao nhiêu tiền? Một lần dọn dẹp đơn giản trên trang nhỏ được phát hiện sớm thường tốn từ 400 đến 1.200 bảng. Một quy trình ứng phó sự cố đầy đủ với phân tích nhật ký, dựng lại sạch, kiểm tra cơ sở dữ liệu và gia cố thường tốn từ 1.500 đến 5.000 bảng, còn các vụ kéo dài hoặc nhiều trang thì tốn hơn.

Làm sao để Google gỡ cảnh báo cho trang của tôi? Hãy dọn sạch trang hoàn toàn, sau đó yêu cầu xem xét qua báo cáo vấn đề bảo mật trong Search Console. Chỉ yêu cầu khi trang thực sự sạch, vì một lần xét duyệt thất bại sẽ kéo dài quy trình. Hãy kiểm tra riêng các danh sách chặn của trình duyệt và email, mỗi bên có quy trình gỡ riêng.