WhiteHat News #ID:2112
VIP Members
-
16/06/2015
-
83
-
672 bài viết
Nền tảng eBay tồn tại lỗ hổng nghiêm trọng
Check Point vừa phát hiện ra một lỗ hổng nghiêm trọng trong nền tảng bán hàng trực tuyến của eBay. Lỗ hổng này cho phép kẻ tấn công vượt qua cơ chế xác nhận mã hóa của eBay và kiểm soát từ xa đoạn mã có lỗ hổng để thực thi mã Java script độc hại đối với người dùng eBay mục tiêu. Nếu lỗ hổng này không được vá, khách hàng của eBay sẽ tiếp tục có nguy cơ bị tấn công lừa đảo và đánh cắp dữ liệu.
Kẻ tấn công có thể nhắm mục tiêu vào người dùng eBay bằng cách gửi cho họ một trang hợp pháp có chứa mã độc. Khách hàng bị lừa mở trang và mã độc sẽ được thực thi bởi trình duyệt của người dùng hoặc ứng dụng di động, dẫn đến nhiều tình huống đáng ngại từ lừa đảo đến tải về nhị phân.
Sau khi phát hiện lỗ hổng, Check Point đã thông báo chi tiết lỗ hổng cho eBay vào ngày 15/12/2015. Tuy nhiên, vào ngày 16/1/2016, eBay tuyên bố không có kế hoạch vá lỗ hổng. Demo khai thác vẫn hoạt động.
[video=youtube;m4vJxsoYGhY]https://www.youtube.com/watch?v=m4vJxsoYGhY[/video]
[video=youtube;5AK0-p_c0kU]https://www.youtube.com/watch?v=5AK0-p_c0kU[/video]
Phát hiện Lỗ hổng
Nhà nghiên cứu an ninh Roman Zaikin của Check Point gần đây phát hiện một lỗ hổng cho phép kẻ tấn công thực thi mã độc trên thiết bị của người dùng eBay, sử dụng kỹ thuật “JSF**k”. Lỗ hổng này cho phép tội phạm mạng sử dụng eBay như một nền tảng phát tán lừa đảo và mã độc.
Để khai thác lỗ hổng này, tất cả những gì kẻ tấn công cần làm là tạo ra một gian hàng eBay trực tuyến. Trong phần chi tiết của gian hàng, tin tặc đăng tải một mô tả độc hại về sản phẩm. eBay ngăn người dùng thêm vào các script hoặc iFrames bằng cách lọc thẻ HTML. Tuy nhiên, bằng cách sử dụng JSF**k, kẻ tấn công có thể tạo ra một đoạn mã để tải mã JS bổ sung từ máy chủ của mình. Điều này cho phép kẻ tấn công chèn một JavaScript có thể điều khiển từ xa để tạo nhiều đoạn mã cho người dùng khác nhau.
eBay thực hiện bước xác thực đơn giản, loại bỏ các ký tự chữ và số khỏi các thẻ script. Kỹ thuật JSF**k cho phép kẻ tấn công vượt qua bước bảo vệ này bằng cách sử dụng một số lượng ký tự hạn chế.
Đây là những gì nhận được nếu bạn thêm JavaScript vào trang web từ xa:
Đây là script JSF**k:
Đây là khi khai thác thành công lỗ hổng này:
Như đã trình bày, thông điệp hiện ra trong ứng dụng website của eBay (cụ thể, trên gian hàng của kẻ tấn công trên trang web eBay) lôi kéo người dùng tải một ứng dụng di động eBay mới bằng lời mời chào giảm giá một lần.
Ví dụ, nếu chọn nút 'download`, người dùng sẽ vô tình tải một ứng dụng độc hại về thiết bị di động của mình.
Check Point cho rằng ...
"eBay cung cấp cho tội phạm mạng một cách rất dễ dàng để tấn công người dùng: gửi một liên kết về một sản phẩm rất hấp dẫn để thực hiện cuộc tấn công. Mối đe dọa chính là phát tán mã độc và đánh cắp thông tin cá nhân. Một đe dọa khác là kẻ tấn công có thể cài popup đăng nhập thay thế qua Gmail hay Facebook và chiếm đoạt tài khoản của người dùng".
Về JSF**k
Được viết bởi Martin Kleppe, kỹ thuật này, sử dụng các ký tự không phải chữ và số, cho phép kẻ tấn công vượt qua IDS, IPSs và WAFs. Chỉ có 6 ký tự được sử dụng: []()!+
Các từ vựng cơ bản sau sẽ giúp chúng ta viết bất cứ điều gì chúng ta cần:
1. [ and ] - Truy cập phần tử mảng, đối tượng, tài sản, có được số và chuyển các phần tử thành chuỗi.
2. ( and ) - Gọi hàm và tránh lỗi phân tích cú pháp.
3. + – Nối chuỗi, tổng hợp và chuyển phần tử thành số.
4. ! – Chuyển các phần tử thành kiểu Booleans.
Logic hoạt động như thế nào
Hãy bắt đầu bằng các con số sử dụng kỹ thuật này. Nếu muốn nhận được 0, hãy viết + []:
Điều này hoạt động vì chúng tôi in giá trị đầu tiên từ một danh sách rỗng, vì vậy nó là số 0.
Nếu muốn chuyển giá trị đó thành kiểu Boolean "true" hay "false", chỉ cần thêm một dấu chấm than "!":
Nếu chuyển "true" thành một số nguyên, sẽ nhận được số 1.
Để chuyển kiểu Booleans thành các số nguyên, tất cả những gì cần làm là thêm +. Nếu muốn chuỗi, thêm +[] như sau:
Logic rất đơn giản. Nếu muốn con số lớn hơn như 123, chỉ cần viết chuỗi 1,2,3 và chuyển nó thành một số nguyên. Chúng ta có thể viết bất kỳ số nguyên nào với kỹ thuật này.
Để có được ký tự, chúng tôi viết các biểu tượng tương tự và sử dụng mảng đầu ra như sau:
• True - Thu được từ !![]
• False - Thu được từ ![]
• NaN - Thu được từ chuyển một đối tượng thành số: +{}
• “[object Object]” - Thu được từ []+{}
• Undefined - Thu được bằng cách chuyển một phần tử không tồn tại vào một mảng: [][+[]]
Sử dụng các biểu tượng, chúng ta có được các ký tự: “a”, “b”, “c”, “d”, “e”, “f”, “i”, “j”, “l”, “n”, “N”, “o”, “O”, “r”, “s”, “t” và “u”.
Sử dụng bảng chữ cái và các chuỗi, chúng ta có được các hàm sau:
+ Function from array[“sort”][“constructor”]
+ Array from array[“constructor”]
+ Boolean from false[“constructor”]
+ Number from 0[“constructor”]
+ Object from {}[“constructor”]
+ String from string[“constructor”]
+ prototype.call from f[“call”]
+ prototype.concat from string[“concat”]
+ prototype.join from array[“join”]
+ prototype.slice from array[“slice”]
+ prototype.sort from array[“sort”]
Sử dụng DOM giúp chúng ta có được các ký tự còn lại như:
Hàm(“return location”)() cho chúng ta “h”, “p”, “/”, và giờ chúng ta có thể tạo ra một từ.
Unescape(“%” + HEXA_ASCII_VALUE) - Chúng ta thiếu ký tự %, nhưng có thể có được bằng cách thoát khỏi “[“. Điều này cho % 5B.
Mã sau đây đại diện cho văn bản cảnh báo (1) trong thẻ JavaScript:
Kết quả là mã JavaScript bình thường với 6 ký tự không phải chữ cái.
Trách nhiệm công bố và phản ứng của eBay
Báo cáo ban đầu gửi cho eBay là vào ngày 15/12, cùng với PoC và mô tả chi tiết về lỗ hổng.
eBay quyết định đây không phải là một lỗ hổng, vì họ cho phép nội dung hoạt động?
Quay trở lại với nội dung hoạt động. eBay có cho phép nội dung hoạt động, nhưng có một chính sách rất nghiêm ngặt để kiểm soát những gì cho phép.
Như đã trình bày với đội ngũ an ninh của eBay trong PoC, chúng tôi có thể vượt qua các chính sách an ninh của họ và chèn mã độc vào trang bán hàng của chúng tôi mà không có bất kỳ khó khăn hay hạn chế.
Tại thời điểm này, chúng tôi khuyến cáo người dùng sử dung eBay không nên download hoặc cài đặt bất kì ứng dụng nào từ các mặt hàng bán trên eBay, Nên chắc chắn địa chỉ trên trình duyệt web đúng với dịch vụ đang bạn đang sử dụng mới thực hiện các thao tắc như đăng nhập, mua hàng, chuyển tiền. Cho tới khi eBay khắc phục xong lỗ hổng.
Theo: Check Point
Kẻ tấn công có thể nhắm mục tiêu vào người dùng eBay bằng cách gửi cho họ một trang hợp pháp có chứa mã độc. Khách hàng bị lừa mở trang và mã độc sẽ được thực thi bởi trình duyệt của người dùng hoặc ứng dụng di động, dẫn đến nhiều tình huống đáng ngại từ lừa đảo đến tải về nhị phân.
Sau khi phát hiện lỗ hổng, Check Point đã thông báo chi tiết lỗ hổng cho eBay vào ngày 15/12/2015. Tuy nhiên, vào ngày 16/1/2016, eBay tuyên bố không có kế hoạch vá lỗ hổng. Demo khai thác vẫn hoạt động.
[video=youtube;m4vJxsoYGhY]https://www.youtube.com/watch?v=m4vJxsoYGhY[/video]
[video=youtube;5AK0-p_c0kU]https://www.youtube.com/watch?v=5AK0-p_c0kU[/video]
Phát hiện Lỗ hổng
Nhà nghiên cứu an ninh Roman Zaikin của Check Point gần đây phát hiện một lỗ hổng cho phép kẻ tấn công thực thi mã độc trên thiết bị của người dùng eBay, sử dụng kỹ thuật “JSF**k”. Lỗ hổng này cho phép tội phạm mạng sử dụng eBay như một nền tảng phát tán lừa đảo và mã độc.
Để khai thác lỗ hổng này, tất cả những gì kẻ tấn công cần làm là tạo ra một gian hàng eBay trực tuyến. Trong phần chi tiết của gian hàng, tin tặc đăng tải một mô tả độc hại về sản phẩm. eBay ngăn người dùng thêm vào các script hoặc iFrames bằng cách lọc thẻ HTML. Tuy nhiên, bằng cách sử dụng JSF**k, kẻ tấn công có thể tạo ra một đoạn mã để tải mã JS bổ sung từ máy chủ của mình. Điều này cho phép kẻ tấn công chèn một JavaScript có thể điều khiển từ xa để tạo nhiều đoạn mã cho người dùng khác nhau.
eBay thực hiện bước xác thực đơn giản, loại bỏ các ký tự chữ và số khỏi các thẻ script. Kỹ thuật JSF**k cho phép kẻ tấn công vượt qua bước bảo vệ này bằng cách sử dụng một số lượng ký tự hạn chế.
Đây là những gì nhận được nếu bạn thêm JavaScript vào trang web từ xa:
Đây là script JSF**k:
Đây là khi khai thác thành công lỗ hổng này:
Như đã trình bày, thông điệp hiện ra trong ứng dụng website của eBay (cụ thể, trên gian hàng của kẻ tấn công trên trang web eBay) lôi kéo người dùng tải một ứng dụng di động eBay mới bằng lời mời chào giảm giá một lần.
Ví dụ, nếu chọn nút 'download`, người dùng sẽ vô tình tải một ứng dụng độc hại về thiết bị di động của mình.
Check Point cho rằng ...
"eBay cung cấp cho tội phạm mạng một cách rất dễ dàng để tấn công người dùng: gửi một liên kết về một sản phẩm rất hấp dẫn để thực hiện cuộc tấn công. Mối đe dọa chính là phát tán mã độc và đánh cắp thông tin cá nhân. Một đe dọa khác là kẻ tấn công có thể cài popup đăng nhập thay thế qua Gmail hay Facebook và chiếm đoạt tài khoản của người dùng".
Về JSF**k
Được viết bởi Martin Kleppe, kỹ thuật này, sử dụng các ký tự không phải chữ và số, cho phép kẻ tấn công vượt qua IDS, IPSs và WAFs. Chỉ có 6 ký tự được sử dụng: []()!+
Các từ vựng cơ bản sau sẽ giúp chúng ta viết bất cứ điều gì chúng ta cần:
1. [ and ] - Truy cập phần tử mảng, đối tượng, tài sản, có được số và chuyển các phần tử thành chuỗi.
2. ( and ) - Gọi hàm và tránh lỗi phân tích cú pháp.
3. + – Nối chuỗi, tổng hợp và chuyển phần tử thành số.
4. ! – Chuyển các phần tử thành kiểu Booleans.
Logic hoạt động như thế nào
Hãy bắt đầu bằng các con số sử dụng kỹ thuật này. Nếu muốn nhận được 0, hãy viết + []:
Điều này hoạt động vì chúng tôi in giá trị đầu tiên từ một danh sách rỗng, vì vậy nó là số 0.
Nếu muốn chuyển giá trị đó thành kiểu Boolean "true" hay "false", chỉ cần thêm một dấu chấm than "!":
Nếu chuyển "true" thành một số nguyên, sẽ nhận được số 1.
Để chuyển kiểu Booleans thành các số nguyên, tất cả những gì cần làm là thêm +. Nếu muốn chuỗi, thêm +[] như sau:
Logic rất đơn giản. Nếu muốn con số lớn hơn như 123, chỉ cần viết chuỗi 1,2,3 và chuyển nó thành một số nguyên. Chúng ta có thể viết bất kỳ số nguyên nào với kỹ thuật này.
Để có được ký tự, chúng tôi viết các biểu tượng tương tự và sử dụng mảng đầu ra như sau:
• True - Thu được từ !![]
• False - Thu được từ ![]
• NaN - Thu được từ chuyển một đối tượng thành số: +{}
• “[object Object]” - Thu được từ []+{}
• Undefined - Thu được bằng cách chuyển một phần tử không tồn tại vào một mảng: [][+[]]
Sử dụng các biểu tượng, chúng ta có được các ký tự: “a”, “b”, “c”, “d”, “e”, “f”, “i”, “j”, “l”, “n”, “N”, “o”, “O”, “r”, “s”, “t” và “u”.
Sử dụng bảng chữ cái và các chuỗi, chúng ta có được các hàm sau:
+ Function from array[“sort”][“constructor”]
+ Array from array[“constructor”]
+ Boolean from false[“constructor”]
+ Number from 0[“constructor”]
+ Object from {}[“constructor”]
+ String from string[“constructor”]
+ prototype.call from f[“call”]
+ prototype.concat from string[“concat”]
+ prototype.join from array[“join”]
+ prototype.slice from array[“slice”]
+ prototype.sort from array[“sort”]
Sử dụng DOM giúp chúng ta có được các ký tự còn lại như:
Hàm(“return location”)() cho chúng ta “h”, “p”, “/”, và giờ chúng ta có thể tạo ra một từ.
Unescape(“%” + HEXA_ASCII_VALUE) - Chúng ta thiếu ký tự %, nhưng có thể có được bằng cách thoát khỏi “[“. Điều này cho % 5B.
Mã sau đây đại diện cho văn bản cảnh báo (1) trong thẻ JavaScript:
Kết quả là mã JavaScript bình thường với 6 ký tự không phải chữ cái.
Trách nhiệm công bố và phản ứng của eBay
Báo cáo ban đầu gửi cho eBay là vào ngày 15/12, cùng với PoC và mô tả chi tiết về lỗ hổng.
eBay quyết định đây không phải là một lỗ hổng, vì họ cho phép nội dung hoạt động?
Quay trở lại với nội dung hoạt động. eBay có cho phép nội dung hoạt động, nhưng có một chính sách rất nghiêm ngặt để kiểm soát những gì cho phép.
Như đã trình bày với đội ngũ an ninh của eBay trong PoC, chúng tôi có thể vượt qua các chính sách an ninh của họ và chèn mã độc vào trang bán hàng của chúng tôi mà không có bất kỳ khó khăn hay hạn chế.
Tại thời điểm này, chúng tôi khuyến cáo người dùng sử dung eBay không nên download hoặc cài đặt bất kì ứng dụng nào từ các mặt hàng bán trên eBay, Nên chắc chắn địa chỉ trên trình duyệt web đúng với dịch vụ đang bạn đang sử dụng mới thực hiện các thao tắc như đăng nhập, mua hàng, chuyển tiền. Cho tới khi eBay khắc phục xong lỗ hổng.
Theo: Check Point