Tìm hiểu xmlrpc.php trong WordPress – Rủi ro bảo mật

Xmlrpc.php là gì? XML-RPC WordPress được phát triển để chuẩn hóa giao tiếp giữa các hệ thống khác nhau, có nghĩa là các ứng dụng bên ngoài WordPress (chẳng hạn như các nền tảng blog khác và ứng dụng khách trên máy tính để bàn) có thể tương tác với WordPress.

XML-RPC là một phần của WordPress kể từ khi ra đời và đã làm một công việc rất hữu ích. Nếu không có nó, WordPress sẽ ở trong phạm vi của riêng nó, tách biệt với phần còn lại của internet.

Tuy nhiên, xmlrpc.php có những mặt trái của nó. Nó có thể tạo ra các lỗ hổng cho trang web WordPress của bạn và hiện đã được thay thế bởi WordPress REST API , hoạt động tốt hơn nhiều trong việc mở WordPress với các ứng dụng khác.

Trong bài đăng này, chúng tôi sẽ giải thích xmlrpc.php là gì, tại sao bạn nên tắt nó và giúp bạn xác định xem nó có đang chạy trên trang web WordPress của bạn hay không.

Bắt đầu thôi.

Xmlrpc.php là gì?

XML-RPC là một thứ dùng để cho phép giao tiếp giữa WordPress và các hệ thống khác nhau. Nó đã thực hiện điều này bằng cách chuẩn hóa các giao tiếp đó, sử dụng HTTP làm cơ chế truyền tải và XML làm cơ chế mã hóa.

XML-RPC có trước WordPress: nó có mặt trong phần mềm viết b2 bloging, được phân nhánh để tạo ra WordPress vào năm 2003. Mã đằng sau hệ thống được lưu trữ trong một tệp có tên xmlrpc.php , trong thư mục gốc của trang web. Và nó vẫn ở đó, mặc dù XML-RPC phần lớn đã lỗi thời.

Trong các phiên bản đầu tiên của WordPress, XML-RPC bị tắt theo mặc định. Nhưng kể từ phiên bản 3.5, nó được bật theo mặc định. Lý do chính cho điều này là cho phép ứng dụng di động WordPress nói chuyện với cài đặt WordPress của bạn .

Nếu bạn đã sử dụng ứng dụng dành cho thiết bị di động WordPress trước phiên bản 3.5, bạn có thể nhớ phải bật XML-RPC trên trang web của mình để ứng dụng có thể đăng nội dung. Điều này là do ứng dụng không tự chạy WordPress; thay vào đó, nó là một ứng dụng riêng biệt giao tiếp với trang web WordPress của bạn bằng xmlrpc.php.

Nhưng nó không chỉ là ứng dụng di động mà XML-RPC được sử dụng: nó còn được sử dụng để cho phép giao tiếp giữa WordPress và các nền tảng blog khác, nó cho phép trackback và pingbacks và nó hỗ trợ plugin Jetpack liên kết một WordPress tự lưu trữ trang đến WordPress.com .

Nhưng kể từ khi API REST được tích hợp vào lõi WordPress, tệp xmlrpc.php không còn được sử dụng cho giao tiếp này nữa. Thay vào đó, REST API được sử dụng để giao tiếp với ứng dụng di động WordPress, với các ứng dụng khách trên máy tính để bàn, với các nền tảng blog khác, với WordPress.com (cho plugin Jetpack) và với các hệ thống và dịch vụ khác. Phạm vi hệ thống mà API REST có thể tương tác lớn hơn nhiều so với phạm vi được xmlrpc.php cho phép.

Vì REST API đã thay thế XML-RPC, nên bây giờ bạn nên tắt xmlrpc.php trên trang web của mình. Hãy xem tại sao.

Lý do bạn nên vô hiệu hóa xmlrpc.php là gì?

Lý do chính tại sao bạn nên vô hiệu hóa xmlrpc.php trên trang web WordPress của mình là vì nó tạo ra các lỗ hổng bảo mật  và có thể là mục tiêu của các cuộc tấn công.

Bây giờ XML-RPC không còn cần thiết để giao tiếp bên ngoài WordPress, không có lý do gì để giữ cho nó hoạt động. Đó là lý do tại sao nên làm cho trang web của bạn an toàn hơn bằng cách tắt nó đi. Nếu xmlrpc.php là một vấn đề bảo mật và nó không còn hoạt động, tại sao nó vẫn chưa được xóa hoàn toàn khỏi WordPress?

Lý do cho điều này là vì một trong những tính năng chính của WordPress sẽ luôn là khả năng tương thích ngược. Nếu bạn đang quản lý trang web của mình tốt, bạn sẽ biết rằng việc cập nhật WordPress cũng như bất kỳ plugin hoặc chủ đề nào là điều cần thiết.

Nhưng sẽ luôn có những chủ sở hữu trang web không muốn hoặc không thể cập nhật phiên bản WordPress của họ. Nếu họ đang chạy phiên bản có trước API REST, họ vẫn cần quyền truy cập vào xmlrpc.php.

Hãy xem xét các lỗ hổng cụ thể chi tiết hơn.

Tấn công DDoS qua XML-RPC Pingbacks

Một trong những chức năng mà xmlrpc.php đã bật là pingbacks và trackbacks. Đây là những thông báo xuất hiện trong nhận xét trên trang web của bạn khi một blog hoặc trang web khác liên kết đến nội dung của bạn.

Đặc tả XML-RPC là thứ làm cho giao tiếp này khả thi, nhưng nó đã được thay thế bằng API REST (như chúng ta đã thấy).

Nếu XML-RPC được bật trên trang web của bạn, một tin tặc có thể có khả năng thực hiện một cuộc tấn công DDoS trên trang web của bạn bằng cách khai thác xmlrpc.php để gửi một số lượng lớn pingback đến trang web của bạn trong thời gian ngắn. Điều này có thể làm quá tải máy chủ của bạn và khiến trang web của bạn ngừng hoạt động.

Tấn công Brute Force qua XML-RPC

Mỗi lần xmlrpc.php đưa ra yêu cầu, nó sẽ gửi tên người dùng và mật khẩu để xác thực. Điều này thể hiện trách nhiệm bảo mật đáng kể và là điều mà API REST không làm. Trên thực tế, REST API sử dụng OAuth sẽ gửi mã thông báo để xác thực thay vì tên người dùng hoặc mật khẩu.

Bởi vì xmlrpc.php gửi thông tin xác thực với mọi yêu cầu, tin tặc có thể sử dụng nó để cố gắng truy cập vào trang web của bạn . Một cuộc tấn công mạnh bạo như thế này có thể cho phép chúng chèn nội dung, xóa mã hoặc làm hỏng cơ sở dữ liệu của bạn .

Nếu kẻ tấn công gửi đủ yêu cầu đến trang web của bạn, mỗi yêu cầu có một cặp tên người dùng và mật khẩu khác nhau, thì có khả năng cuối cùng chúng sẽ đánh vào đúng yêu cầu, cấp cho chúng quyền truy cập vào trang web của bạn.

Đó là lý do tại sao, nếu bạn đang chạy phiên bản cập nhật của WordPress, sử dụng API REST để giao tiếp với các hệ thống bên ngoài, bạn nên tắt xmlrpc.php . Nó không cần thiết và nó có thể làm cho trang web của bạn dễ bị tấn công.

Xmlrpc.php có đang chạy trên trang web WordPress của bạn không?

Điều đầu tiên bạn cần làm là xác định xem xmlrpc.php có đang chạy trên trang WordPress của bạn hay không.

Đây không phải là một trường hợp đơn giản để kiểm tra xem tệp có ở đó hay không: nó là một phần của mọi cài đặt WordPress và sẽ có mặt ngay cả khi XML-RPC bị tắt.

Luôn tạo bản sao lưu trang web của bạn trước khi xóa bất kỳ thứ gì. Trong trường hợp này, đừng chỉ xóa tệp xmlrpc.php vì nó sẽ phá vỡ trang web của bạn.

Để kiểm tra xem xmlrpc.php có được bật trên trang web của bạn hay không, hãy sử dụng Dịch vụ xác thực WordPress XML-RPC . Thao tác này sẽ kiểm tra trang web của bạn và cho bạn biết xmlrpc.php đã được bật hay chưa.

DICH-VU-XAC-THUC-xmlrpc
DICH-VU-XAC-THUC-xmlrpc

 

Đây là kết quả tôi nhận được khi kiểm tra trang web Tây Nam Solutions này trên dịch vụ.

Kết quả dịch vụ xác thực xmlrpc
Kết quả dịch vụ xác thực xmlrpc

Điều này cho thấy xmlrpc.php đã bị vô hiệu hóa trên taynamsolution.vn. Vì vậy, nếu bạn chạy kiểm tra và phát hiện ra rằng xmlrpc.php vẫn được bật trên trang web của bạn, bạn làm cách nào để tắt nó đi?

Cách tắt xmlrpc.php là gì?

Có ba cách để vô hiệu hóa xmlrpc.php:

  1. Cách vô hiệu hóa xmlrpc.php bằng Plugin
  2. Cách tắt xmlrpc.php mà không có plugin
  3. Yêu cầu nhà cung cấp dịch vụ lưu trữ của bạn vô hiệu hóa xmlrpc.php

Chúng ta hãy xem xét từng cái một để biết cách tắt xmlrpc.php là gì?

Cách vô hiệu hóa xmlrpc.php bằng Plugin

Cài đặt một plugin để vô hiệu hóa xmlrpc.php là cách dễ nhất để thực hiện việc này. Các Disable Plugin XML-RPC sẽ vô hiệu hóa nó hoàn toàn. Đây là cách bạn sử dụng nó.

Điểm bắt đầu của tôi là trang web của riêng tôi, trên đó xmlrpc.php được kích hoạt. Bạn có thể thấy điều này qua cách tôi làm dưới đây:

Rachel-McCollin-XML-RPC-check
Rachel-McCollin-XML-RPC-check

Cài đặt plugin thông qua màn hình Plugins của bạn trong quản trị viên WordPress và kích hoạt nó.

Bạn không phải làm bất cứ điều gì khác: kích hoạt plugin sẽ khiến nó vô hiệu hóa XML-RPC. Bây giờ nếu tôi kiểm tra trang web của mình, tôi nhận được một kết quả khác:

Nó đơn giản mà!

Vô hiệu hóa XML-RPC Pingbacks bằng một plugin

Nhưng nếu bạn muốn vô hiệu hóa một số khía cạnh của xmlrpc.php chứ không phải những khía cạnh khác? Các Disable XML-RPC Pingback Plugin cho phép bạn vô hiệu hóa chỉ là chức năng pingback, có nghĩa là bạn vẫn có thể truy cập các tính năng khác của XML-RPC nếu bạn cần chúng.

Plugin hoạt động theo cách tương tự như plugin Disable XML-RPC: chỉ cần cài đặt, kích hoạt nó và nó sẽ hoạt động.

Định cấu hình Kích hoạt XML-RPC và REST API bằng một Plugin

Nếu bạn muốn kiểm soát chi tiết hơn về cách cả xmlrpc.php và REST API được định cấu hình trên trang web của mình, bạn có thể cài đặt plugin REST XML-RPC Data Checker .

Khi bạn đã cài đặt và kích hoạt plugin này, hãy đi tới Cài đặt> REST Trình kiểm tra dữ liệu XML-RPC và nhấp vào tab XML-RPC .

REST Trình kiểm tra dữ liệu XML-RPC

REST Trình kiểm tra dữ liệu XML-RPC

Điều này cho phép bạn định cấu hình chính xác các khía cạnh của xmlrpc.php đang hoạt động trên trang web của bạn.

Ngoài ra, bạn có thể chỉ cần tắt nó hoàn toàn. Và nếu bạn cũng muốn kiểm soát REST API , plugin sẽ cung cấp cho bạn một tab khác cho điều đó.

Cần một máy chủ lưu trữ thân thiện với nhà phát triển, nhanh chóng, an toàn và nhanh chóng? Kinsta được xây dựng với các nhà phát triển WordPress và cung cấp nhiều công cụ cũng như bảng điều khiển mạnh mẽ. Kiểm tra các kế hoạch của chúng tôi

Cách tắt xmlrpc.php mà không có plugin

Nếu bạn không muốn cài đặt một plugin khác trên trang web của mình, bạn có thể vô hiệu hóa xmlrpc.php bằng cách thêm một số mã vào bộ lọc hoặc vào tệp .htaccess của bạn . Hãy xem xét cả hai phương pháp.

Tắt xmlrpc.php qua code trong file functions của theme

Một tùy chọn ở đây là sử dụng bộ lọc xmlrpc_enabled để vô hiệu hóa xmlrpc.php. Thêm chức năng này vào một plugin và kích hoạt nó trên trang web của bạn

[php]add_filter(‘xmlrpc_enabled’, ‘__return_false’);[/php]

Bạn có thể thêm cái này vào tệp chức năng chủ đề của mình nhưng cách tốt hơn là viết một plugin.

Tùy chọn khác liên quan đến chỉnh sửa tệp .htaccess của bạn, tệp này có sẵn với các nhà cung cấp dịch vụ lưu trữ sử dụng Apache , bằng cách kết nối với máy chủ của trang web của bạn qua FTP  hoặc  cPanel .

Thông tin

Taynamsolution.vn sử dụng  máy chủ web Nginx , có nghĩa là bạn sẽ không có tệp .htaccess đang hoạt động. Thay vào đó, bạn có thể tận dụng các công cụ trong bảng điều khiển có thể sao chép nhiều chức năng .htaccess quan trọng theo cách trực quan hơn thông qua bảng điều khiển.

Vô hiệu hóa xmlrpc.php qua Tệp .htacess

Trong tệp .htaccess của bạn , hãy thêm mã này:

<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>

Đảm bảo bạn tạo một bản sao của tệp cũ trước khi làm như vậy, đề phòng trường hợp bạn gặp bất kỳ sự cố nào.

Yêu cầu nhà cung cấp dịch vụ lưu trữ của bạn vô hiệu hóa xmlrpc.php

Ngoài ra, một số nhà cung cấp dịch vụ lưu trữ sẽ vô hiệu hóa xmlrpc.php nếu phát hiện có cuộc tấn công.

Tại Taynamsolution, khi phát hiện một cuộc tấn công qua XML-RPC, một đoạn mã sẽ tự động được thêm vào tệp Nginx.config:

location ~* ^/xmlrpc.php$ {
return 403;
}

 

Điều này sẽ tạo ra lỗi 403 và dừng cuộc tấn công theo dõi của nó.

Nếu bạn đang tự làm việc này, tốt nhất là sử dụng một trong các phương pháp trên. Nhưng trước khi thực hiện, hãy luôn kiểm tra với nhà cung cấp dịch vụ lưu trữ của bạn trước.

Khi nào bạn cần kích hoạt xmlrpc.php?

Có thể có một số trường hợp bạn cần bật xmlrpc.php trên trang WordPress của mình hoặc khi bạn không nên tắt hoàn toàn nó.

Đó là:

  • Bạn không chạy API REST (không được khuyến nghị, nhưng cần thiết trong một số trường hợp) nhưng cần giao tiếp giữa trang web WordPress của bạn và các hệ thống khác.
  • Bạn không thể cập nhật WordPress lên phiên bản 4.4 trở lên, vì vậy không có quyền truy cập vào API REST. Điều này có thể do các hạn chế trong thiết lập lưu trữ của bạn (trong trường hợp đó tôi sẽ thay đổi nhà cung cấp dịch vụ lưu trữ ) hoặc sự không tương thích của chủ đề hoặc plugin (trong trường hợp đó, tôi sẽ thay thế hoặc cập nhật chúng).
  • Bạn đang làm việc với một ứng dụng bên ngoài không thể truy cập API WP REST nhưng có thể truy cập XML-RPC (về lâu dài, tôi khuyên bạn nên cập nhật ứng dụng đó hoặc chuyển sang ứng dụng tương thích với REST).

Đó là nó! Không có lý do nào trong số này là lý do đặc biệt chính đáng để giữ cho đặc tả XML-RPC được bật.

Lý do duy nhất mà nó vẫn còn trong WordPress là vì khả năng tương thích ngược và bạn chỉ sử dụng nó nếu đang làm việc với các hệ thống lỗi thời. Đối với bất kỳ ai muốn cập nhật trang web của mình và làm việc với công nghệ mới nhất, vô hiệu hóa xmlrpc.php là cách tốt nhất.

Túm lại nội dung về xmlrpc.php là gì

Thuật ngữ XML-RPC được phát triển trước khi WordPress thậm chí được tạo ra, như một phương tiện để WordPress giao tiếp với các hệ thống và ứng dụng bên ngoài. Nó có các lỗi bảo mật cố hữu và có thể khiến trang web của bạn dễ bị tấn công.

Giờ đây, REST API cho phép trang web của bạn giao tiếp với các ứng dụng khác , bạn có thể vô hiệu hóa xmlrpc.php một cách an toàn. Nếu bạn làm theo các bước ở trên, bằng cách tắt nó, bạn sẽ cải thiện tính bảo mật của trang web của mình.


Nếu bạn thích bài viết này, thì bạn sẽ thích nền tảng lưu trữ WordPress của taynamsolutions. Tăng tốc trang web của bạn và nhận hỗ trợ 24/7 từ nhóm WordPress kỳ cựu của chúng tôi. Cơ sở hạ tầng được cung cấp bởi Google Cloud của chúng tôi tập trung vào tự động mở rộng quy mô, hiệu suất và bảo mật. Hãy để chúng tôi cho bạn thấy sự khác biệt của Tay Nam Solution!