Rate this post

Lỗ hổng chèn JavaScript là một loại phụ của tập lệnh trang web chéo (XSS) liên quan đến khả năng chèn mã JavaScript tùy ý được ứng dụng bên trong trình duyệt của nạn nhân thực thi. Lỗ hổng này có thể gây ra nhiều hậu quả, chẳng hạn như việc tiết lộ cookie phiên của người dùng có thể được sử dụng để mạo danh nạn nhân hoặc nói chung hơn, nó có thể cho phép kẻ tấn công sửa đổi nội dung trang mà nạn nhân nhìn thấy hoặc hành vi của ứng dụng.

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

Các lỗ hổng chèn JavaScript có thể xảy ra khi ứng dụng thiếu xác thực đầu vào và đầu ra do người dùng cung cấp. Vì JavaScript được sử dụng để tự động điền các trang web, việc chèn này xảy ra trong giai đoạn xử lý nội dung này và do đó ảnh hưởng đến nạn nhân.

Khi kiểm tra lỗ hổng bảo mật này, hãy xem xét rằng một số ký tự được các trình duyệt khác nhau xử lý khác nhau. Để tham khảo, hãy xem XSS dựa trên DOM.

Đây là một ví dụ về một tập lệnh không thực hiện bất kỳ xác nhận nào của biến rr. Biến chứa đầu vào do người dùng cung cấp thông qua chuỗi truy vấn và ngoài ra, không áp dụng bất kỳ hình thức mã hóa nào:

var rr = location.search.substring(1);
if(rr)
    window.location=decodeURIComponent(rr);

Điều này ngụ ý rằng kẻ tấn công có thể chèn mã JavaScript chỉ bằng cách gửi chuỗi truy vấn sau: www.victim.com/?javascript:alert(1).

Làm thế nào để kiểm tra

Ví dụ: hãy xem xét URL sau: http://www.domxss.com/domxss/01_Basics/04_eval.html

Trang này chứa tập lệnh sau:

<script>
function loadObj(){
    var cc=eval('('+aMess+')');
    document.getElementById('mess').textContent=cc.message;
}

if(window.location.hash.indexOf('message')==-1)
    var aMess="({\"message\":\"Hello User!\"})";
else
    var aMess=location.hash.substr(window.location.hash.indexOf('message=')+8);
</script>

Đoạn mã trên chứa một địa chỉ nguồn (source location.hash) được kiểm soát bởi kẻ tấn công có thể đưa trực tiếp vào giá trị thông báo một Mã JavaScript để kiểm soát trình duyệt của người dùng.

Leave a Reply

Call now
%d bloggers like this: