Một ngày nọ, mình nhìn thử log của server thì thấy có tận 1000 requests được thực hiện trong vài phút. Toàn bộ các request này đều được gửi đếp file xmlrpc.php trong wordpress của mình. Vậy xmlrpc.php là gì và tại sao nó lại được nhắm tới trong trường hợp của mình?
1. Chức năng của xmlrpc.php
xmlrpc thực chất là một API chính thức của wordpress. Mục đích chính của API này là để trao đổi thông tin với ứng dụng của bên thứ 3, ví dụ như một ứng dụng đọc và viết blog trên điện thoại, ứng dụng cho desktop. Một số chức năng chính của API này:
- Đăng bài post mới
- Sửa bài
- Xóa bài
- Upload file mới (hình ảnh, nhạc ,…)
- Đọc và đăng bình luận
- Lấy thông tin người dùng
2. Lỗ hổng của xmlrpc
Dù mang lại rất nhiều tính năng, cách hoạt động theo dạng API của xmlrpc cũng tạo ra một vài lỗ hổng
BruteForce attack
Bruteforce là tấn công vét cạn, thử nhiều giá trị với những mục đích khác nhau, mà trong trường hợp này là tìm kiếm password của mình. Đây là cách tấn công khá phổ biến và cũng là cách mà bạn “hacker” nào đó đã sử dụng để cố gắng truy cập server của mình.
Một trong những tính năng của xmlrpc cho phép ứng dụng đăng nhập để lấy thông tin. Thế nhưng khác với ô login của wordpress, API của xmlrpc không giới hạn số lần đăng nhập, khiến cho việc bruteforce rất dễ dàng.
Đây là ví dụ của một lầ đang nhập không thành công
Đây chắc là những gì mà bạn nào đó muốn nhìn thấy
Ping back/callback
Tính năng tiếp theo hay được lợi dụng là ping back API của xmlrpc. API này cho phép bất cứ ai có thể yêu cầu wordpress gửi một request tới địa chỉ bất kỳ. Việc gửi request này có thể được lợi dụng để:
- DDoS: Hacker sẽ gửi yêu cầu pingback tới nhiều server wordpress khác nhau, mỗi server này sẽ gửi một request tới đỉa chỉ nạn nhân. Nạn nhân lúc này sẽ nhận số lượng lớn request từ nhiều server khác nhau
- Vượt DNS của CloudFlare. Đa phần các máy chủ sử dụng CloudFlare (website này là một ví dụ) sẽ được dấu địa chỉ IP phía sau CloudFlare. Việc này có thể ngăn chặn một số cuộc tấn công khi hacker không biết được địa chỉ IP gốc của server.
- XSPA (Cross Site Port Attack):Hacker pingback vào localhost, hoặc server khác trong mạng local. Những port thông thường được đóng với mạng internet vẫn có thể truy cập từ localhost và có thể bị tấn công.
Một request tới từ pingback của wordpress
3. Mình “bị” bruteforce như thế nào?
Nhìn sơ qua log, mình thấy một lượng lớn request vào xmlrpc.php. Điều này chứng tỏ có ai đó đã sử dụng 1 trong những cách trên để tấn công server của mình
Tìm hiểu mục đích
Khi nhìn vào một vài request trước đó, mình thấy 3 request với mục đích liệt kê danh sách user trang blog của mình. Từ đây mình có thể đoán được rằng “hacker” này nhắm vào việc lấy thông tin truy cập của trang blog
Ở 2 request đầu tiên ?author=1 và ?author=2, server sẽ trả về tên của 2 user 1 và 2. Request thứ 3 là một API được sử dụng để liệt kê toàn bộ user trong blog này.
Sau khi có được tên đang nhập của blog, quá trình tấn công bruteforce sẽ bắt đầu với tên đang nhập và một danh sách mật khẩu có sẵn
Vì số lượng request dừng ở 1000 chẵn, mình đoán là script này đã bruteforce với danh sách các password thông dụng nhất.
4. Kết
Đây là một ví dụ điển hình cho thấy việc sử dụng một password mạnh là cần thiết, vì việc bạn bị tấn công có thể xảy ra bất cứ lúc nào.
Blog mình có gì mà hack chứ?? ლ(ಠ_ಠლ)
Nếu bạn thấy có sai sót gì hãy cho mình biết (> ^_^ )>
sai lối chính tả ad ơi =)))