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.
Sử dụng plugins iThemes Security để tắt XML-RPC
Cài đặt plugins iThemes Security
Click vào Security, Tại WordPress Tweaks, các bạn click vào Configure settings
Tại mục XML-RPC: các bạn chọn Disable XML-RPC
- Disable XML-RPC: XML-RPC được tắt tại website. Cài đặt này được khuyến cáo nếu sử dụng Jetpack, các ứng dụng WordPress Mobile, pingback và các dịch vụ khác sử dụng XML-RPC sẽ không hoạt động.
- Disable Pingbacks: Chỉ tắt pingback. Các tính năng XML-RPC khác sẽ hoạt động bình thường. Cài đặt này cho phép các tính năng của Jetpack hoặc ứng dụng WordPress Mobile hoạt động.
- Enable XML-RPC: XML-RPC được kích hoạt hoàn toàn và sẽ hoạt động bình thường. Chỉ sử dụng cài đặt này nếu website phải sử dụng XML-RPC không hạn chế.
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>
- 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’ );
Chúc các bạn thành công!