Cách xử lý trang web WordPress bị hack

Trong bài viết này, chúng tôi sẽ thảo luận về các loại tấn công WordPress phổ biến nhất, cách nhận biết chúng và các phương pháp khác nhau để khắc phục. Nếu bạn gặp phải vấn đề như vậy, chúng tôi khuyến nghị mạnh mẽ liên hệ với một nhà phát triển web chuyên nghiệp để được hỗ trợ thêm. Để biết thêm hướng dẫn về cách cải thiện bảo mật cho tài khoản hosting của bạn, vui lòng tham khảo hướng dẫn này.

QUAN TRỌNG: Trước khi thực hiện bất kỳ thay đổi nào, hãy tạo một bản sao lưu đầy đủ cho website của bạn. 

LƯU Ý: Để giảm nguy cơ bị tấn công WordPress trong tương lai, hãy thường xuyên quét tài khoản hosting của bạn bằng công cụ diệt virus, xóa mọi tệp độc hại hoặc đáng ngờ, và luôn cập nhật tất cả plugin và giao diện website của bạn lên phiên bản mới nhất.

  1. Thiếu các tệp mặc định

  2. Cách thay thế các tệp WordPress bị thiếu

  3. Cách thay thế tất cả các tệp mặc định của WordPress

  4. Thiếu tệp giao diện hoặc plugin

  5. Chuyển hướng độc hại

Thiếu các tệp mặc định

Mặc dù có nhiều vấn đề khác nhau có thể dẫn đến việc thiếu hoặc thay đổi các tệp mặc định, nguyên nhân phổ biến nhất là do phần mềm độc hại được chèn vào cài đặt WordPress của bạn. May mắn thay, các công cụ diệt virus trên máy chủ Web và Hosting của chúng tôi có thể tự động phát hiện và cách ly các tệp bị xâm phạm.

Nếu các tệp lõi WordPress của bạn bị nhiễm, bạn có thể gặp phải các triệu chứng như:

  • Một trang trắng;

  • Lỗi 500 Internal Server Error;

  • Lỗi “Trang web này đang gặp sự cố kỹ thuật” (được giới thiệu từ WordPress 5.2.2);

  • Hoặc các lỗi tương tự khác.

Để khắc phục vấn đề này, chỉ cần làm theo các bước dưới đây.

Kiểm tra tệp error_log của website

Để xác định nguyên nhân gây ra sự cố trên trang của bạn, hãy kiểm tra tệp error_log. Tệp này ghi lại mọi lỗi nghiêm trọng mà website của bạn gặp phải.

Bạn có thể tìm thấy nó trong tài khoản cPanel > menu “File Manager” > thư mục gốc của cài đặt WordPress. 

Sau khi truy cập vào thư mục gốc của tên miền, hãy tìm tệp error_log. Nếu có, hãy làm theo các bước sau:

  1. Nhấp chuột phải vào tệp, sau đó chọn Xem:


  2. Bên trong log, bạn có thể thấy lỗi như: “Không tìm thấy tệp hoặc thư mục trong…”, tiếp theo là đường dẫn của tệp bị thiếu. Điều này cho thấy một tệp cần thiết đang bị thiếu và ngăn website hoạt động đúng cách.

    Ví dụ:

    /home/cPuser/public_html/wp-settings.php

  3. Để khôi phục tệp bị thiếu, hãy cuộn xuống phần "Cách thay thế các tệp bị thiếu" trong hướng dẫn này.

Bật tùy chọn PHP display_errors

Nếu tệp error_log không có trong thư mục gốc website của bạn, bạn có thể bật tùy chọn display_errors của PHP trong tài khoản cPanel. Thiết lập này cho phép các thông báo lỗi xuất hiện trực tiếp trên website, giúp bạn dễ dàng xác định vấn đề hơn.

Quan trọng: Vì lý do bảo mật, hãy đảm bảo tắt display_errors sau khi hoàn tất việc khắc phục sự cố.

Bạn có thể bật tùy chọn PHP theo các cách sau:

  • Qua php.ini 

Ngoài menu “PHP Tweaks” của cPanel, bạn cũng có thể điều chỉnh một số thiết lập cho website trực tiếp thông qua tệp php.ini bằng cách thêm/chỉnh sửa các dòng tương ứng trong đó. 

Để bật tùy chọn display_errors, bạn cần thêm dòng sau vào tệp:

display_errors=1

Bạn có thể tạo mới một tệp php.ini trong thư mục gốc website và thêm dòng này vào đó hoặc chỉnh sửa tệp do hệ thống tạo ra bằng cách làm theo các bước dưới đây.

  1. Đăng nhập vào tài khoản cPanel và vào menu “File Manager”.

  2. Đảm bảo tùy chọn “Show Hidden Files (dotfiles)” đã được bật trong phần cài đặt:


  3. Đi tới thư mục sau:  /home/cPanel_user/.system-php/ini


  4. Chọn phiên bản PHP được gán cho tên miền của bạn rồi chọn thư mục của tên miền đó. Ví dụ, đường dẫn đầy đủ có thể là:

    /home/cPanel_user/.system-php/ini/7.0/testwebsite.com

  5. Nhấp chuột phải vào tệp php.ini và chọn Chỉnh sửa.

  6. Thêm dòng sau vào tệp:

    display_errors=1

  • Qua .htaccess


Để bật tùy chọn PHP display_errors qua tệp .htaccess, bạn cần chỉnh sửa tệp này trong thư mục gốc website tại “File Manager” và thêm dòng sau vào đó:

php_value display_errors 1

Các bước chi tiết để xác định vị trí tệp .htaccess có thể được tìm thấy trong bài viết này

Sau khi thực hiện thay đổi, nhấp Lưu.

Cách thay thế các tệp WordPress bị thiếu

WordPress sử dụng cấu trúc tệp đơn giản và có tổ chức, giúp việc khôi phục các tệp bị thiếu hoặc bị hỏng trở nên khá dễ dàng. Việc thay thế các tệp lõi mặc định được khuyến nghị mạnh mẽ, vì nó đảm bảo rằng mọi tệp bị phần mềm độc hại xâm phạm đều được khôi phục hoàn toàn. Tuy nhiên, hãy cẩn trọng: thay thế một số tệp hoặc thư mục có thể dẫn đến mất dữ liệu nếu không thực hiện đúng cách.

Làm theo các bước dưới đây để thay thế các tệp WordPress bị thiếu:

  1. Đăng nhập vào cPanel và vào Softaculous Apps Installer.

  2. Tạo một cài đặt WordPress mới trong một thư mục con tạm thời. Để làm điều này, nhấp vào biểu tượng WordPress rồi chọn Cài đặt:


  3. Bạn sẽ được chuyển đến trang cài đặt. Tại đây, chọn tên miền cần thiết từ menu thả xuống và nhập tên thư mục con vào trường In Directory.

    Trong ví dụ này, chúng tôi sử dụng thư mục con ” fix” cho cài đặt WordPress:


    LƯU Ý: Việc thay thế tất cả các tệp mặc định sẽ cập nhật cài đặt hiện tại của bạn lên phiên bản được sử dụng trong cài đặt tạm thời “fix”, và việc trộn các tệp từ các phiên bản khác nhau có thể gây xung đột hệ thống và làm hỏng chức năng của trang web.

    Nếu bạn cần giữ nguyên phiên bản WordPress hiện tại hoặc chỉ định thay thế một số tệp nhất định, hãy kiểm tra phiên bản trang web của bạn trong tệp /wp-includes/version.php , và đảm bảo rằng cài đặt mới sử dụng cùng phiên bản WordPress:


  4. Bạn có thể chọn phiên bản WordPress cho cài đặt mới trực tiếp trong cửa sổ cài đặt:


  5. Sau khi cấu hình xong, nhấp Cài đặt nhanh hoặc cuộn xuống cuối trang cài đặt và nhấp Cài đặt

  6. Sau khi cài đặt WordPress mới hoàn tất, các tệp của nó sẽ xuất hiện trong “File Manager” > thư mục gốc của tên miền. Mở thư mục bằng cách nhấp đúp vào nó:


  7. Để thay thế một tệp bị thiếu cụ thể (ví dụ: wp-settings.php), hãy tìm tệp đó trong thư mục cài đặt mới.

  8. Sau đó, di chuyển tệp này vào thư mục gốc hiện tại của website bằng cách nhấp chuột phải vào tệp > nhấp vào Di chuyển > nhập đường dẫn đến thư mục gốc website > nhấp Di chuyển tệp


  9. Khi hoàn tất, tệp bị thiếu đã được khôi phục và website của bạn sẽ tải lại bình thường.

Cách thay thế tất cả các tệp mặc định của WordPress

Trong quá trình thay thế tất cả các tệp mặc định của WordPress cho một website, các bước 1-6 giống như trong phần “Cách thay thế các tệp WordPress bị thiếu”. 

Sau khi hoàn thành các bước này và đã tạo cài đặt WordPress mới, để thay thế tất cả các tệp mặc định trong thư mục gốc website, vui lòng làm theo các bước sau:

  1. Mở thư mục gốc của cài đặt WordPress mới:


  2. Bên trong thư mục cài đặt mới, hãy xóa các tệp và thư mục sau:


    • .htaccess

    • wp-config.php

    • wp-content

      Các tệp và thư mục này chứa cấu hình và nội dung của trang web, nên phải giữ nguyên.

  3. Sau đó, di chuyển các tệp còn lại vào thư mục gốc của website chính. Để làm điều này, sử dụng nút Chọn tất cả > nhấp vào Di chuyển > nhập đường dẫn đến thư mục gốc của trang web > nhấp Di chuyển tệp:


  4. Các tệp lõi WordPress của bạn đã được thay thế hoàn toàn. Hãy truy cập website để xác nhận mọi thứ đã tải đúng.

    Nếu trang vẫn hiển thị lỗi, hãy kiểm tra lại error_log. Trong hầu hết các trường hợp, các vấn đề bổ sung là do thiếu tệp giao diện hoặc plugin.

Thiếu tệp giao diện hoặc plugin

Thiếu tệp giao diện hoặc plugin có thể xảy ra vì nhiều lý do, nhưng nguyên nhân phổ biến nhất là do phần mềm độc hại lây nhiễm và xóa các thành phần thiết yếu trong cài đặt WordPress của bạn. 

Nếu bất kỳ tệp plugin hoặc giao diện nào của WordPress bị thiếu, bạn có thể gặp phải:

  • Một trang trắng;

  • Lỗi 500 Internal Server Error;

  • Lỗi “Trang web này đang gặp sự cố kỹ thuật” (được giới thiệu từ WordPress 5.2.2);

  • Trang chỉ tải một phần hoặc bị “vỡ” giao diện.

Để được hỗ trợ chẩn đoán vấn đề, hãy tham khảo các phần sau của bài viết này: Kiểm tra tệp error_log của websiteBật tùy chọn PHP display_errors.

Bạn có thể thấy các thông báo lỗi tương tự sau trong error_log hoặc trực tiếp trên website:

PHP Fatal error: Uncaught Error: Call to undefined function sample_function() in /home/cPaneluser/...

Dưới đây là ví dụ về lỗi do tệp plugin bị hỏng hoặc thiếu:


Để khôi phục tệp bị thiếu, chỉ cần cài đặt lại giao diện hoặc plugin bị ảnh hưởng.

LƯU Ý: Thiếu tệp functions.php trong giao diện thường liên quan đến phần mềm độc hại wp-vcd.php, thường nằm trong thư mục /wp-includes. Trước khi cài đặt giao diện mới, hãy xóa wp-vcd.php nếu có, hoặc nếu muốn đảm bảo an toàn tuyệt đối, hãy thay thế tất cả các tệp mặc định của WordPress như đã hướng dẫn ở trên.

Chuyển hướng độc hại

Trong một số trường hợp, khi website của bạn bị nhiễm phần mềm độc hại, nó có thể bắt đầu chuyển hướng khách truy cập đến các trang nguy hiểm hoặc đáng ngờ. Vấn đề này thường do plugin hoặc giao diện không an toàn gây ra, cho phép kẻ tấn công thay đổi URL trong cơ sở dữ liệu hoặc chỉnh sửa các tệp của website.

LƯU Ý: Không bao giờ nhấp vào bất kỳ liên kết chuyển hướng nào. Làm như vậy có thể khiến máy tính cá nhân của bạn bị nhiễm phần mềm độc hại:


Để khắc phục chuyển hướng độc hại, hãy làm theo các bước dưới đây:

  1. Tìm tệp cấu hình cơ sở dữ liệu cho website của bạn - wp-config.php trong cPanel > File Manager > thư mục gốc website. Mở tệp và tìm tên cơ sở dữ liệu của website trong đó:


  2. Sau đó, mở cơ sở dữ liệu được gán cho website trong menu phpMyAdmin của cPanel bằng cách nhấp vào nó, rồi truy cập bảng wp_options (“wp_” là tiền tố mặc định; của bạn có thể khác):


  3. Kiểm tra giá trị của các trường siteurl home , nếu bạn thấy URL độc hại hoặc đáng ngờ ở đó, hãy thay thế bằng tên miền thực tế của bạn: 


  4. Quét phần còn lại của cơ sở dữ liệu để tìm các URL độc hại tương tự và thay thế chúng cho phù hợp. 

  5. Tạm thời thay thế .htaccess hiện tại của bạn bằng phiên bản mặc định sạch. Tốt nhất nên đổi tên tệp hiện tại (ví dụ: .htaccess_old) và tạo một tệp mới từ đầu.

    Để đổi tên tệp, nhấp đúp vào nó > chọn Đổi tên từ danh sách > nhập tên tệp mới > và nhấn Đổi tên tệp.

    Sau đó, để tạo tệp mới, nhấp + File > đặt tên là .htaccess > và chọn Tạo tệp mới.

  6. Khi tệp .htaccess mới đã được tạo, hãy chỉnh sửa nó bằng cách nhấp chuột phải > chọn Chỉnh sửa từ danh sách. Khi cửa sổ chỉnh sửa mở ra, hãy dán các quy tắc mặc định của WordPress vào tệp:

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    # END WordPress

  7. Nhấp Lưu thay đổi.

Nếu website của bạn vẫn tiếp tục chuyển hướng, hãy thử thay thế tất cả các tệp lõi mặc định của WordPress.

Bạn cũng có thể tạm thời vô hiệu hóa tất cả plugin qua bảng điều khiển WordPress hoặc cơ sở dữ liệu, rồi thử kích hoạt từng plugin một. Sau khi kích hoạt từng plugin, kiểm tra website để xác định plugin nào gây ra vấn đề chuyển hướng độc hại.

Cần có địa chỉ email hợp lệ