You are on page 1of 4

A7.

Cross-Site Scripting (XSS)

1. Định nghĩa

XSS là dạng tấn công attacker lợi dụng lỗ hổng kiểm tra dữ liệu đầu vào của webserver để có thể chèn
mã độc thông qua các đoạn script để thực thi ở phía Client. Mục đích chính của cuộc tấn công này là ăn
cắp dữ liệu nhận dạng của người dùng như: cookies, session tokens và các thông tin khác.

2. Các dạng tấn công XSS


2.1. Reflected XSS
 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 được load chung
với doạ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 nạn nhân
 Có nhiều hướng khai thác qua lỗi Reflected Xss, một trong các cách phổ biến 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 quyền điều khiển của họ trên website

2.2. Stored XSS


 Khác với reflected tấn công trực tiếp vào một số nạn nhân mà hacker nhắm đến, Stored
XSS hướng đến nhiều nạn nhân hơn.
 Stored XSS xảy ra khi ứng dụng web không kiểm tra kỹ các dữ liệu đầu vào trước khi lưu
vào cơ sở dữ liệu(vd: form góp ý, comment,…).
 Hacker chèn trực tiếp các mã độc vào CSDL của Website
 Khi người dùng truy cập vào website và thao tác liên quan đến dữ liệu chứa mã độc thì
đoạn mã của hacker sẽ được thực thi trên trình duyệt của người dùng
2.3. Dom Based XSS
 DOM based XSS là kỹ thuật khai thác XSS dựa trên việc thay đổi cấu trúc DOM của tài
liệu, cụ thể là HTML
 DOM based XSS là 1 biến thể của cả persistent và reflected XSS.
 Chuỗi độc hại không thực sự được xử lý bởi trình duyệt nạn nhân cho đến khi JavaScript
hợp pháp của website được thực thi
 DOM based XSS không có lệnh độc hại nào được chèn vào trang. Tập lệnh duy nhất
được tự động thực thi là một phần hợp pháp của trang
 Vấn đề là Tập lệnh hợp pháp này sử dụng dữ liệu người dùng để thêm HTML vào trang,
giúp cho hacker có thể chèn chuỗi độc hại bằng cách sử dụng innerHTML
 DOM based XSS có thể xuất hiện ở cả server-side code và client-side JavaScript code
A8. Insecure Deserialization

1. Định nghĩa Deserialization

Deserialization là quá trình thực hiện lấy dữ liệu từ các định dạng có cấu trúc, khôi phục thông tin
theo byte, XML, JSON,... thành các đối tượng ban đầu( ngược lại với serialization - là quá trình chuyển
đổi trạng thái thông tin của một đối tượng thành một hình thức có thể được lưu trữ hoặc truyền đi)

Dữ liệu khởi tạo ban đầu

Dữ liệu sau khi Serialize

Dữ liệu sau khi Deserialize


2. Lỗ hổng Insecure Deserialization

Insecure Deserialization là lỗ hổng không kiểm tra dữ liệu đầu vào trước khi thực hiện
Deserialization. Dữ liệu không đúng định dạng hoặc dữ liệu không mong muốn có thể bị lợi dụng để thay
đổi luồng xử lý của ứng dụng, hacker có thể tận dụng lỗ hổng này để thực hiện các cuộc tấn công khác
nhau như Injection, Path traversal, Dos, …

Để có thể khai thác lỗ hổng này cần phải có 3 điều kiện sau:

 Điểm đầu vào, là nơi mà kẻ tấn công gửi các dữ liệu đã được serialize đến mục tiêu và mục tiêu
sẽ thực hiện deserialize đoạn dữ liệu này.
 Đối tượng bị tấn công có các lớp sử dụng phương thức Magic method(các hàm được tự động
gọi và thực thi trong 1 số ngữ cảnh vD: __wakeup() , __destruct(), __toString())
 Kẻ tấn công có thể thao túng được một hoặc nhiều phương thức thông qua quá trình
deserialize được gọi là kỹ thuật POP - kết hợp các đoạn mã nguồn trong chương trình(gadget)
với nhau thành một payload hoàn chỉnh (gadget chains) để khai thác

3. Một số dạng tấn công khai thác Insecure Deserialization


 Thay đổi giá trị của một vài thuộc tính, khiến hệ thống hiểu sai và thực hiện những hành vi bất
thường, thay đổi logic xử lý của chương trình
 Tấn công, thao tác với dữ liệu trên hệ thống, với mục tiêu cao nhất là chiếm quyền điều khiển

You might also like