About Me

header ads

Cross-site scripting Attack

Cross-site scripting là gì?

Cross-site scripting - XSS la gi

Cross-site scripting – XSS là một kỹ thuật tấn công bảo mật các trang web nhằm mục đích xâm phạm vào phần chính sách nội dung với tư cách người dùng để truy cập và đánh cắp các dữ liệu quan trọng. Nếu kẻ tấn công lấy được các quyền truy cập riêng tư trong ứng dụng thì mọi chức năng và dữ liệu đều được khai thác toàn bộ.

XSS hoạt động như thế nào?

XSS hoat dong nhu the nao

XSS tự động điều khiển một trang web bất kỳ để chạy mã JavaScript độc hại trong trình duyệt nhằm tấn công các hoạt động trong ứng dụng của người dùng.

Kiểm tra lỗi XSS

Các lỗ hổng XSS được tìm kiếm và phát hiện bằng cách sử dụng hàm alert() để chạy một số mã JavaScript bất kỳ trên trình duyệt.

Đối với trình duyệt Chrome.92 với iframe có khả năng ngăn chặn lệnh gọi alent() nên hàm print() sẽ là một lựa chọn phù hợp hơn.

Các loại XSS phổ biến

Có ba loại tấn công XSS chính:

  • Reflected XSS cung cấp các tập lệnh độc hại từ yêu cầu HTTP hiện tại.
  • Stored XSS là nơi lưu trữ các tập lệnh độc hại từ cơ sở dữ liệu trang web.
  • DOM-based XSS có các lỗ hổng bảo mật tồn tại trong mã máy khách.

Reflected XSS

Reflected XSS là một lỗ hổng bảo mật cơ bản bao gồm các tập lệnh đa trang web xảy ra khi ứng dụng nhận dữ liệu yêu cầu HTTP bất kỳ và phản hồi lại theo cách không an toàn.

Ví dụ:

Một lỗ hổng Reflected XSS:

<p>Status: All is well.</p>

Nếu ứng dụng không có bất cứ dấu hiệu thực hiện xử lý dữ liệu nào thì quá trình tấn công sẽ tiếp tục:

https://insecure-website.com/status?message=<script>/*+Bad+stuff+here...+*/</script>
<p>Status: <script>/* Bad stuff here... */</script></p>

Lúc này khi người dùng truy cập vào URL độc hại đã được thiết lập thì các tập lệnh tấn công sẽ bắt đầu thực thi trong trình duyệt và thực hiện mọi hành động truy xuất dữ liệu quan trọng.

Stored XSS

Stored XSS xảy ra khi ứng dụng nhận các nguồn dữ liệu đáng ngờ và được phản hồi HTTP theo cách không an toàn.

Một số dữ liệu gửi đến ứng dụng thông qua HTTP như chức năng như comment trong blog, nicknames trong messenger hay các thông tin liên hệ khác…Hoặc dữ liệu từ các nguồn đáng ngờ như tin nhắn email trực tuyến qua SMTP, link tiếp thị hoặc các ứng dụng giám sát mạng.

Ví dụ:

Lỗ hổng Store XSS trên ứng dụng gửi tin nhắn:

<p>Hello, this is my message!</p>

Nếu ứng dụng không thực hiện xử lý dữ liệu thì kẻ tấn công sẽ tiến hành gửi thông báo đến người dùng khác:

<p><script>/* Bad stuff here... */</script></p>

DOM-based XSS

Các lỗ hổng XSS dựa trên nền tảng DOM để xâm nhập vào ứng dụng thông qua các mã JavaScript độc hại từ máy khách.

Ví dụ:

Ứng dụng sử dụng JavaScript để đọc các giá trị trong HTML:

var search = document.getElementById('search').value;
var results = document.getElementById('results');
results.innerHTML = 'You searched for: ' + search;

Kẻ tấn công kiểm soát các giá trị này để tạo ra các giá trị độc hại riêng:

You searched for: <img src=1 onerror='/* Bad stuff here... */'>

XSS được sử dụng để làm gì?

Kẻ tấn công sử dụng XSS với mục đích:

  • Mạo danh người dùng để tấn công các quyền truy cập có thể sử dụng.
  • Đọc dữ liệu truy cập sẵn có.
  • Đánh cắp thông tin đăng nhập của người dùng để thay đổi trang web.
  • Chèn chức năng trojan vào trang web.

Tác động của các lỗ hổng XSS

Mức độ tấn công XSS sẽ phụ thuộc vào các yếu tố của ứng dụng như chức năng, dữ liệu hoặc trạng thái như:

  • XSS trong Brochureware sẽ có mức độ tác động tối thiểu nhất bởi tính năng ẩn danh người dùng nhưng toàn bộ thông tin được hiển thị công khai.
  • XSS trong ứng dụng có dữ liệu quản trọng như giao dịch ngân hàng, email hoặc hồ sơ sẽ có mức độ tác động nghiêm trọng.
  • XSS trong ứng dụng có các đặc quyền nâng cao sẽ có mức độ tác động nghiêm trọng nhất bởi các thông tin và dữ liệu cá nhân sẽ dễ dàng bị đánh cắp.

Cách tìm và kiểm tra lỗ hổng XSS

Kiểm tra bằng công cụ

Công cụ trình quét lỗ hổng web của BurpSuite kết hợp phương pháp phân tích tĩnh và động của JavaScript giúp tự động hoá khả năng tìm kiếm các lỗ hổng XSS nhanh chóng và chính xác.

Kiểm tra thủ công

  • Sử dụng phương pháp kiểm tra thủ công để tìm kiếm các lỗ hổng Reflected XSS và Stored XSS bằng cách gửi đầu vào một chuỗi gồm chữ và số vào các mục nhập trong ứng dụng. Sau đó kiểm tra từng vị trí được gửi lại trong phản hồi HTTP để xác định đầu vào đó có thể được sử dụng để thực thi JavaScript tùy ý hay không. Bằng cách này, bạn có thể xác định được quy trình XSS xảy ra và chọn một trọng tải phù hợp để khai thác nó.
  • Kiểm tra DOM-based XSS thông qua các tham số URL bằng cách đặt một đầu vào tương ứng với một tham số và sử dụng công cụ dành cho nhà phát triển để tìm kiếm DOM của chúng. Sau đó hãy kiểm tra từng vị trí để xác định các đầu vào có thể khai thác hay không. Tuy nhiên, phương pháp này không thực sự khả thi đối với các loại lỗ hổng DOM XSS nâng cao khác.

 Chính sách bảo mật nội dung

CSP là chính sách bảo mật nội dung dành cho trình duyệt có khả năng giảm thiểu ảnh hưởng của các lỗ hổng XSS và ngăn chặn hành vi khai thác các dữ liệu bảo mật. Vì thế, kẻ tấn công thường lựa chọn phá vỡ CSP để thực hiện khai thác lỗ hổng cơ bản trên trình duyệt.

Chèn đánh dấu nguy hiểm

Đây là một kỹ thuật thu thập dữ liệu trên nhiều miền được sử dụng trong các trường hợp không thể khai thác XSS do trình duyệt hoặc ứng dụng sử dụng biện pháp lọc đầu vào hoặc bảo vệ nâng cao.

Các thông tin cá nhân, dữ liệu quan trọng và mã thông báo CSRF được khai thác và sử dụng với nhiều mục đích bất hợp pháp.

Cách ngăn chặn các cuộc tấn công XSS

Việc ngăn chặn XSS phụ thuộc vào độ phức tạp và cách xử lý dữ liệu của ứng dụng, sau đây là một số phương pháp dành cho bạn:

  • Lọc đầu vào của các thông tin cá nhân đảm bảo mức độ an toàn cao nhất.
  • Mã hoá dữ liệu đầu ra cho các dữ liệu truy xuất bằng HTML, URL, JavaScript hoặc CSS nhằm ngăn chặn các vấn đề lỗi.
  • Thiết lập danh sách các thẻ HTML được phép sử dụng và xoá bỏ các thẻ lỗi.
  • Sử dụng CSP để giảm thiểu mức độ ảnh hưởng của các lỗ hổng XSS.

Tổng kết về Cross-site scripting – XSS

Như vậy, các lỗ hổng XSS là một vấn đề nguy hiểm đối với trang web và ứng dụng. Vì thế hãy cẩn trọng trong việc xử lý các dữ liệu quan trọng tại đầu vào và đầu ra trên trình duyệt của bạn.

Nếu bạn có thắc mắc về Cross-site scripting hoặc muốn tìm hiểu về cách xử lý những trường hợp bị tấn công XSS hoặc những kiểu tấn công khác, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

Đăng nhận xét

0 Nhận xét