XSS là lỗ hổng bảo mật điển hình của một hệ thống web. Đây là lỗ hổng tương đối đơn giản về mặt bản chất, tuy nhiên lại rất nguy hiểm. Vậy XSS hoạt động như thế nào và làm thế nào để ngăn chặn chúng cách ngăn chặn chúng? Hãy cùng Vietnix tìm hiểu trong bài viết dưới đây.
XSS là gì?
XSS là tên viết tắt của Cross-site scripting. Đây là một hình thức tấn công bằng mã độc phổ biến. Các hacker sẽ lợi dụng lỗ hổng trong bảo mật web để chèn các mã script, sau đó gửi cho người dùng để truy cập và mạo danh người dùng.
Mục đích của việc này chính là ăn cắp dữ liệu nhận dạng của người dùng như session tokens, cookies và các thông tin khác. Khi đăng nhập vào được các tài khoản website, hacker có thể truy cập vào bất cứ dữ liệu nào và toàn quyền kiểm soát tất cả các chức năng và dữ liệu của ứng dụng.
Tấn công XSS là hình thức tấn công đơn giản nhưng đặc biệt nguy hiểm. Đây cũng là kỹ thuật được hacker sử dụng phổ biến nhất trong thời điểm hiện nay.
XSS hoạt động như thế nào?
Tấn công XSS nghĩa là gửi chèn lệnh và script độc hại, những mã đôc hại này thường được viết bằng các ngôn ngữ lập trình phía client như JavaScript, VBScript, Flash, HTML,… Tuy nhiên, cách tấn công này thường sử dụng JavaScript và HTML.
XSS hoạt động bằng cách điều khiển một trang web dễ bị tấn công để trả về JavaScript độc hại cho người dùng. Khi mã độc thực thi bên trong trình duyệt, hacker hoàn toàn có thể xâm nhập vào tài khoản và sử dụng dữ liệu của người dùng.
Các loại tấn công XSS
Có ba loại tấn công XSS chính là:
Reflected XSS
Reflected XSS là hình thức tấn công được sử dụng nhiều nhất. Đây là nơi mã script độc hại đến từ HTTP request. Từ đó, hacker đánh cắp dữ liệu của người dùng, chiếm quyền truy cập và hoạt động của họ trên website thông qua việc chia sẻ URL chứa mã độc. Hình thức này thường nhắm đến ít nạn nhân.
Stored XSS
Stored XSS khác với Reflected XSS, hình thức này nhắm đến nhiều nạn nhân cùng lúc. Đây là nơi script độc hại đến từ cơ sở dữ liệu của trang web. Hacker chèn các mã độc vào cơ sở dữ liệu thông qua các dữ liệu đầu vào như input, form,… Khi người dùng truy cập và tiến hành những thao tác liên quan đến dữ liệu đã lưu thì mã độc sẽ lập tức hoạt động trên trình duyệt.
DOM-based XSS
DOM-based XSS là nơi lỗ hổng bảo mật tồn tại trong mã phía client chứ không phải mã phía server. Hình thức này dùng để khai thác XSS dựa vào việc thay đổi HTML của tài liệu, hay nói cách khác là thay đổi cấu trúc DOM.
XSS có thể làm gì?
Hacker khai thác lỗ hổng XSS trên nhiều trang web thường có thể:
- Mạo danh hoặc giả dạng người dùng của nạn nhân.
- Thực hiện bất kỳ hành động nào mà người dùng có thể thực hiện.
- Đọc bất kỳ dữ liệu nào mà người dùng có thể truy cập.
- Nắm bắt thông tin đăng nhập của người dùng.
- Thực hiện thay đổi bề mặt ảo của trang web.
- Chèn trojan độc hại vào trang web.
>> Xem thêm: Backdoor là gì? Những cách để ngăn chặn backdoor hiệu quả
Tác động của các lỗ hổng XXS
Tác động thực tế của một cuộc tấn công XSS thường phụ thuộc vào bản chất của ứng dụng, chức năng và dữ liệu của ứng dụng cũng như trạng thái của người dùng bị xâm phạm.
Ví dụ:
Trong một ứng dụng brochureware, nơi tất cả người dùng đều ẩn danh và tấn công XSS có thể sẽ làm tất cả thông tin người dùng bị công khai.
Trong một ứng dụng chứa các thông tin bảo mật như giao dịch ngân hàng, email hoặc hồ sơ chăm sóc sức khỏe, tấn công XSS sẽ gây ra những hậu quả nghiêm trọng.
Nếu người dùng bị xâm phạm có các đặc quyền nâng cao trong ứng dụng, thì sẽ ảnh hưởng rất nghiêm trọng. Cho phép hacker có toàn quyền kiểm soát ứng dụng dễ bị tấn công và xâm phạm tất cả người dùng và dữ liệu của họ.
Cách kiểm tra tấn công XXS
Để kiểm thử tấn công XSS, kiểm thử hộp đen có thể được thực hiện. Điều này có nghĩa là chúng ta có thể test mà không cần xem xét code. Tuy nhiên, xem lại code luôn là một việc luôn được khuyến khích nên làm và cũng mang lại kết quả đáng tin cậy hơn.
Khi bắt đầu kiểm tra, người kiểm tra nên xem xét phần nào của trang web dễ bị tấn công XSS. Nên liệt kê trong bất kỳ tài liệu thử nghiệm nào để chắc chắn không có gì bị bỏ sót. Sau đó, người kiểm tra nên lập kế hoạch cho những trường nhập code hoặc script cần được kiểm tra. Kết quả kiểm tra sẽ cho chúng ta biết ứng dụng đó dễ bị tấn công hay không.
>> Xem thêm: PenTest là gì? Tại sao cần kiểm tra thử xâm nhập
Để kiểm tra khả năng bị tấn công, cần phải kiểm tra xem các script đã nhập đang được phản hồi như thế nào và những script đó có được thực thi hay không,…
Ví dụ: Người kiểm tra có thể cố nhập script <script>alert(document.cookie)</script>
Nếu script này đang được thực thi, thì có khả năng rất lớn là XSS có thể xảy ra.
Ngoài ra, trong khi kiểm tra theo cách thủ công về khả năng tấn công Cross Site Scripting, cần nhớ là cũng nên thử các dấu ngoặc được mã hóa.
Ví dụ: người kiểm tra có thể cố gắng nhập tập lệnh trình duyệt như:
%3cscript%3ealert(document.cookie)%3c/script%3e
Một số người cố gắng bảo vệ các trang web và hệ thống khỏi các cuộc tấn công khác nhau bằng cách thay đổi dấu ngoặc thành hai dấu ngoặc.
Ví dụ: Nếu trường đầu vào được nhập bằng dấu ngoặc “<”, thì nó sẽ được đổi thành đôi “<<”. Do đó, thử nghiệm với dấu ngoặc được mã hóa cũng nên được thực hiện.
Kiểm tra URL của trang web.
Ví dụ: Chúng ta có request http://www.testing.com/test.asp?pageid=2&title=Testing%20Title
Nếu cuộc tấn công này có thể xảy ra, thì mã HTML sẽ bao gồm <h1>Tiêu đề test</h1>
. Nếu lỗ hổng bảo mật này xuất hiện trong ứng dụng web, một văn bản được chỉ định sẽ được chèn vào thẻ <h1></h1>
.
Cố gắng chuyển một số mã thông qua yêu cầu HTTP vì đây cũng là một phương pháp để kiểm tra xem liệu cuộc tấn công này có khả thi hay không.
Nhìn chung, khi kiểm tra khả năng tấn công XSS, cần kiểm tra xác thực đầu vào và người kiểm tra cần phải cẩn trọng trong khi kiểm tra output của trang web.
Cách ngăn chặn tấn công XSS
Kiểu tấn công này là một trong những kiểu tấn công có nhiều nguy hiểm và rủi ro nhất. Tuy nhiên, vẫn có rất nhiều cách để ngăn chặn tấn công này. Phương pháp ngăn chặn tấn công XSS bao gồm:
- Data validation.
- Filtering.
- Escaping.
Bước đầu tiên trong việc ngăn chặn cuộc tấn công này là Input validation (Xác thực đầu vào). Mọi thứ do người dùng nhập phải được xác thực chính xác vì thông tin input của người dùng có thể tìm đường đến output. Data validation (Xác thực dữ liệu) có thể được đặt tên là cơ sở để đảm bảo tính bảo mật của hệ thống.
Trên thực tế, việc này chỉ giúp giảm thiểu rủi ro, và có thể không đủ để ngăn chặn tấn công XSS có thể xảy ra.
Một phương pháp ngăn chặn tốt hơn là lọc input filtering (thông tin đầu vào) của người dùng. Ý tưởng của bộ lọc là tìm kiếm các từ khóa gây rủi ro trong thông tin input của người dùng và xóa chúng hoặc thay thế chúng bằng các chuỗi trống. Những từ khóa đó có thể là:
- <script></script> tags.
- Javascript commands.
- HTML markup.
Input filtering cũng là một phương pháp khá dễ thực hiện.
Còn một phương pháp ngăn chặn có thể thực hiện là phương pháp characters escaping. Trong phương pháp này, các ký tự thích hợp đang được thay đổi bằng các code đặc biệt. Ví dụ: Ký tự escaping có thể trông giống như <.
Lời kết
Trên đây là những thông tin về XSS, những rủi ro gặp phải cũng như cách ngăn chặn chúng. Tấn công XSS có thể ảnh hưởng đến các trang web, vì thế việc kiểm tra thường xuyên là rất cần thiết. Hy vọng qua bài viết này có thể giúp bạn đọc có thêm được nhiều thông tin và hữu ích đối với bạn. Đừng quên theo dõi những bài viết tiếp theo của Vietnix nhé!