Kiểm tra kịch bản chéo trang web
Cross-site Scripting (XSS) xảy ra bất cứ khi nào ứng dụng lấy dữ liệu không đáng tin cậy và gửi đến máy khách (trình duyệt) mà không cần xác thực. Điều này cho phép những kẻ tấn công thực thi các tập lệnh độc hại trong trình duyệt của nạn nhân, điều này có thể dẫn đến việc chiếm quyền điều khiển phiên người dùng, phá hoại các trang web hoặc chuyển hướng người dùng đến các trang độc hại.
Hãy cho chúng tôi hiểu Tác nhân đe dọa, Vectơ tấn công, Điểm yếu về bảo mật, Tác động kỹ thuật và Tác động kinh doanh của lỗ hổng này với sự trợ giúp của sơ đồ đơn giản.
Các loại XSS
Stored XSS - XSS được lưu trữ còn được gọi là XSS liên tục xảy ra khi đầu vào của người dùng được lưu trữ trên máy chủ mục tiêu như cơ sở dữ liệu / diễn đàn tin nhắn / trường bình luận, v.v. Sau đó, nạn nhân có thể lấy dữ liệu được lưu trữ từ ứng dụng web.
Reflected XSS - XSS được phản ánh còn được gọi là XSS không liên tục xảy ra khi thông tin nhập của người dùng được ứng dụng web trả về ngay lập tức trong thông báo lỗi / kết quả tìm kiếm hoặc thông tin đầu vào do người dùng cung cấp như một phần của yêu cầu và không lưu trữ vĩnh viễn dữ liệu do người dùng cung cấp.
DOM Based XSS - DOM Based XSS là một dạng XSS khi nguồn dữ liệu nằm trong DOM, phần chìm cũng nằm trong DOM và luồng dữ liệu không bao giờ rời khỏi trình duyệt.
Thí dụ
Ứng dụng sử dụng dữ liệu không đáng tin cậy trong việc xây dựng mà không cần xác nhận. Các ký tự đặc biệt phải được thoát.
http://www.webpage.org/task/Rule1?query=try
Kẻ tấn công sửa đổi tham số truy vấn trong trình duyệt của họ thành -
http://www.webpage.org/task/Rule1?query=<h3>Hello from XSS"</h3>
BẬT tay
Step 1- Đăng nhập vào Webgoat và điều hướng đến Phần tạo script trên nhiều trang (XSS). Hãy để chúng tôi thực hiện một cuộc tấn công Stored Cross-site Scripting (XSS). Dưới đây là ảnh chụp nhanh của kịch bản.
Step 2- Theo kịch bản, chúng ta hãy đăng nhập với tên Tom với mật khẩu 'tom' như đã đề cập trong chính kịch bản. Nhấp vào 'xem hồ sơ' và vào chế độ chỉnh sửa. Vì tom là kẻ tấn công, chúng ta hãy đưa tập lệnh Java vào các hộp chỉnh sửa đó.
<script>
alert("HACKED")
</script>
Step 3 - Ngay sau khi cập nhật kết thúc, tom nhận được một hộp cảnh báo với thông báo "bị tấn công" có nghĩa là ứng dụng dễ bị tấn công.
Step 4 - Bây giờ theo kịch bản, chúng ta cần đăng nhập bằng jerry (HR) và kiểm tra xem jerry có bị ảnh hưởng bởi tập lệnh được chèn hay không.
Step 5 - Sau khi đăng nhập với tư cách Jerry, bạn chọn 'Tom' và bấm vào 'xem hồ sơ' như hình bên dưới.
Trong khi xem hồ sơ của tom từ tài khoản của Jerry, anh ấy có thể nhận được hộp thông báo tương tự.
Step 6 - Hộp thông báo này chỉ là một ví dụ, nhưng kẻ tấn công thực sự có thể thực hiện nhiều hơn là chỉ hiển thị một hộp thông báo.
Cơ chế phòng ngừa
Các nhà phát triển phải đảm bảo rằng họ thoát khỏi tất cả dữ liệu không đáng tin cậy dựa trên ngữ cảnh HTML như nội dung, thuộc tính, JavaScript, CSS hoặc URL mà dữ liệu được đặt vào.
Đối với những ứng dụng cần các ký tự đặc biệt làm đầu vào, cần có các cơ chế xác nhận mạnh mẽ trước khi chấp nhận chúng làm đầu vào hợp lệ.