Vô Hiệu Hóa XML-RPC trong WordPress

1. XML-RPC là gì?

WordPress sử dụng XML-RPC để cho phép người dùng thực hiện nhiều hoạt động trên blog/ website của họ từ xa. Nó cho phép bạn truy cập vào trang web của mình thông qua các ứng dụng di động dành riêng cho WordPress.

2. Cách nhận biết website WordPress đang bị tấn công

Một cách đơn giản nhất để biết website mình có đang bị tấn công theo hình thức này hay không là mở tập tin access_log lên xem. Nếu bạn thấy có lượng lớn lượt truy cập như dưới đây thì website bạn đang bị tấn công thông qua XML-RPC.

xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:49 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6”

xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:50 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6”

xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:50 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6”

xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:51 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6”

xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:51 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6”

xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:52 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8

3. Các phương thức tấn công qua XML-RPC

3.1. Brute-force Attack

Tất cả các yêu cầu XML-RPC đều được chứng thực để bạn có thể chỉnh sửa các trang web một cách an toàn. Những kẻ tấn công khai thác điều này để cố gắng tạo vô số các tổ hợp tên người dùng và mật khẩu cho đến khi chúng xâm nhập được vào trang web của bạn.

3.2. DDoS

Một kẻ tấn công duy nhất có thể sử dụng hàng ngàn trang web WordPress để khởi động một cuộc tấn công DDoS vào trang web của bạn với một yêu cầu (request) pingback đơn giản đến tập tin XML-RPC. Những yêu cầu gần như bất tận sẽ khiến các máy chủ web bị quá tải và làm trang web của bạn bị downtime hoặc thậm chí có thể dẫn đến crash máy chủ.

4. Vô hiệu hóa XML-RPC

4.1. Vô hiệu Xmlrpc.php bằng Plugins ” Disable 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.

Bạn có thể sử dụng một số plugin khác:

Stop XML-RPC Attack: Plugin này sẽ chặn mọi tấn công bằng XML-RPC, nhưng nó vẫn cho phép các plugin như Jetpack, và nhiều công cụ tự động khác truy cập vào file xmlrpc.php.

Control XML-RPC Publishing: Plugin này cho phép kiểm soát và sử dụng công cụ xuất bản từ xa bằng xmlrpc.php.

4.2. Cách thủ công

  • Chặn xmlrpc.php trên .htaccess

Nếu bạn dùng Shared Host hoặc các server cài đặt Apache thì chèn đoạn sau vào tập tin .htaccess ở thư mục gốc của website.

<files xmlrpc.php>

order allow,deny

deny from all

</files>

Trả về lỗi 403 khi truy cập file:

Code:

# protect xmlrpc

<IfModule mod_alias.c>

RedirectMatch 403 /xmlrpc.php

</IfModule>

Hoặc Redirect đến trang khác:

Code:

# protect xmlrpc

<IfModule mod_alias.c>

Redirect 301 /xmlrpc.php http://example.com/custom-page.php

</IfModule>

  • Chặn xmlrpc.php trên NGINX

Nếu bạn đang sử dụng NGINX làm backend (sử dụng cùng với PHP-FPM) thì bỏ đoạn sau vào tập tin cấu hình domain trên NGINX.

location = /xmlrpc.php {

deny all;

access_log off;

log_not_found off;

}

* Sau đó khởi động lại NGINX.

  • Sử dụng code snippet

Chèn đoạn code sau đây vào file functions.php của theme hoặc child theme mà bạn đang sử dụng rồi lưu lại.

add_filter( ‘xmlrpc_enabled’, ‘__return_false’ );

 

Bài viết liên quan