Tấn công xss là gì

Nhiều người nghĩ Cross-Site Scriptingkhông hề nguy hiểm, có lẽ vì họ nghĩ XSS đơn giản chỉ là sử dụng javascript tạo ra một hộp thoại thông báo. Cũng vì lý do đó mà nhiều Web-master thường chủ quan khi không lọc dữ liệu vào – ra (input – output). Trong bài này Bizfly Cloud sẽ tìm hiểu lỗ hổng XSS nó nguy hiểm như thế nào.

Cross-Site Scripting (XSS) là gì?

Cross-Site Scripting (XSS) là một trong những kĩ thuật tấn công phổ biến nhất hiện nay, được liệt vào danh sách những kỹ thuật tấn công nguy hiểm nhất với ứng dụng web.

Cross-Site Scriptinglà một lỗi bảo mật cho phép người tấn công (Attacker, Hacker,…) chèn các đoạn script nguy hiểm vào trong source code ứng dụng web. Nhằm thực thi các đoạn mã độc Javascript để chiếm phiên đăng nhập của người dùng.

Các kiểu khai thác XSS

1. STORED-XSS

Tấn công xss là gì

Stored XSS là dạng tấn công mà hacker chèn trực tiếp các mã độc vào cơ sở dữ liệu của website. Dạng tấn công này xảy ra khi các dữ liệu được gửi lên server không được kiểm tra kỹ lưỡng mà lưu trực tiếp vào cơ sở dữ liệu. Khi người dùng truy cập vào trang web này thì những đoạn script độc hại sẽ được thực thi chung với quá trình load trang web.

Ví dụ như chức năng comment trong blog, website, message... Ví dụ dưới đây minh họa cho Stored-XSS. Để demo mình tạo trang comment dính lỗ hổng bảo mật XSS như sau:

Tấn công xss là gì

Giờ ta thử thay nội dung comment bằng đoạn JavaScript cơ bản để Test XSS:

Tấn công xss là gì

Một hộp thoại thông báo hiện lên, như vậy hệ thống đã dính XSS:

Tấn công xss là gì

Ví dụ 1: Thay đổi toàn bộ liên kết trong một trang web, link sang 1 trang web khác.

Xiaomi ra smartphone trông giống Galaxy Note 7  a>

Chèn mã javascript để thay đổi link:

Tấn công xss là gì

Kết quả:

Tấn công xss là gì

Ví dụ 2: Deface website với XSS

Thay đổi background

Tấn công xss là gì

Kết quả sau khi thay đổi:

Tấn công xss là gì

Mở rộng: 

Trường hợp nếu một trang đăng nhập bị dính lỗi bảo mật XSS sẽ nguy hiểm như nào? Hacker/Attacker có thể thay đổi action sang một tệp PHP khác xử lý các giá trị nhận được bao gồm tài khoản, mật khẩu thậm chí là các thông tin nhạy cảm khác tùy vào nơi dính lỗ hổng XSS là khu vực đăng nhập, đăng ký, thanh toán,… Hacker/Attacker hoàn toàn có thể lưu lại (log) sau đó giả mạo việc đăng nhập bằng cách gửi trả (POST) dữ liệu tới tệp tin xử lý thật của Form ban đầu.

2. Reflected XSS

Khác với Stored-XSS, Reflected-XSS đoạn mã khai thác sẽ không được lưu trữ trên server. Một ví dụ điển hình của Reflected-XSS là kết quả trả về của module search:

Tấn công xss là gì

Reflected XSS là dạng tấn công thường gặp nhất trong các loại hình XSS. Với Reflected XSS, hacker không gửi dữ liệu độc hại lên server nạn nhân, mà gửi trực tiếp link có chứa mã độc cho người dùng, khi người dùng click vào link này thì trang web sẽ được load chung với các đoạn script độc hại. Reflected XSS thường dùng để ăn cắp cookie, chiếm session,… của nạn nhân hoăc cài keylogger, trojan … vào máy tính nạn nhân.

Có nhiều hướng để khai thác thông qua lỗi Reflected XSS, một trong những cách được biết đến nhiều nhất là chiếm phiên làm việc (session) của người dùng, từ đó có thể truy cập được dữ liệu và chiếm được quyền của họ trên website.

Dạng tấn công bằng Reflected XSS được mô tả như sau:

Tấn công xss là gì

Trước tiên, hacker sẽ gửi cho nạn nhân một đường link có chứa mã độc hại đi kèm, ví dụ:

http://victim.com/index.php?id=