XSS là gì? Kỹ thuật tấn công tinh vi của XSS và cách phòng chống
Theo dõi work247 tạiXSS là gì? Đó là một trong những kỹ thuật tấn công thông dụng và rất dễ bị mắc. XSS được đánh giá là một kỹ thuật tấn công có tính chất nguy hiểm lớn, gây ra nhiều hệ lụy. Trong bài viết này, hãy cùng tìm hiểu về cơ chế hoạt động, hậu quả mà XSS mang lại cũng như giải pháp ngăn ngừa tấn công này nhé!
1. Hiểu đúng XSS là gì?
XSS được hiểu là một hình thức tấn công bằng cách chèn mã ngay ở phía người dùng. XSS được tận dụng với mục tiêu thu thập các mã lệnh độc hại trong ứng dụng website của người bị tấn công thông qua hình thức “tiêm” các đoạn mã độc vào. Quá trình tấn công của kỹ thuật này chỉ diễn ra thực sự khi người bị tấn công truy cập vào các ứng dụng hoặc website triển khai các đoạn mã độc.
Ứng dụng hoặc website sẽ trở thành trung gian giúp hacker truyền tải mã độc đến trình duyệt web của client. Các chủ thể trung gian thường xuyên mắc phải lỗ hổng bảo mật thường là các website cho phép thông báo, comment hoặc các diễn đàn tương tác online.
Ứng dụng hoặc website mắc phải XSS nếu chúng sử dụng các thông tin đầu vào từ user mà không được xác nhận chính xác bởi đầu ra. Thông tin đó được phân tích bởi trình duyệt của người bị tấn công. XSS có thể xuất hiện trong hầu hết các ngôn ngữ lập trình, kể cả CSS. Mặc dù vậy, tần suất nhiều nhất vẫn là Javascript, bởi chúng là ngôn ngữ căn bản để lập trình nên những trải nghiệm của user trên mạng.
Xem thêm: Việc làm nhân viên quản trị website
2. XSS không phải là vấn đề của user
Nếu một hacker cố tình làm dụng XSS trên một website để triển khai một mã Javascript ngẫu nhiên trên trình duyệt của user, thì ứng dụng hay bảo mật của trang web đó và cả chính user đã bị tấn công. XSS về bản chất không phải là vấn đề của user. Nếu XSS xâm phạm đến user của bạn, thì chính nó cũng xâm phạm đến bạn.
XSS cũng là kỹ thuật được sử dụng để tấn công giao diện website thay vì chỉ nhắm vào một mục tiêu duy nhất là người dùng. Hacker sử dụng các đoạn mã injection để làm biến đổi nội dung của website hoặc điều hướng chúng đến hẳn một trang web khác.
Xem thêm: Tìm hiểu về lỗ hổng bảo mật và những cách giảm thiểu lỗ hổng
3. Những hệ lụy khi XSS xuất hiện
So với lỗ hổng cực khủng SQL injection, thì XSS được xem là hạn chế về mặt nguy hiểm hơn. Triển khai Javascript trên một website là một hậu quả mà đa phần bạn nghĩ chúng sẽ không quá đáng nói lúc đầu. Thế nhưng, đa phần các trình duyệt chạy nền tảng này trong một không gian được đảm bảo về tính an toán. Nền tảng này đã bị giới hạn truy cập đến hệ điều hành của user và các tập dữ liệu của họ. Thế nhưng, Javascript vẫn có thể rất nghiêm trọng nếu nó bị sử dụng để trở thành những đoạn mã độc.
Javascript ở dạng mã độc có thể truy cập tới toàn bộ những đối tượng là phạm vi còn lại mà website có thể đến được, bao gồm cả tệp dữ liệu của user. Tệp dữ liệu được được sử dụng để lưu trữ các phiên làm việc. Nếu hacker có thể có được phiên làm việc của user, họ có thể làm giả danh tính của user, lạm dụng trong những hành động như trộm cắp thông tin user, dữ liệu có tính nhạy cảm của họ trên chính trang web đó.
Javascript có thể đọc mô hình lập trình ứng dụng của trình duyệt và thiết lập nên các tùy chỉnh cho chúng. Thế nhưng, chỉ có một số phạm vi trên website - nơi mà nền tảng này chạy mà thôi.
Javascript có thể dùng HTML5 APIs trong các trình duyệt hiện đại. Chẳng hạn như Javascript truy cập tới vị trí địa lý của user, âm thanh, hình ảnh và đôi khi là cả những tệp dữ liệu chi tiết trên trên hệ điều hành của user. Nhưng đa phần API đều đòi hỏi cấp quyền truy cập từ user, những hacker vẫn có thể sử dụng một vài kỹ thuật khác để đi xa hơn.
Nếu kết hợp với Social Engineerring, những hacker sẽ triển khai các cuộc tấn công quy mô hơn như trộm tệp tin dữ liệu, danh tính, mật khẩu, phishing,... XSS là lỗ hổng bảo mật có thể cung ứng một nền tảng tuyệt vời để tấn công và phát triển những rủi ro cực kỳ trậm trọng. XSS cũng có thể được được sử dụng với các kỹ thuật tấn công khác, chẳng hạn như CSRF.
4. Kỹ thuật tấn công XSS hoạt động như thế nào?
Một cuộc tấn công XSS có thể được tiến hành qua hai giai đoạn cụ thể.
- Giai đoạn đầu, trong trình duyệt của người bị tấn công, để chạy mã javascript độc hại, hacker cần phải tìm cách để tiêm payload vào website mà người bị tấn công truy cập.
- Giai đoạn tiếp theo, người bị tấn công phải truy cập website với trình duyệt chứa đoạn javascript độc đó. Trong trường hợp XSS nhắm vào một mục tiêu nhất định, hacker có thể sử dụng kỹ thuật phishing hoặc social engineering để truyền một liên kết chứa mã độc đến người bị tấn công.
Với giai đoạn thứ nhất có thể sẽ diễn ra khá thuận lợi, website cần có những danh mục nhập thông tin đầu vào của user. Hacker sau đó bổ sung chuỗi mã độc mà sẽ được dùng trong website, xem đó như là mã nguồn trình duyệt của user. Bên cạnh đó, XSS có một số biến thể cũng được triển khai, trong đó hacker sẽ dụ user truy cập một địa chỉ trang web sử dụng kỹ thuật payload và social engineering là một bộ phận được chứa trong liên kết mà user có thể nhấp vào.
Khi website được tải vào trình duyệt của người bị tấn công, đoạn mã độc của hacker được triển khai lập tức trên trình duyệt của người bị tấn công. Đa phần thì người bị tấn công sẽ không hề nhận biết và phòng tránh được cuộc tấn công này.
Xem thêm: Cyber security là gì? Tầm quan trọng của Cyber security trong IT
5. Sử dụng XSS để đánh cắp dữ liệu Cookies
XSS thường được các tội phạm công nghệ cao sử dụng để trộm cookies. Chúng cho phép hacker mạo danh người bị tấn công trên chính trang web mà họ đang truy cập. Hacker có thể gửi cookies tới hệ thống máy chủ của họ bằng những phương thức khác nhau.
- Hacker tiêm đoạn mã độc vào trong cơ sở dữ liệu của trang web thông qua việc gửi các biểu mẫu comment chứa mã độc.
- Người bị tấn công gửi truy vấn website từ hệ thống web.
- Hệ thống web sẽ phản hồi lại người bị tấn công bằng website được họ yêu cầu chứa mã độc, là một thành phần của HTML.
- Trình duyệt người bị tấn công triển khai các đoạn mã độc chưa payload của hacker trong khối HTML. Lúc này, chúng sẽ gửi cookies của người bị tấn công tới máy chủ của hacker.
- Hacker từ lúc này chỉ cần trích xuất cookies của người bị tấn công khi các truy vấn HTTP được truyền tới hệ thống web.
- Hacker lúc này có thể sử dụng cookies trộm được của người bị tấn công để mạo danh.
6. Các đoạn payload tấn công XSS thường gặp
Các đoạn payload tấn công XSS thường gặp mà một hacker có thể dùng để phá bỏ tính năng bảo mật của một trang web hoặc ứng dụng web.
- Thẻ <script>: payload này được đánh giá là cơ bản nhất. Chúng có thể tham chiếu tới các đoạn Javascript trong hoặc ngoài website.
- Javascript events: Đây cũng là một trong những payload XSS thường gặp và thông dụng nhất. Đặc biệt chúng đóng vai trò như một onerror hoặc onload sử dụng đuộc trong đa dạng các tag.
- Thẻ <body>: Thuộc tính này có thể chứa payload XSS thông qua việc dùng thuộc tính background hoặc event.
- Thẻ <img>: Thuộc tính này có thể chứa đựng một số trình duyệt triển khai các đoạn mã Javascript.
- Thẻ <iframe>: Payload này cho phép bạn nhúng một website HTML khác vào website hiện tại. Thuộc tính này có thể chứa đựng những mã Javascript, tuy nhiên các đoạn mã trong thuộc tính này không thể truy cập tới DOM của website hiện tại do hệ thống bảo mật về nội dung của trình duyệt.
- Thẻ <input>: Trong trường hợp type của thuộc tính này được set hình ảnh, chúng có thể được sử dụng để nhúng một đoạn mã Javascript.
- Thẻ <link>: Thuộc tính này thường được dùng để liên kết đến một website bên ngoài hoặc có thể chứa đựng những đoạn Javascript.
- Ngoài ra còn có các thuộc tính bao gồm: Thẻ <table>, Thẻ <div> và Thẻ <object>.
7. Cách ngăn chặn kỹ thuật tấn công XSS
Mặc dù XSS được xem là kỹ thuật tấn công bao hàm nhiều rủi ro nghiêm trọng. Thế nhưng vẫn nên trang bị một giải pháp để có thể ngăn chặn chúng. Vì sự thông dụng, thường gặp của XSS, do đó có khá nhiều giải pháp để phòng chống nó.
Một số cách thức ngăn ngừa chính được dùng bao gồm: Filtering, Data validation và Escaping.
Xác thực đầu vào là công đoạn trước tiên khi ngăn ngừa XSS. Tất cả thông tin được cung cấp bởi user cần được xác thực cẩn thận, bởi thông tin đầu vào của user có thể tìm hướng đến thông tin đầu ra. Công đoạn này có thể được xem là căn cứ nhằm đề cao tính an toàn và bảo mật của hệ thống. Tuy nhiên xác thực đầu vào không cho phép những dữ liệu không phù hợp. Do đó, chúng chỉ giúp hạn chế những sai sót và rủi ro, có thể không đủ để phòng chống XSS xuất hiện.
Một giải pháp đáng được cân nhắc khác nữa là sàng lọc thông tin đầu vào của user. Ý tưởng này đề cập đến việc khai thác các từ khóa nguy hiểm trong phạm vi nhập của user và điều chỉnh hoặc thậm chí là xóa chúng bằng những khoảng trống. Những từ khóa đó có thể bao gồm: Lệnh mã Javascript, Thẻ <script> </ script>, đánh dấu html.
Sàng lọc thông tin đầu vào khá dễ dàng, chúng có thể được triển khai bằng nhiều cách, ví dụ được thực hiện bởi các nhà phát triển đã viết mã phía hệ thống hay từ thư viện code languages đang sử dụng.
Một số nhà phát triển viết mã riêng để khai thác các từ khóa phù hợp và điều chỉnh hoặc xóa chúng. Thế nhưng, một giải pháp ổn hơn là chọn thư viện code languages để sàng lọc thông tin đầu vào của user. Nhìn chung, việc tận dụng thư viện là an toàn hơn, vì chúng đã được minh chứng qua việc sử dụng của nhiều nhà phát triển.
Escape có thể là một giải pháp khác để ngăn chặn XSS. Thực chất, hệ thống ký tự phù hợp đang được điều chỉnh bởi các mã đặc biệt. Mặt khác, kiểm thử cũng là biện pháp ngăn chặn hữu hiệu. Cần sở hữu một đội ngũ tester có trình độ và kiến thức cũng như một số công cụ kiểm thử hiệu quả. Bằng giải pháp này, phần mềm trước khi được sử dụng sẽ được đảm bảo về mặt chất lượng.
Hy vọng bài viết đã giúp bạn có được thêm nhiều kiến thức xoay quanh khái niệm XSS là gì?
2114 0