CHI TIẾT KĨ THUẬT
WordPress sử dụng hàm PHP vsprintf nhằm chuẩn bị cho một câu lệnh SQL trong $wpdb->prepare(); có nghĩa là câu lệnh SQL sử dụng một đoạn chuỗi kí tự định dạng và giá trị đầu vào là các tham số.$wpdb->prepare và sprintf
Từ đoạn code trên chúng ta nhận thấy một vài thay đổi đã diễn ra với câu truy vấn SQL gốc. Khi phát hiện ra kí tự %s , đoạn code sẽ thay thế bằng ‘%s’ và đưa vào hàm vsprintf. Thông qua cơ chế tráo đổi tham số của hàm sprintf, lỗ hổng có thể được thực hiện như sau:
- Tin tặc đưa đoạn dữ liệu sau vào chuỗi/câu truy vấn được định dạng: [any_text1]%1$%s[any_text2]
- Câu truy vấn sẽ như sau: [querycode1][any_text1]%1$%s[any_text2][querycode2]
- Khi đưa vào hàm chuẩn bị nó sẽ được tha đổi thành: [querycode1][any_text1]%1$’%s'[any_text2][querycode2]
- Câu truy vấn cuối cùng sẽ có dạng: [querycode1][any_text1][first_argument]'[any_text2][querycode2]
http://target.url/2017/01/17/new-one/nggallery/tags/test%251%24%25s))%20or%201=1%23
hoặc
http://target.url/2017/01/17/new-one/nggallery/tags/test%251%24%25s))%20or%201=2%23
Đây là một lỗ hổng nguy hiểm và phổ biến (hơn 1 triệu cài đặ) trong plugin của WordPress. Quản trị viên được khuyến cáo cập nhật plugin thường xuyên lên phiên bản mới nhất.
sucuri