XMLRPC attack, hướng dẫn bảo mật

attack wordpress xmlrp

XMLRPC attack, hướng dẫn bảo mật

Giới thiệu

WordPress là mã nguồn mở khá phổ biến và mạnh mẽ, tuy nhiên đó cũng là lý do các hacker luôn tìm lỗ hổng bảo mật để tấn công Website.
Có rất nhiều trường hợp máy chủ không được bảo vệ hoặc tối ưu hóa, có thể gặp vấn đề khi bị tấn công làm cho webserver bị quá tải hiển thị “Error connecting to database” hoặc “Out of Memory” …

XMLRPC là gì ?

Khi sử dụng wordpress nếu các bạn để ý sẽ thấy tập tin xmlrpc.php nằm ở thư mục gốc của mã nguồn, XML-RPC là một giao thức kết nối với website WordPress từ xa sử dụng XML để trao đổi dữ liệu qua lại. Hiện tại có thể hỗ trợ các API của các CMS như WordPress API, Blogger API, Movable API, Pingback API, MetaWeblog API,Mobile APP, JetPack Plugin …
Các ứng dụng thông chúng ta hay sử dụng XML-RPC như thiết lập đăng bài từ ứng dụng khác như Windows Live Writer, hoặc các dịch vụ kết nối với website để đăng bài như IFTTT.

Tấn công XML-RPC trong wordpress.

Từ khi XML-RPC được sử dụng phổ biến, nó đã bị lợi dụng để thực hiện các cuộc tấn công như HTTP Flood Attack, là một kiểu tấn công DDoS hoặc brute force attack.
Theo như thống kê của sucuri tần suất tấn công XMLRPC trên WordPress ngày càng tăng cao, nhất trong thời gian gần đây.
Do đó, Nếu bạn không có nhu cầu kết nối WordPress đến các dịch vụ hoặc ứng dụng bên ngoài thì hãy vô hiệu hóa XML-RPC để tránh được nguy cơ tấn công theo hình thức này.

Cách nhận biết website bị tấn công XMLRPC

có 2 hướng để kiểm tra,
1: bạn có thể thấy thông báo “Error connecting to database” khi truy cập website.
2: Kiểm tra log website thấy nhiều truy cập tới file xmlrpc có dạng “POST /xmlrpc.php HTTP/1.0”

xxx.xxx.xxx.xxx - - [10/Sep/2016:15:19: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 - - [10/Sep/2016:15:19: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 - - [10/Sep/2016:15:19: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 - - [10/Sep/2016:15:20: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 - - [10/Sep/2016:15:20: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 - - [10/Sep/2016:15:20:52 +0700] "POST /xmlrpc.php HTTP/1.1" 200 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8

XML-RPC attack, Cách hạn chế.

XMLRPC attack để hạn chế tấn công theo hình thức này thì có một cách đơn giản nhất là chặn tập tin này không cho thực thi. Lưu ý các bạn không nên xóa đi vì nó là một phần của mã nguồn WordPress, có thể gây lỗi hoặc khi cập nhật phiên bản nó sẽ có lại nên chặn là cách tối ưu nhất.

Có 2 cách để chặn, cách thứ nhất là CHMOD tập tin này thành 100 hoặc 400, cách thứ hai là không cho webserver thực thi tập tin này thông qua .htaccess (đối với Apache) hoặc NGINX.

Chặn xmlrpc.php trên .htaccess

Nếu bạn dùng Share 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.

 order allow,deny
 deny from all

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.

server {
…
 location /xmlrpc.php {
      deny all;
    }
}

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

service nginx restart

Chặn xmlrpc.php bằng plugin.

Nếu bạn không tiện làm 2 cách trên thì dùng Plugin để hạn chế tấn công

Sử dụng tính năng có sẵn của iThemes Security là việc dễ dàng nhất.

Plugin bảo mật này hầu như là một plugin phải cài khi sử dụng WordPress rồi, nếu bạn chưa cài plugin này thì hãy cài ngay theo hướng dẫn này. Trong plugin này đã có tích hợp sẵn chức năng chặn XML-RPC và chặn Pingback (nên tắt luôn nếu không cần), bạn có thể bật lên tại mục Security -> Settings -> WordPress Tweak và chọn Disable XML-RPC.

Sử dụng Jetpack Plugin

Bằng cách thực hiện các bước để giảm thiểu lưu lượng XML-RPC độc hại, trang web WordPress của bạn sẽ tiêu thụ tài nguyên hệ thống ít hơn. tài nguyên hệ thống mệt mỏi là lý do phổ biến nhất khiến một trang web WordPress sẽ đi offline trên VPS. Các phương pháp ngăn chặn các cuộc tấn công XML-RPC đề cập trong bài viết này cùng với sẽ đảm bảo trang web WordPress của bạn vẫn online.