You are on page 1of 5

Cross site scripting (XSS)

1. Khái niệm:

Slide 1:

Cross site scripting (XSS) là một lỗ hổng của các trang web về cơ bản là do ứng dụng không thể kiểm tra
thông tin đầu vào của người dùng trước khi đưa nó trở lại trình duyệt web của khách hàng. Nếu không
được xác thực đầy đủ, thông tin đầu vào của người dùng có thể bao gồm mã độc hại có thể được gửi đến
các máy khách khác và được trình duyệt của họ thực thi một cách bất ngờ, do đó gây ra một cuộc tấn
công về sự bảo mật. Các ứng dụng web hỗ trợ nhiều hoạt động hàng ngày của chúng ta, nhưng chúng
thường gặp vấn đề về bảo mật và khả năng truy cập khiến chúng dễ bị khai thác.

Vào năm 2006, XSS đã trở thành lớp lớn nhất trong số các lỗ hổng mới được báo cáo, khiến nó trở thành
lớp tấn công phổ biến nhất hiện nay.

Slide 3:

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. Kỹ thuật XSS- kẻ tấn công khai
thác sự tin cậy của máy khách dành cho máy chủ đáng tin cậy và thực thi tập lệnh được chèn trên trình
duyệt với các đặc quyền của máy chủ.

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. Các ứng dụng web có lỗ hổng XSS vì quá trình
xác thực mà chúng thực hiện trên đầu vào không đáng tin cậy không đủ để ngăn đầu vào đó gọi trình
thông dịch JavaScript của trình duyệt nhằm chiếm phiên đăng nhập của người dùng.

Các kỹ thuật để ngăn chặn kiểu tấn công này yêu cầu tất cả đầu vào của ứng dụng phải được kiểm tra và
lọc, mã hóa hoặc xác thực trước khi gửi chúng cho bất kỳ người dùng nào. Để phát hiện ra các lỗ hổng
XSS trong một ứng dụng Web, các kỹ thuật phân tích mã nguồn truyền thống có thể được khai thác.

2. Cách thức diễn ra


Có 3 loại tấn công XSS chính như sau:

a. Reflected XSS
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. Chi tiết được mô tả qua những bước sau:

Bước 1: Người dùng đăng nhập web và giả sử được gán session: (như link 1. Trong slide)
Bước 2: Bằng cách nào đó, hacker gửi được cho người dùng URL:
Giả sử example.com là website nạn nhân truy cập, hacker-site.net là trang của hacker tạo ra (như link
2.trong slide)
Bước 3: Nạn nhân truy cập đến URL trên
Bước 4: Server phản hồi cho nạn nhân, kèm với dữ liệu có trong request (đoạn javascript của hacker)
Bước 5: Trình duyệt nạn nhân nhận phản hồi và thực thi đoạn javascript
Bước 6: Đoạn javascript mà hacker tạo ra thực tế như sau: (như link 6. Trong slide)
Dòng lệnh trên bản chất thực hiện request đến site của hacker với tham số là cookie người dùng
Bước 7: Từ phía site của mình, hacker sẽ bắt được nội dung request trên và coi như session của người
dùng sẽ bị chiếm. Đến lúc này, hacker có thể giả mạo với tư cách nạn nhân và thực hiện mọi quyền trên
website mà nạn nhân có.

b. 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.

Bước 1: Đầu tiên hacker sẽ thông qua các điểm đầu vào (form, input, textarea…) không được kiểm tra kỹ
để chèn vào CSDL các đoạn mã nguy hiểm.
Bước 2+3: Tiếp theo, khi người dùng truy cập vào ứng dụng web và thực hiện các thao tác liên quan đến
dữ liệu được lưu này, đoạn mã của hacker sẽ được thực thi trên trình duyệt người dùng.
Bước 4: Server phản hồi kèm mã đọc của hacker
Bước 5: Mã độc của hacker thực thi trên trình duyệt của user
Bước 6: Session của user sẽ được gửi đến hacker
Bước 7: Hacker chiếm được session của user
-> Từ những điều này có thể thấy Stored XSS nguy hiểm hơn Reflected XSS rất nhiều, đối tượng bị ảnh
hưởng có thế là tất cả nhưng người sử dụng ứng dụng web đó. Và nếu nạn nhân có vai trò quản trị thì còn
có nguy cơ bị chiếm quyền điều khiển web.

. Dom Based XSS


Bước 1: Người dùng đăng nhập
Bước 2: Hacker gửi URL khai thác tới người dùng (gửi form đăng kí bình thường: như hình trong slide)
Bước 3: Người dùng sẽ chẳng chút nghi ngờ với một form “bình thường” như thế này, và khi lựa chọn giới
tính, Script sẽ được thực thi
Bước 4: Server sẽ phản hồi
Bước 5: Script sẽ được thực thi
Bước 6: Session của người dùng sẽ được gửi đến hacker
Bước 7: Hacker sẽ chiếm được session của người dùng

3. Thiệt hại
Người tấn công khai thác các lỗ hổng trên nhiều trang web thì thường gây ra:
 Mạo danh hoặc giả dạng người dùng.
 Thực hiện mọi việc 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 truy cập.
 Nắm bắt thông tin đăng nhập của người dùng.
 Làm ra giao diện ảo của trang web
 Chèn chức năng trojan vào trang web
Trojan (hay Trojan horse), trước hết là một chương trình độc hại cho máy tính, được ngụy trang bằng một
vỏ bọc tưởng chừng vô hại để tạo tin tưởng cho người dùng
An attacker who exploits a cross-site scripting vulnerability is typically able to:
 Impersonate or masquerade as the victim user.
 Carry out any action that the user is able to perform.
 Read any data that the user is able to access.
 Capture the user's login credentials.
 Perform virtual defacement of the web site.
 Inject trojan functionality into the web site.
Mức độ thiệt hại thực tế của một cuộc tấn công XSS thường tùy vào bản chất, chức năng và dữ liệu của
ứng dụng cũng như trạng thái người dùng bị xâm phạm.
Ví dụ:
 Trong một ứng dụng nơi mà tất cả người dùng đều ẩn danh và tất cả thông tin đều được công
khai, thiệt hại sẽ ở mức tối thiểu.
 Trong một ứng dụng chứa dữ liệu nhạy cảm, chẳng hạn như giao dịch ngân hàng, email hoặc hồ
sơ chăm sóc sức khỏe, thiệt hại sẽ nghiêm trọng hơn.
 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ì thiệt hại thường sẽ
rất nghiêm trọng, cho phép kẻ tấn công 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ọ.
The actual impact of an XSS attack generally depends on the nature of the application, its functionality
and data, and the status of the compromised user.
For example:
 In a brochureware application, where all users are anonymous and all information is public, the
impact will often be minimal.
 In an application holding sensitive data, such as banking transactions, emails, or healthcare
records, the impact will usually be serious.
 If the compromised user has elevated privileges within the application, then the impact will
generally be critical, allowing the attacker to take full control of the vulnerable application and
compromise all users and their data.

Nguồn: https://portswigger.net/web-security/cross-site-scripting

4. Biện phát phòng ngừa và phát hiện.


a. Đối với Nhà phát triển ứng dụng / Quản trị viên máy chủ

Cross-site scripting vulnerabilities can be reduced with proper filtration on user-supplied data. All non-
alphanumeric client-supplied data should be converted to HTML character entities before being
redisplayed to a client. Developers can create web applications and test them with Web Inspect to reduce
this monumental task. Web page developers are responsible for modifying their pages to eliminate these
types of problems.

Cross-site scripting có thể được giảm thiểu bằng cách lọc phù hợp trên dữ liệu do người dùng cung
cấp. Tất cả dữ liệu không phải chữ và số do máy khách cung cấp phải được chuyển đổi thành các thực thể
ký tự HTML trước khi được hiển thị lại cho máy khách.

Các nhà phát triển có thể tạo các ứng dụng web và kiểm tra chúng bằng Web Kiểm tra để giảm bớt khả
năng xuất hiện lỗ hổng. Các nhà phát triển trang web có trách nhiệm sửa đổi các trang của họ để loại bỏ
các loại vấn đề này.

b. Đối với Người dùng

The most effective way to prevent cross-site scripting attacks is to disable all scripting languages in their
web browsers. The downside of this is the resulting loss of functionality.

Secondly Don’t click links on untrusted web pages or in unsolicited emails, since the links may not be
what they appear to be. The easiest way to protect yourself as a user is to only follow links from the main
website you wish to view.

Đối với người dùng, cách hiệu quả nhất để ngăn chặn các cuộc tấn công tập lệnh trên nhiều trang là vô
hiệu hóa tất cả các ngôn ngữ tập lệnh trong trình duyệt web của họ. Nhược điểm của điều này là dẫn đến
mất chức năng. Một số trang web sử dụng rất nhiều ngôn ngữ tập lệnh cho chức năng và có thể không
hoạt động bình thường nếu ngôn ngữ tập lệnh đã bị vô hiệu hóa.

Không nhấp vào các liên kết trên các trang web không đáng tin cậy hoặc trong các email không được yêu
cầu, vì các đường liên kết có thể không giống như chúng xuất hiện. Cách dễ nhất để bảo vệ bản thân với
tư cách là người dùng là chỉ theo các liên kết từ trang web chính mà bạn muốn xem.

c. Đối với Các trình duyệt

As most cross-site scripting attacks focus on browser vulnerabilities, users should especially safeguard
their browsers by installing patches for their browser in a timely manner.

If a browser can disallow executing any script from domains other than the one it is visiting, it will
effectively limit the cross-site scripting attacks

Vì hầu hết các cuộc tấn công tập lệnh xuyên trang tập trung vào các lỗ hổng trình duyệt, người dùng đặc
biệt nên bảo vệ trình duyệt của họ bằng cách cài đặt các bản vá cho trình duyệt của họ kịp thời.

Nếu một trình duyệt có thể không cho phép thực thi bất kỳ tập lệnh nào từ các miền khác với miền mà nó
đang truy cập, thì nó sẽ hạn chế hiệu quả các cuộc tấn công cross-site scripting

Nguồn: https://people.cis.ksu.edu/~hankley/d764/Topics/SPIcross-sitescripting.pdf

You might also like