Xmlrpc là gì? Và vì sao ta nên vô hiệu file xmlrpc.php?

Rate this post

WordPress có sẵn các tính năng để bạn tương tác từ xa với site của bạn. Đôi khi, bạn cần truy cập vào website mà không có sẵn laptop để sử dụng. Trong một thời gian dài, giải pháp truy cập từ xa hoàn toàn phụ thuộc vào file xmlrpc.php. Trong những năm gần đây, file này bị lạm dụng và trở thành lỗ hổng bảo mật lớn.

Bên dưới chúng tôi sẽ giải thích file xmlrpc.php là gì. Chúng tôi cũng sẽ nói về các vấn đề bảo mật nó gây ra và làm thế nào để vá các lỗi bảo mật đó trên site WordPress của bạn.

Xmlrpc.php là gì?

XML-RPC là tính năng của WordPress để giúp truyền tải dữ liệu, với HTTP làm công cụ truyền và XML làm công cụ encode (mã hóa). Vì WordPress không phải là hệ thống đóng hoàn toàn nên tính năng này được tạo ra để khi WordPress cần giao tiếp với các hệ thống bên ngoài.

Ví dụ, bạn muốn đăng bài viết lên site từ điện thoại và không có máy tính bên cạnh. Bạn có thể dùng tính năng truy cập từ xa được kích hoạt bởi xmlrpc.php để đăng bài.

Chức năng chính mà xmlrpc.php kích hoạt là cho phép giao tiếp giữa điện thoại và site của bạn được thiết lập, thiết lập trackback và pingbacks từ các site khác, và một số tính năng liên kết với plugin Jetpac.

Vì sao Xmlrpc.php được tạo và trước đây nó được dùng làm gì?

Sự ra đời của XML-RPC ở vào những ngày đầu của WordPress trước khi được gọi là WordPress.

Lúc trước, khi kết nối internet còn chậ, quá trình viết bài và xuất bản bài viết lên web còn khó khăn và tốn nhiều gian. Thay vì viết bài ngay trên trình duyệt, mọi người thường viết bài trên máy tính sau đó copy và dán nội dung vào web. Tuy nhiên, cách này cũng không phải tốt nhất.

Giải pháp thay thế vào lúc ấy là tạo một blogging client offline, nơi bạn có thể viết nội dung, sau đó kết nối tới blog của bạn để xuất bản nó. Kết nối này được thực hiệnt thông qua XML-RPC. Với nền tảng XML-RPC, những ứng dụng ban đầu sử dụng loại kết nối này để giúp người dùng đăng nhập WordPress từ thiết bị của họ.

XML-RPC ngày nay

Vào năm 2008, với phiên bản WordPress 2.6, đã có lựa chọn để bạn có thể kích hoạt hoặc vô hiệu XML-RPC. Tuy nhiên, sau khi có ứng dụng  WordPress iPhone app, XML-RPC được kích hoạt mặc định, và không thể tắt hoàn toàn chức năng này được trong setting. Tình trạng này vẫn được giữ nguyên đến nay.

Tuy nhiên, chức năng của files này đã giảm thiểu đáng kể theo thời gian, và kích thước của file đã giảm từ 83kb còn 3kb, vì vậy nó không đóng vai trò lớn như trước đây.

Tương lai của XML-RPC

Với WordPress API mới, chúng ta có thể thấy XML-RPC sẽ sớm bị loại bỏ hoàn toàn. Mặc dù API mới vẫn đang trong giai đoạn thử nghiệm và chỉ có thể dùng khi kích hoạt plugin.

Tuy nhiên, API mới sẽ được code trực tiếp vào trong WordPress core, để loại bỏ hoàn toàn file xmlrpc.php, vì lúc này nó hoàn toàn không cần thiết nữa.

API mới không hoàn hảo, nhưng qua thời gian nó sẽ mạnh mẽ hơn, bảo mật tốt hơn và giải quyết tất cả vấn đề mà xmlrpc.php đang có.

Tại sao bạn nên vô hiệu WordPress Xmlrpc.php

Vấn đề lớn nhất của XML-RPC là bảo mật. Chúng không tới từ bản thân XML-RPC, mà từ file xmlrpc.php bị dùng làm phương pháp tấn công brute force lên chính bản thân website chứa nó.

Dĩ nhiên, bạn có thể tự bảo vệ bằng cách tạo một mật khẩu cực mạnh, và dùng thêm plugin WordPress bảo mật. Nhưng cách tốt nhất là cứ vô hiệu hẵn nó đi.

Có 2 yếu điểm của xmlrpc mà bị lạm dụng trước đây.

Đầu tiên là dùng brute force attack để tấn công hoàn toàn vào website. Một hacker sẽ thử truy cập website của bạn bằng cách tận dung file xmlrpc.php để truy cập bằng nhiều tổ hợp đã được biết đến của username và password.  Chỉ cần một command là có thể chạy tự động hằng trăm password khác nhau để thử truy cập. Việc này bypass được các công cụ bảo mật vì các công cụ này không bảo vệ được nếu tấn công qua được xmlrpc.

Cách thứ 2 là tấn công DDoS vào website khiến nó bị down. Hackers có thể sử dụng tính năng pingback trong WordPress để gửi pingbacks tới hàng ngàn sites cùng lúc. Xmlrpc.php mở đường cho hacker phát tán việc tấn công DDoS bằng việc hỗ trợ gần như không giới hạn số IP address

Để kiểm tra xem XML-RPC có đang chạy không, bạn có thể dùng tool XML-RPC Validator để chạy thử. Nếu site có thể vận hành được và nếu thấy báo lỗi có nghĩa là site của bạn chưa kích hoạt XML-RPC.

Nếu không thấy lỗi, bạn có thể ngưng xmlrpc.php lại bằng 2 phương pháp bên dưới

Phương pháp 1: Vô hiệu Xmlrpc.php bằng Plugins

Vô hiệu XML-RPC trên WordPress rất đơn giản.

Bạn chỉ cần chuyển tới mục Plugins › Add New trong WordPress dashboard. Tìm plugin Disable XML-RPC và cài đặt plugin như bên dưới:

Cài đặt plugin disable XML-RPC

Kích hoạt plugin này là được. Plugin sẽ tự động chạy code cần thiết để tắt XML-RPC.

Tuy nhiên, có thể có nhiều plugin khác đang dùng một yếu tố của XML-RPC, vì vậy, vô hiệu nó hoàn toàn có thể gây lỗi xung đột plugin và khiến site không hoạt động.

Nếu bạn chỉ muốn tắt từng phần của XML-RPC, nhưng vẫn cho phép plugin và chức năng nào chạy, hãy cài những plugin khác như bên dưới:

Phương pháp 2: Vô hiệu WordPress Xmlrpc.php thủ công

Nếu bạn không thích plugin và thích tự làm việc này. Vậy hãy làm theo cách sau. Nó sẽ giúp bạn chặn tất cả những yêu cầu tới xmlrpc.php trước khi được chuyển qua WordPress.

Mở file .htaccess. Bạn có thể dùng tính năng ‘show hidden files’ trong file manager hoặc FTP client để thấy file này.

Bên trong file .htaccess, dán đoạn code sau vào:

# Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all allow from 123.123.123.123 </Files>

Lời kết

Tóm lại, XML-RPC là một giải pháp cho việc xuất bản từ xa cho WordPress. Tuy nhiên, giải pháp này đi kèm với việc đánh đổi tính an toàn của WordPress site và thậm chí gây tổn hại nghiêm trọng không thể phục hồi cho các site WordPress đó.

Để đảm bảo site của bạn an toàn, hãy cứ vô hiệu xmlrpc.php hoàn toàn. Trừ khi bạn cần vài chức năng liên quan đến việc xuất bản từ xa, hoặc cho plugin Jetpack, thì hãy dùng plugin quản lý việc này, lấp hỗ hổng bảo mật nhưng vẫn duy trì tính năng này.

Thời gian tới, chúng ta sẽ thấy là chức năng của XML-RPC sẽ tự được tích hợp vào WordPress API mới, sẽ cho phép truy cập từ xa dễ dàng hơn nhưng vẫn đảm bảo việc bảo mật wordpress. Nhưng trước khi tới lúc đó, hãy cứ bảo vệ bạn trước khỏi vấn đề của xmlrpc. Vì thực sự, lúc này bạn đã có thể truy xuất WordPress bất kỳ lúc nào từ bất kỳ thiết bị nào vào dashboard không cần thông qua xmlrpc.

Bạn chặn truy cập XML-RPC bằng plugin hay thủ công? Bạn có gặp bất kỳ vấn đề bảo mật nào liên quan đến nó không? Hãy chia sẽ bình luận của bạn bên comment bên dưới nhé. 

0973.393.165