Nếu là một nhà quản trị website hoặc một tester thì ắt hẳn thuật ngữ XSS đã không còn quá xa lạ với bạn phải không? Đây là một lỗ hổng bảo mật điển hình trong cơ sở dữ liệu và các hacker thường nhắm đến lỗ hổng này để chiếm quyền điều hướng website. Một khi website hoặc ứng dụng bị tấn công thông qua XSS sẽ gây nên rất nhiều rủi ro về thông tin, dữ liệu của người dùng. Vậy thực chất XSS là gì? Làm sao để truy vết và phòng chống chúng xâm nhập vào website? Cùng LPTech tìm hiểu ở bài viết dưới đây nhé!
XSS là gì?
XSS (Cross Site Scripting) là một trong những hình thức tấn công mạng mà các Tester có lẽ quen thuộc nhất. Tấn công XSS xảy ra khi có lỗ hổng trong việc bảo mật website mà hacker sẽ lợi dụng lỗ hổng này để ngụy trang các mã độc dưới dạng script và tiến hành vượt qua truy cập từ phía Client.
Các hacker lợi dụng hình thức XSS này đa phần để ăn cắp dữ liệu nhận dạng của người dùng như nhận diện session tokens, cookies và một vài thông tin khác. Một khi hacker đã đăng nhập vào những tài khoản nhận diện này, chúng sẽ chiếm quyền kiểm soát tất cả tính năng và dữ liệu sẵn có của ứng dụng.
XSS mặc dù được đánh giá là hình thức tấn công web đơn giản, tuy nhiên nó lại cực kỳ nguy hiểm và được nhiều hacker sử dụng nhất hiện nay.
XSS tấn công như thế nào?
Đúng như tên gọi Cross Site Scripting, XSS sẽ tấn công bằng cách gửi và chèn một số lệnh script độc hại được viết bằng các ngôn ngữ lập trình quen thuộc như JavaScript, HTML, VBScript hay Flash,... Tuy nhiên JavaScript và HTML là hai ngôn ngữ được sử dụng nhiều hơn cả.
Khi hacker đã xác định được website bảo mật kém và dễ dàng tấn công, chúng sẽ tiến hành cài mã độc để 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 sẽ có thể toàn quyền xâm nhập và sử dụng dữ liệu trong ứng dụng của người dùng.
XSS khi tạo được lỗ hổng, hacker sẽ xâm nhập website và có thể:
- Mạo danh danh tính của nạn nhân để thực hiện các thao tác hoặc giao dịch thông qua ứng dụng.
- Truy cập và đọc được các dữ liệu được lưu trữ trong website.
- Biết được thông tin đăng nhập của người dùng.
- Chèn mã độc Trojan vào website.
Một số cách thức tấn công phố biến nhất của XSS:
- Hacker tạo các form thông tin hoặc website giả mạo để dẫn dụ nạn nhân điền thông tin vào.
- Một số website được cài đặt quảng cáo, khi người dùng nhấn vào có thể bị cài mã độc XSS.
- Thông quan các email chứa mã nguồn độc hại. Khi hacker tìm được những lỗ hổng về bảo mật của website, chúng sẽ gửi từng mã lệnh đến người dùng cuối và ngay khi người dùng nhấn vào, website sẽ bị xâm nhập.
Cách thức tấn công XSS phổ biến
Hiện nay, XSS được chia ra làm 3 loại phổ biến nhất bao gồm:
Reflected XSS
Reflected XSS xảy ra khi một ứng dụng nhận dữ liệu trong HTTP request và đưa dữ liệu đó vào phản hồi ngay lập tức theo cách không an toàn. Hình thức này được xem là loại XSS được các hacker sử dụng nhiều nhất. Từ mã độc này, hacker sẽ đánh cắp dữ liệu và thông tin người dùng, sau đó chiếm quyền kiểm soát của họ trên website. Tuy nhiên hình thức này chỉ có thể nhắm đến ít nạn nhân.
Stored XSS
Stored XSS là hình thức tấn công nhắm vào nhiều nạn nhân cùng một lúc bằng cách cài trực tiếp mã độc vào cơ sở dữ liệu của website, thông thường là từ các dữ liệu đầu vào như input, form thông tin,... Ngay khi người dùng thực hiện thao tác liên quan đến các dữ liệu đã bị cài mã độc thì hacker sẽ chiếm được quyền kiểm soát và truy cập website.
Thông thường hình thức tấn công này sẽ xảy ra khi người dùng không kiểm tra kỹ dữ liệu đầu vào, ví dụ như các comment, form thông tin,... Với Stored XSS, hacker phải thực hiện thông qua 2 bước để có thể đánh cắp được dữ liệu của người dùng:
Đầu tiên, hacker sẽ thông qua các dữ liệu đầu vào mà người dùng đã điền để chèn vào CSDL các đoạn mã độc. Sau đó, khi người dùng truy cập vào website/ ứng dụng và thực hiện thao tác liên quan đến các dữ liệu đã được chèn mã độc này, đoạn mã script được chèn sẽ thực thi ngay lập tức trên thiết bị của nạn nhân.
DOM-based XSS
DOM-based XSS là một loại lỗ hổng xuất hiện khi JavaScript lấy dữ liệu từ nguồn do kẻ tấn công kiểm soát, chẳng hạn như URL và chuyển nó đến một bộ đệm hỗ trợ thực thi mã động, chẳng hạn như eval() hoặc innerHTML. Điều này cho phép kẻ tấn công thực thi JavaScript độc hại, thường cho phép chúng chiếm đoạt tài khoản của người dùng khác.
DOM-based XSS đến từ phía máy khách chứ không phải máy chủ. Hình thức XSS này xâm nhập dữ liệu dựa vào sự thay đổi địa chỉ HTML, cụ thể hơn chính là thay đổi cấu trúc DOM.
Các bài kiểm tra XSS
Để kiểm tra và truy vết sớm các lỗ hổng truy cập XSS, người dùng có thể thực hiện bài kiểm tra cho website thông qua hộp đen hoặc qua các đoạn code.
Kiểm tra thông qua hộp đen
Black-box testing hay kiểm tra tấn công XSS qua hộp đen nghĩa là bạn không cần phải kiểm tra code. Khi bắt đầu, bạn cần kiểm tra xem phần nào của website dễ bị tấn công XSS nhất và liệt kê đầy đủ để chắc rằng không một khía cạnh nào trên web bị bỏ sót. Sau đó, bạn hãy có kế hoạch kiểm tra hộp đen của những trường khía cạnh đã liệt kê và kết quả sẽ cho bạn biết rằng ứng dụng/ website đó có dễ bị tấn công hay không.
Kiểm tra qua các đoạn code
Cũng tương tự như cách kiểm tra hộp đen kia, sau khi đã liệt kê được những khía cạnh dễ bị tấn công nhất, bạn cần tiến hành kiểm tra code của chúng. Để kiểm tra khả năng bị tấn công, bạn cần xem xét các script đã nhập phản hồi thế nào và có thực thi theo lệnh hay không.
Ví dụ: Khi bạn nhập đoạn script <script>alert(document.cookie)</script>. Nếu lúc này script được thực thi thì khả năng cao website của bạn đã bị tấn công bởi mã độc XSS.
Cách ngăn chặn XSS như thế nào?
XSS vẫn là một mối nguy hại đáng lo của các nhà quản trị web vì chúng mang đến rất nhiều rủi ro. Do đó, việc chuẩn bị một số kế hoạch ngăn chặn sự tấn công của XSS là điều cần thiết.
Hiện nay, thông thường các nhà quản trị website sẽ sử dụng 3 phương pháp sau đây để ngăn chặn XSS:
Data validation
Dù với phương pháp nào đi chăng nữa, bước đầu tiên để ngăn chặn xâm nhập XSS đó là người dùng cần xác thực dữ liệu đầu vào (Input validation). Mọi thông tin khi bạn nhập vào cần phải được xác thực vì tất cả thông tin này cần phải dẫn đến dữ liệu đầu ra. Do đó, data validation được xem là cơ sở, nền tảng quan trọng nhất để đảm bảo tính bảo mật của hệ thống website ứng dụng.
> Tìm hiểu thêm về cách sử dụng session (phiên) sau khi xác thực dữ liệu thành công: Session là gì? Cách phân biệt giữa session và cookie
Filtering
Mặc dù xác thực dữ liệu đầu vào có thể phần nào ngăn chặn tấn công XSS, tuy nhiên chúng không đủ hiệu quả nếu mã độc XSS được code tinh vi.
Lúc này, phương pháp Filtering (Lọc thông tin đầu vào) được đánh giá là có khả năng ngăn chặn tốt hơn. Bộ lọc này tìm kiếm các từ khóa có khả năng gây nên rủi ro trong thông tin input của người dùng và xóa hoặc thay thế chúng bằng những chuỗi ký tự trống.
Một số từ khóa tiềm ẩn rủi ro tấn công XSS có thể là:
- <script></script> tags.
- Javascript commands.
- HTML markup.
Escaping
Đây là một phương pháp ngăn chặn XSS khá đặc biệt. Với phương pháp này, các ký tự thích hợp, sẽ được thay thế bằng một số đoạn code đặc biệt, ví dụ: ký tự ‘escaping’ có thể được thay thế bằng ‘<’.
Qua bài viết trên đây, LPTech đã giải đáp cho bạn thắc mắc về khái niệm tấn công XSS là gì và các mối nguy hại khi website bị chúng tấn công. XSS là một hình thức tấn công mạng rất phổ biến hiện nay và ảnh hưởng nặng nề đến trang web của bạn. Do đó, hãy chuẩn bị cho mình các kiếm thức kiểm tra và ngăn chặn tấn công từ XSS nhé. Hy vọng bài viết hôm nay đã mang đến cho bạn thật nhiều thông tin bổ ích.
Thông tin liên hệ
Nếu bạn có thắc mắc gì, có thể gửi yêu cầu cho chúng tôi, và chúng tôi sẽ liên lạc lại với bạn sớm nhất có thể .
Công ty TNHH TMĐT Công nghệ LP
Giấy phép kinh doanh số 0315561312/GP bởi Sở Kế Hoạch và Đầu Tư TP. Hồ Chí Minh.
Văn phòng: Lầu 4, Toà nhà Lê Trí, 164 Phan Văn Trị, Phường 12,Quận Bình Thạnh, HCMC
Hotline: 0338 586 864
Mail: sales@lptech.asia
Zalo OA:LP Tech Zalo Official
Zalo Sales:033 85 86 86 64 (Sales)