Xmlrpc.php là gì và tại sao lại vô hiệu hóa nó?

Tác giả AI+, T.Sáu 28, 2024, 06:53:02 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Kể từ khi được tạo, WordPress luôn có cách giao tiếp với trang web của bạn từ xa – bao gồm các nền tảng blog và ứng dụng khách trên máy tính để bàn khác nhau – để tương tác với nó.

Là một trong những nền tảng phần mềm đầu tiên được sử dụng, hệ thống API XML-RPC bao gồm giao thức Cuộc gọi thủ tục từ xa (RPC) và Ngôn ngữ đánh dấu mở rộng (XML) để mã hóa các cuộc gọi của nó bằng Giao thức truyền siêu văn bản (HTTP) được sử dụng làm phương tiện truyền tải giao thức.


Chúng ta sẽ đi sâu vào tìm hiểu chính xác XML-RPC là gì, nó được sử dụng để làm gì và tại sao bạn nên tắt nó trên trang web WordPress của mình. Những nguyên tắc này được đưa ra kèm theo cảnh báo liên quan đến dịch vụ Jetpack, yêu cầu XML-RPC, như đã thảo luận trên trang web Jetpack và XML-RPC. Nếu sử dụng dịch vụ Jetpack thì không nên tắt XML-RPC (thay vào đó, như được đề cập trong hướng dẫn bên dưới, bạn nên đưa dải IP Jetpack vào danh sách trắng). Nếu không, trang web của bạn không thể kết nối với Jetpack:

  • Bắt đầu với Jetpack
  • Jetpack và XML-RPC
  • Khắc phục sự cố kết nối Jetpack
  • Tài liệu tham khảo Jetpack Hosting
  • Cách thêm IP Jetpack vào danh sách cho phép

Ở đây cũng cần lưu ý rằng plugin Thuế & Vận chuyển WooCommerce (trước đây gọi là plugin Dịch vụ WooCommerce) yêu cầu Jetpack.

1. Xmlrpc.php là gì?

XML-RPC là API cốt lõi của WordPress, là một phần của WordPress kể từ khi được thành lập vào năm 2003. Kể từ những ngày đầu, XML-RPC đã là một yếu tố quan trọng trong việc cho phép WordPress kết nối với mạng internet rộng hơn thay vì hoạt động biệt lập. Trong các phiên bản đầu tiên, XML-RPC bị tắt theo mặc định, nhưng điều đó đã thay đổi trong phiên bản WordPress 3.5, nơi XML-RPC được bật theo mặc định. Hơn nữa, không có tùy chọn nào để tắt nó nữa trong phần phụ trợ WordPress.

Mã cho hệ thống XML-RPC được chứa trong tệp xmlrpc.php, nằm trong thư mục gốc của bản cài đặt WordPress. Các chuyên gia đồng ý, XML-RPC được coi là lỗi thời, là một rủi ro an ninh mạng và được thay thế bằng API REST - cũng có trong lõi WordPress.

2. Xmlrpc.php bị khai thác như thế nào?

Mục thứ 17 trong Danh sách kiểm tra bảo mật WordPress toàn diện ghi lại một số rủi ro được tạo ra khi sử dụng giao thức XML-RPC trên trang web WordPress của bạn. Lý do chính khiến bạn nên vô hiệu hóa XML-RPC là do các lỗ hổng mà nó gây ra theo cách khai thác xmlrpc.php đã biết. Vấn đề không nằm ở bản thân hệ thống API XML-RPC mà ở cách nó được sử dụng bởi những người khác nhau với những mục đích khác nhau trên trang web của bạn. Và vì nó không còn được sử dụng trong các kiến trúc lưu trữ web hiện đại nên tốt nhất bạn nên tắt nó đi.

Có hai cách khai thác nổi bật nhất được sử dụng khi XML-RPC được kích hoạt trên trang web của bạn - làm lộ ra lỗ hổng bảo mật. Đó là các cuộc tấn công mạng từ chối dịch vụ phân tán (DDoS) và Brute Force :

  • Các cuộc tấn công mạng DDoS (Từ chối dịch vụ phân tán) là khi một kẻ xấu làm quá tải lưu lượng truy cập internet trên máy chủ web để ngăn người dùng khác truy cập các trang web và dịch vụ trực tuyến của bạn. Trong WordPress, kẻ tấn công sử dụng tính năng PingBack để gửi pingback đến nhiều trang web và với XML-RPC, cung cấp cho kẻ tấn công số lượng địa chỉ IP không giới hạn để phát tán các cuộc tấn công DDoS.
  • Các cuộc tấn công mạng Brute Force được sử dụng khi kẻ tấn công cố gắng giành quyền truy cập vào trang web của bạn thông qua phương pháp bạo lực, trong đó xmlrpc.php được sử dụng để kiểm tra các kết hợp tên người dùng và mật khẩu khác nhau. Lỗ hổng bảo mật này cho phép chúng tự động hóa cuộc tấn công bằng lệnh đẩy hàng nghìn kết hợp cùng một lúc, vượt qua tính bảo mật của trang web của bạn và giành quyền truy cập vào trang web đó.

3. Vô hiệu hóa xmlrpc.php trong WordPress

Có hai cách chính để tắt xmlrpc.php trong WordPress:

  • Vô hiệu hóa WordPress XML-RPC bằng plugin.
  • Vô hiệu hóa xmlrpc.php bằng tệp.htaccess.

3.1. Phương pháp #1: Vô hiệu hóa WordPress XML-RPC bằng Plugin

Phương pháp này có thể được sử dụng nếu bạn muốn tránh thêm bất kỳ mã tùy chỉnh nào vào trang web của mình. Bạn có thể cài đặt và kích hoạt plugin Tắt XML-RPC-API. Plugin sẽ hoạt động ngay lập tức và vô hiệu hóa tất cả XML-RPC, nhưng bạn cũng có thể định cấu hình plugin để cho phép các địa chỉ IP cụ thể vẫn có quyền truy cập vào XML-RPC nếu cần:


3.2. Phương pháp #2: Vô hiệu hóa xmlrpc.php bằng tệp.htaccess

Nếu không thích thêm plugin bổ sung vào trang web của mình, bạn cũng có thể tắt XML-RPC bằng cách sử dụng các dòng mã trong tệp.htaccess.

Ưu điểm của phương pháp này là bạn có thể cho phép địa chỉ IP của mình hoặc địa chỉ IP của nhà phát triển vẫn truy cập XML-RPC trong khi chặn những người khác và nó cũng sẽ không ảnh hưởng gì đến hiệu suất trang web WordPress của bạn, vì nó sẽ chặn XML- Yêu cầu RPC trước khi chúng được chuyển tới WordPress.

Trong trường hợp bạn gặp phải bất kỳ vấn đề nào sau này, hãy đảm bảo bạn tạo bản sao lưu tệp.htaccess trước khi thực hiện bất kỳ thay đổi nào. Bạn có thể truy cập tệp.htaccess của mình qua ứng dụng khách FTP, sử dụng Trình quản lý tệp trên bảng điều khiển hoặc tính năng SSH trong máy chủ của bạn. Khi có quyền truy cập thích hợp, bạn có thể mở và chỉnh sửa tệp.htaccess thông qua Trình soạn thảo văn bản Vim. Bạn sẽ cần thêm đoạn mã sau vào tệp.htaccess và thay thế "xxx.xxx.xxx.xxx" bằng địa chỉ IP bạn muốn cho phép có quyền truy cập vào xmlrpc.php :

Mã nguồn [Chọn]
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny, allow
 deny from all
 allow from xxx.xxx.xxx.xxx
</Files>

Dịch vụ Jetpack có thể được đưa vào danh sách trắng để bao gồm dải IP tương ứng để có thể hạn chế quyền truy cập vào XML-RPC. Việc thiết lập này là cần thiết vì Jetpack yêu cầu XML-RPC kết nối trang web của bạn với tài khoản Jetpack để có thể sử dụng các dịch vụ Jetpack trên trang web của bạn.

Để cho phép nhiều hơn hai địa chỉ IP có quyền truy cập vào xmlrpc.php, bạn chỉ cần thêm một dòng khác có dòng "allow from   Đăng nhập để xem liên kết" bên dưới quy tắc cho phép trước đó. Mã sẽ trông như thế này:

Mã nguồn [Chọn]
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny, allow
 deny from all
 allow from xxx.xxx.xxx.xxx
 allow from xxx.xxx.xxx.xxx
</Files>

Chúng ta có thể thêm địa chỉ IP Jetpack cùng với các địa chỉ IP đó của bất kỳ plugin và dịch vụ bắt buộc nào khác vào Danh sách cho phép để đưa chúng vào danh sách trắng nếu cần.

4. Kiểm tra để đảm bảo xmlrpc.php bị tắt

Khi bạn đã chọn phương pháp tắt xmlrpc.php, bạn cần kiểm tra xem bạn đã tắt thành công hệ thống API XML-RPC trên trang web WordPress của mình chưa.

Bạn có thể kiểm tra xem xmlrpc.php có bị tắt hay không bằng cách truy cập URL của   Đăng nhập để xem liên kết, trong đó   Đăng nhập để xem liên kết đại diện cho miền thực của bạn và bạn sẽ thấy thông báo "Bị cấm - Bạn không có quyền truy cập truy cập tài nguyên này." thông báo lỗi.

Một phương pháp khác là cài đặt Ứng dụng WordPress dành cho thiết bị di động trên điện thoại di động hoặc máy tính bảng của bạn. Bạn có thể cài đặt ứng dụng thông qua Apple App Store hoặc Google Play Store tùy thuộc vào điện thoại của bạn. Sau khi ứng dụng được cài đặt, bạn có thể mở nó và nhấp vào nút "Nhập địa chỉ trang web hiện tại của bạn" ở cuối màn hình:


Cung cấp trang WordPress mà bạn muốn kết nối và nhấp vào "Tiếp tục" ở nút ở cuối màn hình:


Nếu XML-RPC đã bị vô hiệu hóa, bạn sẽ không thể đăng nhập nhưng bạn sẽ thấy thông báo lỗi "Dịch vụ XML-RPC bị vô hiệu hóa trên trang web này. ".

XML-RPC thông qua xmlrpc.php được sử dụng phổ biến hơn trước khi API REST được thêm vào nền tảng WordPress. API REST gần như đã thay thế nhu cầu về XML-RPC. Một số dịch vụ sử dụng API REST trong WordPress và API REST mở rộng trong WooC Commerce (trước WooC Commerce phiên bản 2.6, nền tảng này có API REST tách biệt với WordPress - hiện được gọi là API kế thừa) để kết nối với trang web của bạn và cập nhật các thành phần khác nhau và các yếu tố nội dung khi cần thiết.

Giới hạn quyền truy cập vào XML-RPC sẽ là giải pháp tốt nhất để đảm bảo tính ổn định và bảo mật cho trang web WordPress của bạn trong tương lai. Ví dụ: bạn có thể giới hạn quyền truy cập nhưng đưa dải IP Jetpack vào danh sách trắng để nó vẫn có thể sử dụng XML-RPC. Những phương pháp này đã được cung cấp trong các phần trên để bạn tham khảo.