18/09/2018, 11:32

Lỗ hổng SQL Injection trong NextGEN Gallery trên WordPress

Lỗ hổng xảy ra do NextGEN Gallery không kiểm tra dữ liệu người dùng nhập vào, dẫn tới tấn công SQL Injection. Sử dụng mũi tấn công này cho phép ti tặc đánh cắp mật khẩu và khóa bí mật của WordPress trong cấu hình. CHI TIẾT KĨ THUẬT WordPress sử dụng hàm PHP vsprintf nhằm chuẩn bị cho một ...

Lỗ hổng xảy ra do NextGEN Gallery không kiểm tra dữ liệu người dùng nhập vào, dẫn tới tấn công SQL Injection. Sử dụng mũi tấn công này cho phép ti tặc đánh cắp mật khẩu và khóa bí mật của WordPress trong cấu hình.

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 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:

  1. 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]
  2. Câu truy vấn sẽ như sau: [querycode1][any_text1]%1$%s[any_text2][querycode2]
  3. Khi đưa vào hàm chuẩn bị nó sẽ được tha đổi thành: [querycode1][any_text1]%1$’%s'[any_text2][querycode2]
  4. Câu truy vấn cuối cùng sẽ có dạng: [querycode1][any_text1][first_argument]'[any_text2][querycode2]

Dấu sẽ ngắt câu truy vấn và khiến đoạn [any_text2] trở thành truy vấn SQL.

KỊCH BẢN KHAI THÁC

Tin tặc có thể khai thác thông qua phương thức TagCloud như sau:

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

0