Trang thông tin điện tử Công an Bắc Kạn

https://conganbackan.vn

Kiến thức cơ bản về Cross-Site Scripting (XSS): lỗ hổng thú vị mới của hacker

Cross-site scripting (XSS) là một kiểu tấn công bảo mật trong đó kẻ tấn công đưa các tập lệnh độc hại vào phần nội dung của các trang web đáng tin cậy khác.

Trong nhiều năm, lỗ hổng tràn bộ đệm là đích nhắm thú vị của những kẻ tấn công trực tuyến. Nhưng đến nay, cross-site scipting mới là thủ phạm lớn nhất gây ra các vụ phá hoại hệ thống.

Cross-site scripting (XSS) là một kiểu tấn công bảo mật trong đó kẻ tấn công đưa các tập lệnh độc hại vào phần nội dung của các trang web đáng tin cậy khác. Tấn công Cross-site scripting xảy ra khi một nguồn không đáng tin cậy được phép đưa code của chính nó vào một ứng dụng web và mã độc đó được bao gồm trong nội dung gửi đến trình duyệt của nạn nhân.

XSS là một trong những lỗ hổng ứng dụng web phổ biến nhất và xảy ra khi một ứng dụng web sử dụng đầu vào từ người dùng không được xác thực hoặc không được mã hóa trong đầu ra mà nó tạo ra.

Bằng cách tận dụng XSS, kẻ tấn công không nhắm trực tiếp vào nạn nhân. Thay vào đó, kẻ tấn công sẽ khai thác lỗ hổng trong trang web hoặc ứng dụng web mà nạn nhân sẽ truy cập.

Mặc dù XSS có thể tận dụng lợi thế trong VBScript, ActiveX và Flash (hiện được coi là cũ hoặc thậm chí lỗi thời), nhưng phổ biến nhất vẫn là JavaScript - chủ yếu vì JavaScript là nền tảng cho hầu hết các trải nghiệm duyệt web.

Tìm hiểu về Cross-Site Scripting

Cách thức hoạt động của Cross-site Scripting

Để chạy code JavaScript độc hại trong trình duyệt của nạn nhân, trước tiên, kẻ tấn công phải tìm cách truyền payload vào trang web mà nạn nhân truy cập. Tất nhiên, kẻ tấn công có thể sử dụng các kỹ thuật social engineering để thuyết phục người dùng truy cập trang đã bị tấn công đó.

Để một cuộc tấn công XSS diễn ra, trang web bị tấn công cần trực tiếp bao gồm đầu vào của người dùng trong các trang của mình. Kẻ tấn công sau đó có thể chèn một chuỗi sẽ được sử dụng trong trang web và được xử lý dưới dạng code bởi trình duyệt nạn nhân.

Mã giả phía máy chủ (server-side pseudo-code) này được sử dụng để hiển thị bình luận gần đây nhất trên trang web:

print ""  print "
Most recent comment
"  print database.latestComment  print ""

Tập lệnh sẽ in ra bình luận mới nhất từ ​​cơ sở dữ liệu và in nội dung ra trang HTML, giả sử rằng bình luận được in ra chỉ bao gồm phần văn bản.

Trang trên dễ bị tấn công bởi XSS vì kẻ tấn công có thể gửi nhận xét có chứa payload độc hại, chẳng hạn như .

Người dùng truy cập trang web sẽ được hiển thị trang HTML sau.

  
Most recent comment

Khi trang load trong trình duyệt của nạn nhân, tập lệnh độc hại của kẻ tấn công sẽ thực thi, mà người đó không hề hay biết và cũng không thể ngăn chặn cuộc tấn công này.

Lưu ý quan trọng - Lỗ hổng XSS chỉ có thể tồn tại nếu payload (tập lệnh độc hại) mà kẻ tấn công chèn được phân tích (thành HTML trong trường hợp này) trong trình duyệt của nạn nhân.

Điều tệ nhất mà kẻ tấn công có thể làm với JavaScript là gì?

Hậu quả mà những gì kẻ tấn công có thể thực hiện với khả năng thực thi JavaScript trên trang web có thể không dễ nhận thấy ngay, đặc biệt là khi các trình duyệt chạy JavaScript trong môi trường được kiểm soát rất chặt chẽ và JavaScript đã giới hạn quyền truy cập vào hệ điều hành và các file của người dùng.

Tuy nhiên, khi xem xét các phần JavaScript có quyền truy cập, những điều kẻ tấn công có thể làm với JavaScript sẽ trở nên rõ ràng hơn:

  • JavaScript độc hại có quyền truy cập vào tất cả các đối tượng giống nhau trong phần còn lại của trang web, bao gồm quyền truy cập vào cookie. Cookie thường được sử dụng để lưu trữ mã token phiên, nếu kẻ tấn công có thể lấy cookie phiên của người dùng, chúng có thể mạo danh người đó.
  • JavaScript có thể đọc và thực hiện các sửa đổi tùy ý đối với DOM của trình duyệt (trong trang mà JavaScript đang chạy).
  • JavaScript có thể sử dụng XMLHttpRequest để gửi các yêu cầu HTTP có nội dung tùy ý đến các đích khác nhau.
  • JavaScript trong các trình duyệt hiện đại có thể tận dụng các API HTML5 để truy cập vị trí địa lý, webcam, micro và thậm chí các file cụ thể từ hệ thống file của người dùng. Mặc dù hầu hết các API này yêu cầu người dùng chấp nhận, nhưng XSS kết hợp với một số kỹ thuật social engineering thông minh có thể mang lại cho kẻ tấn công nhiều lợi thế.

XSS, kết hợp với social engineering, cho phép kẻ tấn công thực hiện các cuộc tấn công nguy hiểm hơn, bao gồm lấy cắp cookie, keylogging, phishing và lấy cắp danh tính.

Cross-site scripting không phải là vấn đề của người dùng?

Nếu kẻ tấn công có thể lợi dụng lỗ hổng XSS trên trang web để thực thi JavaScript tùy ý trong trình duyệt của khách truy cập, thì bảo mật của trang web, ứng dụng web đó, cũng như người dùng của nó đã gặp nguy hiểm. XSS không phải là vấn đề của người dùng, như mọi lỗ hổng bảo mật khác. Nếu nó ảnh hưởng đến người dùng của một trang web, thì tức là nó sẽ ảnh hưởng đến chính trang web đó.

Phân tích chi tiết một cuộc tấn công Cross-site scripting

Một cuộc tấn công XSS cần ba “diễn viên” - trang web, nạn nhân và kẻ tấn công.

Trong ví dụ dưới đây, có thể giả định rằng mục tiêu của kẻ tấn công là mạo danh nạn nhân bằng cách ăn cắp cookie của người đó. Việc gửi cookie đến máy chủ của kẻ tấn công có thể thực hiện bằng nhiều cách khác nhau. Một trong số đó là để kẻ tấn công thực thi code JavaScript sau trong trình duyệt của nạn nhân thông qua lỗ hổng XSS.

Hình dưới đây minh họa hướng dẫn từng bước của một cuộc tấn công XSS đơn giản.

Kiến thức cơ bản về Cross-Site Scripting (XSS): lỗ hổng thú vị mới của hacker

1. Kẻ tấn công truyền một payload vào cơ sở dữ liệu của trang web bằng cách gửi một biểu mẫu kèm theo một số JavaScript độc hại.

2. Nạn nhân gửi yêu cầu đến trang web.

3. Trang web hiển thị trên trình duyệt của nạn nhân với một phần nội dung HTML chứa payload của kẻ tấn công.

4. Trình duyệt của nạn nhân sẽ thực thi tập lệnh độc hại bên trong HTML. Trong trường hợp này, nó sẽ gửi cookie của nạn nhân đến máy chủ của kẻ tấn công. Kẻ tấn công bây giờ chỉ cần trích xuất cookie của nạn nhân khi yêu cầu HTTP chuyển đến máy chủ, sau đó kẻ tấn công có thể sử dụng cookie đánh cắp được để mạo danh nạn nhân.

Một số ví dụ về vectơ tấn công Cross-site Scripting

Sau đây là danh sách (không đầy đủ) các vectơ tấn công XSS mà kẻ tấn công có thể sử dụng để xâm phạm bảo mật của trang web hoặc ứng dụng web thông qua một cuộc tấn công XSS.

Kiến thức cơ bản về Cross-Site Scripting (XSS): lỗ hổng thú vị mới của hacker - Ảnh minh hoạ 2

Thẻ

Thẻ

Payload XSS có thể được phân phối bên trong thẻ bằng cách sử dụng thuộc tính onload hoặc các thuộc tính khác như thuộc tính background.

Thẻ

Một số trình duyệt sẽ thực thi JavaScript được tìm thấy trong .

Thẻ