1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu phương pháp phát hiện tấn công web dựa trên mô hình học sâu cnn

64 2 0

Đ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 đề Nghiên Cứu Phương Pháp Phát Hiện Tấn Công Ứng Dụng Web Sử Dụng Học Sâu CNN
Tác giả Lê Ngọc Khoa
Người hướng dẫn PGS.TS Hoàng Xuân Dậu
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Khoa học máy tính
Thể loại Đề án tốt nghiệp thạc sĩ kỹ thuật
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 64
Dung lượng 2,19 MB

Nội dung

Chương 1: Các phương pháp tấn công ứng dụng web và phòng chống:chương này đưa ra khái niệm cơ bản về ứng dụng web, các phương pháp tấn công,một số lỗ hổng bảo mật và các phương pháp được

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

Trang 3

LỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của riêng tôi

Các số liệu, kết quả nêu trong đề án tốt nghiệp là trung thực và chưa từng được aicông bố trong bất kỳ công trình nào khác

Tác giả đề án tốt nghiệp

LÊ NGỌC KHOA

Trang 4

MỤC LỤC

LỜI CAM ĐOAN

MỤC LỤC

DANH MỤC CHỮ VÀ KÍ HIỆU VIẾT TẮT

DANH MỤC BẢNG BIỂU

DANH MỤC HÌNH VẼ

LỜI MỞ ĐẦU

CHƯƠNG 1 CÁC PHƯƠNG PHÁP TẤN CÔNG ỨNG DỤNG WEB VÀ PHÒNG CHỐNG

1.1 Tổng quan về ứng dụng web 3

1.1.1 Ứng dụng web là gì? 3

1.1.2 Mô hình client – server của ứng dụng web 3

1.1.3 Giao thức HTTP/HTTPS 5

1.2 Các lỗ hổng bảo mật trong ứng dụng web 7

1.2.1 Lỗ hổng bảo mật ứng dụng web là gì? 7

1.2.2 Top 10 lỗ hổng, rủi ro theo OWASP [16] 8

1.2.3 Một số lỗ hổng bảo mật Web phổ biến 12

1.3 Phương pháp phát hiện và phòng chống tấn công ứng dụng web 18

1.4 Kết chương 22

CHƯƠNG 2 PHÁT HIỆN TẤN CÔNG WEB SỬ DỤNG HỌC SÂU

2 1 Khái quát về học máy và học sâu 23

2.1.1 Khái quát về học máy 23

2.1.2 Khái quát về học sâu 26

2.1.3 Một số phương pháp học sâu 28

2 2 Phát hiện tấn công ứng dụng web dựa trên mô hình học sâu CNN 32

2.2.1 Giới thiệu mô hình 33

2.2.2 Các giai đoạn xử lý 33

2.2.3 Tiêu chuẩn đánh giá mô hình 35

2 3 Kết chương 36

Trang 5

CHƯƠNG 3 THỬ NGHIỆM VÀ ĐÁNH GIÁ

3.1 Tập dữ liệu thử nghiệm 37

3.2 Tiền xử lý dữ liệu 38

3.3 Huấn luyện và kiểm tra 39

3.3.1 Môi trường thử nghiệm 39

3.3.2 Kết quả và nhận xét 39

3.4 Cài đặt thử nghiệm mô đun phát hiện tấn công ứng dụng web 41

3.4.1 Mô hình phát hiện tấn công ứng dụng web 41

3.4.2 Tích hợp mô hình xử lý vào ứng dụng web 41

3.4.3 Một số kết quả 43

3.5 Kết chương 48

KẾT LUẬN

DANH MỤC TÀI LIỆU THAM KHẢO

Trang 6

DANH MỤC CHỮ VÀ KÍ HIỆU VIẾT TẮT

AI Artificial intelligence Trí tuệ nhân tạo

ANN Artificial Neural Network Mạng nơ-ron nhân tạoAPI Application ProgrammingInterface Giao diện lập trình ứng dụng

CNN Convolutional NeuralNetwork Mạng nơ-ron tích chậpCSRF Cross site request forgery Một loại lỗ hổng webCVE Common Vulnerabilities andExposures Danh sách lỗ hổng bảo mật

FTP File Transfer Protocol Giao thức truyền tải tập tinHTML HyperText MarkupLanguage HyperText Markup LanguageHTTP HyperText Transfer Protocol Giao thức truyền tải siêu vănbảnHTTPS HyperText Transfer ProtocolSecure Giao thức bảo mật HTTP antoànIDS Intrusion Detection System Hệ thống phát hiện xâm nhậpIPS Intrusion Prevention System Hệ thống phát hiện xâm nhậpvà ngăn chặnLDAP Lightweight DirectoryAccess Protocol Giao thức ứng dụng truy cậpcác cấu trúc thư mụcLFI Local File Inclusion Một loại lỗ hổng webLSTM Long Short Term Memorynetworks Mạng bộ nhớ ngắn dài

OWASP Open Web ApplicationSecurity Project Dự án nguồn mở về bảo mậtứng dụng web

RFI Remote File Inclusion Một loại lỗ hổng webRNN Recurrent neural networks Mạng nơ ron hồi quySQL Structured Query Language Ngôn ngữ truy vấn có cấu trúc

Trang 7

SSRF Server Side Request Forgery Một loại lỗ hổng webSVM Support vector machine Thuật toán học máyTF-IDF Term Frequency - InverseDocument Frequency Mô hình trích xuất đặc trưngURL Uniform resource locator Địa chỉ định vị tài nguyênthống nhấtWAF Web Application Firewall Tường lửa ứng dụng webXSS Cross-Site Scripting Một loại lỗ hổng web

Trang 8

DANH MỤC BẢNG BIỂU

Bảng 2- 1 Dữ liệu huấn luyện cho bài toán phân loại Bảng 2- 2 Bảng dữ liệu về giới tính, tuổi của bệnh nhân Bảng 3- 1 Môi trường thử nghiệm mô hình học sâu CNN phát hiện tấn công web 39Bảng 3- 2 Kết quả thử nghiệm với mô hình học sâu CNN 40Bảng 3- 3 So sánh hiệu suất phát hiện tấn công web dựa trên CNN trong đề án và dựa trên học máy truyền thống trong [3] 41

Trang 9

DANH MỤC HÌNH VẼ

Hình 1- 1 Mô hình client- server của một ứng dụng web

Hình 1- 2 Quy trình gửi nhận dữ liệu trong mô hình Client-Server

Hình 1- 3 Ví dụ về yêu cầu HTTP

Hình 1- 4 Ví dụ về phản hồi HTTP

Hình 1- 5 Ví dụ unstrusted data tồn tại ở biến username trong trường cookie thuộc header của truy vấn HTTP

Hình 1- 6 Khai thác lỗ hổng SQL Injection

Hình 1- 7 Lợi dụng lỗ hổng SQL Injection để vượt qua khâu xác thực

Hình 1- 8 Khai thác lỗ hổng Path Traversal đọc file nhạy cảm

Hình 2- 1 Kiến trúc mạng neuron ……… 28

Hình 2- 2 Tương quan mạng ANN và DNN

Hình 2- 3 Minh họa cơ chế tích chập

Hình 2- 4 Làm mờ bức ảnh

Hình 2- 5 Phát hiện các cạnh trong hình ảnh

Hình 2- 6 Mô hình phát hiện tấn công ứng dụng web sử dụng học sâu CNN

Hình 2- 7 Confusion matrix đánh giá độ chính xác mô hình học sâu

Hình 3- 1 Một số payload được gán nhãn “norm” 37

Hình 3- 2 Một số payload tấn công được gán nhãn “sqli”, “xss”, “path-traversal” 38

Hình 3- 3 Từ điển được xây dựng từ tập dữ liệu huấn luyện 38

Hình 3- 4 Ví dụ payload được vector hóa 39

Hình 3- 5 Quá trình huấn luyện dữ liệu 40

Hình 3- 6 Sơ đồ mô hình phát hiện tấn công ứng dụng web 41

Hình 3- 7 Cơ chế hoạt động của Django 42

Hình 3- 8 Cấu trúc ứng dụng web 43

Hình 3- 9 Mẫu thử “khoaln” cho kết quả hợp lệ 44

Hình 3- 10 Mẫu thử “admin_union_select” cho kết quả hợp lệ 45

Hình 3- 11 Mẫu thử “user123” cho kết quả hợp lệ 45

Trang 10

Hình 3- 12 Mẫu thử “etcpass” cho kết quả hợp lệ 45

Hình 3- 13 Mẫu thử “script_alert” cho kết quả hợp lệ 46

Hình 3- 14 Mẫu thử “admin’ or 1=1 -“ cho kết quả SQL Injection 46

Hình 3- 15 Mẫu thử “admin'><script>alert(1)</script>” cho kết quả XSS 46

Hình 3- 16 Mẫu thử “test' union select 1,2,3 -“ cho kết quả SQL Injection 47

Hình 3- 17 Mẫu thử “ / / /etc/passwd” cho kết quả Path Traversal 47

Hình 3- 18 Mẫu thử “<script>alert(document.domain)</script>” cho kết quả XSS 47

Trang 11

LỜI MỞ ĐẦU

Sự phát triển của công nghệ thông tin trong thời đại cách mạng 4.0 đang ngàycảng trở nên mạnh mẽ Công nghệ đã và đang "phủ sóng" vào từng ngóc ngách củađời sống, tác động mạnh mẽ đến các lĩnh vực cốt lõi của xã hội như quốc phòng anninh, y tế, giáo dục, quản lý hành chính Các ứng dụng web cũng đang đóng vai tròquan trọng giúp người dùng dễ dàng tiếp cận với các nền tảng, ứng dụng phục vụ nhucầu công việc và các tiện ích cuộc sống Chính vì sự phổ biến của các ứng dụng web,yêu tố bảo mật và phòng chống tấn công được các tổ chức doanh nghiệp hết sức coitrọng

Hiện nay, để đảm bảo an toàn cho các ứng dụng web các tổ chức doanh nghiệp

đã kết hợp nhiều giải pháp an toàn bảo mật cùng với sự quản trị bởi các chuyên giatrong lĩnh vực an toàn thông tin Tuy nhiên, tình trạng tội phạm mạng ngày càng giatăng với việc các tin tặc sử dụng các kỹ thuật tinh vi nhằm vượt qua các lớp bảo mật.Giải pháp sử dụng học sâu trong an toàn thông tin đang được nghiên cứu và pháttriển với độ chính xác cao

Để giải quyết vấn đề phát hiện tấn công ứng dụng web, đề án này sử dụng họcsâu (deep learning) để phát hiện các truy vấn HTTP tấn công Học sâu là một chứcnăng của trí tuệ nhân tạo (AI), bắt chước hoạt động của bộ não con người trong việc

xử lí dữ liệu và tạo ra các mẫu để sử dụng cho việc ra quyết định Ứng dụng của họcsâu đã mạng lại hiệu quả cao trong nhiều nhiệm vụ phân loại và nhận dạng trong cáclĩnh vực xử lý ngôn ngữ tự nhiên (natural language processing) và thị giác máy tính(computer vision)

Đề án tập trung xây dựng mô hình phát hiện tấn công ứng dụng web dựa trênhọc sâu với nội dung được phân bổ trong 3 chương

Trang 12

Chương 1: Các phương pháp tấn công ứng dụng web và phòng chống:

chương này đưa ra khái niệm cơ bản về ứng dụng web, các phương pháp tấn công,một số lỗ hổng bảo mật và các phương pháp được sử dụng để phòng chống tấn công

Chương 2: Phát hiện tấn công web sử dụng học sâu: chương này trình bày

tổng quan về học máy, học sâu, một số mô hình học sâu Bên cạnh đó, mô hìnhConvolution Netural Network trong bài toán phát hiện tấn công ứng dụng web sẽđược trình bày cụ thể trong chương này

Chương 3: Thử nghiệm và đánh giá: với tập dữ liệu lớn mô hình sẽ được cài

đặt và thử nghiệm để đưa ra các kết quả và có những đánh giá về hiệu quả của môhình

Trang 13

WEB VÀ PHÒNG CHỐNG 1.1 Tổng quan về ứng dụng web

1.1.1 Ứng dụng web là gì?

Ngày nay, với xu hướng phát triển mạnh mẽ của công nghệ số các cơ quan tổchức, doanh nghiệp tăng cường truyền thông quảng bá hình ảnh trên không gianmạng Ứng dụng web nổi lên như một phương thức được sử dụng phổ biến giúp choviệc tiếp cận người dùng, khách hàng dễ dàng hơn Một số ứng dụng web phổ biến,quen thuộc nhất có thể kể đến như facebook.com, youtube.com, google.com, Khôngchỉ giới hạn trong giải trí, mà ứng dụng web còn lan rộng vào nhiều lĩnh vực quantrọng như tài chính, ngân hàng, bất động sản, y tế, giáo dục và mua sắm Ứng dụngweb là một yếu tố cốt lõi của cuộc cách mạng công nghệ 4.0, đóng vai trò quan trọngtrong việc giúp con người nắm bắt thông tin và dữ liệu một cách nhanh chóng và hiệuquả

1.1.2 Mô hình client – server của ứng dụng web

Mô hình cơ bản nhất của ứng dụng web:

Trang 14

Hình 1- 1 Mô hình client- server của một ứng dụng web [6]

Mô hình client- server là một trong những mô hình phổ biến nhất tại thời điểmhiện tại Không chỉ mang lại tính sẵn sàng cao, mô hình này cũng có khả năng mởrộng và phân phối nội dung tuyệt vời, chỉ cần người dùng có kết nối internet

Trong mô hình, server được hiểu như web server- máy chủ web Máy chủ web

là thành phần cốt lõi để website hoạt động, bao gồm các thành phần con như cơ sở dữliệu, các đoạn mã, tập lệnh và một số thành phần khác Máy chủ web sẽ có vai tròphân tích và xử lý yêu cầu của client, đồng thời phân phối nội dung đến client thôngqua các phương thức như HTTP (Hypertext Transfer Protocol) hoặc phương thứctruyền file như FTP (File Transfer Protocol)

Đối với client, máy khách trong mô hình web client-server,có thể nói là một ứngdụng hoặc trình duyệt web (như Chrome, Opera, Firefox, Safari…) được sử dụng đểtương tác với các máy chủ Web theo yêu cầu của người dùng thông qua Internet Về

cơ bản, máy khách là một ứng dụng để gửi và nhận dữ liệu từ máy chủ

Việc giao tiếp giữa Client và Server được thực hiện theo các gói tin HTTP Đầutiên, Client sẽ gửi một yêu cầu ( HTTP request), mô tả công việc tới server Khi yêu

Trang 15

cầu HTTP được gửi đến, server dựa vào thông tin trong yêu cầu để xác định công việccần phải thực thi Sau đó, Server sẽ phản hồi cho client trong một gói tin HTTP trả lời(HTTP response)

Tổng quan quá trình gửi - nhận dữ liệu có thể mô tả bằng lược đồ như sau:

Thông thường, cổng được sử dụng trong ứng dụng web là cổng 80 (HTTP) hoặcHTTPS (443) Máy chủ HTTP tiếp nhận yêu cầu để xử lý

Trang 16

Các thành phần trong HTTP request có chứa đầy đủ các thành phần về kết nối

và các thông tin cần truy vấn như:

- HTTP version : Phiên bản giao thức HTTP được sử dụng

- HTTP method : Phương thức được sử dụng trong yêu cầu, có thể là GET,POST, PUT, DELETE, OPTION,

- URL : URL

- Host : domain của ứng dụng web

- Cookie : Thông tin về phiên làm việc của client và server

- User-agent : Thông tin về trình duyệt (client) được sử dụng trong request.Sau khi xử lý yêu cầu, máy chủ phản hồi lại cho máy khách một HTTP response

có định dạng như sau:

Hình 1- 3 Ví dụ về yêu cầu HTTP

Trang 17

 300 – 399: Điều hướng gói tin

 400 – 499: lỗi phía máy khách

 500 – 599: lỗi phía máy chủ

Thông tin server: Một số máy chủ như apache, tomcat, nginx,

Content – Length: Độ dài nội dung gói tin phản hồi HTTP

Hình 1- 4 Ví dụ về phản hồi HTTP

Trang 18

Giao thức HTTP này cũng nằm trong số các giao thức dễ bị tấn công trong ứngdụng web Vì vậy, nên sử dụng giao thức HTTPS thay thế nhằm đảm bảo tính bảomật của thông tin truyền đi.

1.2 Các lỗ hổng bảo mật trong ứng dụng web

1.2.1 Lỗ hổng bảo mật ứng dụng web là gì?

Lỗ hổng bảo mật ứng dụng web là các điểm yếu bảo mật của một ứng dụng web

mà có thể bị tận dụng để đe dọa tính toàn vẹn, quyền riêng tư, hoặc khả năng sẵn sàngcủa hệ thống Các lỗ hổng này có thể dẫn đến việc mất thông tin nhạy cảm, thất bạitrong việc duy trì tính khả dụng của dịch vụ, hoặc bị tấn công bởi các tin tặc hoặc kẻtấn công khác

Khái niệm unstrusted data

Dữ liệu không tin cậy (Untrusted Data) là một trong những khái niệm căn bảnnhất khi học về An Toàn Thông Tin nói chung "Untrusted data" ám chỉ những dữliệu mà người lập trình không kiểm soát được, chúng ta cần phải xác định hết tất cảUntrusted Data trên một ứng dụng Web Vì nó chính là những cửa ngõ mà hacker bắtđầu tấn công vào

Đây là một khái niệm cơ bản trong an toàn bảo mật nhưng là cần thiết để tránhtrường hợp bỏ sót hoặc không lường hết được các mối nguy cơ có thể xảy ra đối với

hệ thống Các vị trí có thể trở thành dữ liệu không tin cậy trong truy vấn HTTP rất đadạng Nó có thể là các biến trong truy vấn và cũng có thể là các trường trong headerhoặc thậm chí là cả các method

Trang 19

Hình 1- 5 Ví dụ unstrusted data tồn tại ở biến username trong trường cookie

thuộc header của truy vấn HTTP

1.2.2 Top 10 lỗ hổng, rủi ro theo OWASP [16]

OWASP Top 10 là một báo cáo được cập nhật thường xuyên về các nguy cơ bảomật đối với bảo mật ứng dụng web, tập trung vào 10 rủi ro/lỗ hổng quan trọng nhất.Báo cáo được tổng hợp bởi một nhóm các chuyên gia bảo mật từ khắp nơi trên thếgiới

Trong lần cập nhật mới nhất năm 2021, danh sách 10 rủi ro/ lỗ hổng nghiêm trọnggồm có:

A01:2021-Broken Access Control

A02:2021-Cryptographic Failures

A03:2021-Injection

A04:2021-Insecure Design

A05:2021-Security Misconfiguration

A06:2021-Vulnerable and Outdated Components

A07:2021-Identification and Authentication Failures

A08:2021-Software and Data Integrity Failures

A09:2021-Security Logging and Monitoring Failures

A10:2021-Server-Side Request Forgery

A01:2021-Broken Access Control (Lỗ hổng kiểm soát truy cập)

Trang 20

Kiểm soát truy cập là một phần rất quan trọng trong các ứng dụng web Trong đóhai khâu xác thực (authentication) và phân quyền (authorization), nếu hai khâu nàykhông được xây dựng đủ mạnh thì hệ thống sẽ bị kẻ xấu truy cập trái phép, đánh cắpthông tin

Một số ví dụ có thể kể đến như:

 Nhân viên có quyền truy cập đến các tài nguyên mà chỉ lãnh đạo mới cóquyền truy cập và tác động

 Truy cập vào các chức năng dành cho quản trị thông qua các URL, các API

 Truy cập vào các thông tin, tài nguyên của người dùng ngang quyền thôngqua mã định danh tài khoản (ví dụ: GET /user_infor.php?id=123)

 Cấu hình chia sẻ tài nguyên chưa chính xác (Cross-origin resource sharing)

A02:2021-Cryptographic Failures (Lỗ hổng mã hóa)

Những lỗi mã hóa dữ liệu có thể gây ra hậu quả nghiêm trọng, khi chúng có thể lànguyên nhân dẫn đến lộ các dữ liệu nhạy cảm, quan trọng hoặc xâm phạm hệ thống.Một số ví dụ của lỗi mã hóa như:

 Lưu trữ mật khẩu với thuật toán mã hóa lỗi thời, có thể bị bẻ khóa (MD5, )

 Sử dụng kết nối HTTP để nhận và truyền dữ liệu

 Các thuật toán sinh ngẫu nhiên chưa đủ mạnh

A03:2021-Injection (lỗ hổng chèn mã)

Chèn mã là lỗ hổng cho phép kẻ tấn công chèn vào dữ liệu gửi lên máy chủ vàsau đó được thực thi trên hệ thống Lỗ hổng chèn mã luôn nằm trong nhóm các lỗhổng bảo mật nghiêm trọng nhất, bị khai thác nhiều nhất và hậu quả nếu bị khai tháccũng là rất nặng nề

Trang 21

Một số dạng tấn công cụ thể của lỗ hổng chèn mã gồm: SQL Injection (chèn mãSQL), OS command injection (chèn mã lệnh OS command), Cross-site Scripting(XSS), LDAP injection,

A04:2021-Insecure Design (thiết kế không an toàn)

Các ứng dụng không có thiết kế an toàn, yếu tố bảo mật không được chú trọngđến có nhiều khả năng gây rủi ro cho dữ liệu của người dùng, các tài nguyên hệthống, tài chính và uy tín doanh nghiệp

Ví dụ về thiết kế không an toàn:

Các rạp chiếu phim cho phép đặt tối đa 15 chỗ trước mà không yêu cầu đặt cọctiền vé, nếu kẻ xấu lợi dụng để đặt nhiều vé ở nhiều rạp chiếu phim thì có thể sẽ gâythiệt hại lớn nếu các ghế đã được đặt mà không được thanh toán Khi đó các rạp chiếuphim sẽ thiệt hại lớn về doanh thu

A05:2021-Security Misconfiguration (Thiếu sót cấu hình bảo mật)

Trong quá trình triển khai vận hành các ứng dụng web, việc thiếu sót trong cấuhình bảo mật có thể gây ra những hậu quả nghiêm trọng Một số lỗi thực tế do thiếusót trong cấu hình như:

 Một số ứng dụng tạo mật khẩu mặc định cho người dùng, tuy nhiên hệ thốngkhông yêu cầu người dùng phải đổi mật khẩu sau lần đăng nhập đầu tiên

 Các cổng dịch vụ, các service chạy nội bộ nhưng lại được public ra internet

 Các cài đặt bảo mật không được thiết lập (giới hạn truy cập đến các hệthống, chính sách đổi mật khẩu, )

A06:2021-Vulnerable and Outdated Components (Sử dụng các thành phần tồn tại lỗ hổng hoặc không còn hỗ trợ)

Đây là một lỗ hổng rất phổ biến hiện nay, do một ứng dụng web được tạo thànhbởi nhiều thư viện, nền tảng khác nhau Do đó khi một thư viện hay nền tảng tồn tại

Trang 22

lỗ hổng bảo mật hay đã không còn được các nhà cung cấp tiếp tục phát triển sẽ trởthành mục tiêu được rất nhiều kẻ tấn công hướng đến.

Ví dụ: Năm 2021, trên thư viện ghi log Log4j (CVE-2021-44228) được sử dụng trongrất nhiều ứng dụng web tồn tại lỗ hổng nghiêm trọng cho phép thực thi mã bất kỳ trên

 Lưu trữ mật khẩu ở dạng bản rõ, hoặc mã hóa với các thuật toán yếu

 Không sử dụng đa xác thực (nhập username/password và nhập mã OTP)

 Chức năng tạo mới mật khẩu không an toàn

A08:2021-Software and Data Integrity Failures(Lỗi toàn vẹn dữ liệu và phần mềm)

Đây là một lỗi mới, về việc cài đặt và triển khai các phần mềm hoặc phần cứngkhông đúng cách gây ra, ví dụ về việc triển khai CI/CD, hoặc CD không an toàn, gây

ra những lỗi bảo mật nghiêm trọng đến hệ thống

A09:2021- Security Logging and Monitoring Failures (Lỗ hổng lỗi ghi nhật ký bảo mật và giám sát lỗi)

Giám sát an toàn bảo mật và thu thập nhật ký là khâu vô cùng quan trọng trongđảm bảo an toàn ứng dụng web Làm tốt khâu này có thể hạn chế, ngăn chặn các cuộctấn công, điều tra nguyên nhân sự cố Chính vì thế, nếu xảy ra lỗi giám sát và thu thậpnhật ký sẽ dẫn đến những hậu quả nghiêm trọng

A10:2021- Server Side Request Forgery (SSRF)

SSRF (Server Side Request Forgery) hay còn gọi là tấn công yêu cầu giả mạo từphía máy chủ cho phép kẻ tấn công thay đổi tham số (thường là các url) được sử dụngtrên ứng dụng web để truy cập trái phép, kiểm soát truy cập hệ thống hoặc làm bànđạp để tấn công một hệ thống thứ 3

Trang 23

Ví dụ: Trang quản trị hệ thống chỉ cho phép truy cập từ mạng nội bộ thông quadomain localhost không thể truy cập thông qua internet Lợi dụng điều này kẻ tấncông có thể tạo một url giả mạo chính là đường dẫn đến trang quản trị và truy cậptrang quản trị thành công

Hình 1- 6 Khai thác lỗ hổng SQL Injection

Trang 24

Một ví dụ về lợi dụng khai thác lỗ hổng chèn mã SQL để vượt qua xác thực ngườidùng:

Câu lệnh truy vấn SQL khi người dùng thực hiện đăng nhập:

$sql_get_user = “SELECT * FROM user WHERE username='$_POST['username']' AND password='$_POST['password']';

Kẻ tấn công có thể đăng nhập với thông tin username/password như sau:

username:

admin' password: anyword

Khi đó câu truy vấn sẽ trở thành:

$sql_get_user = “SELECT * FROM user WHERE username='admin' or true AND password='anyword';

Kết quả thực thi truy vấn sẽ trả về tất cả các bản ghi trong bảng users do điều kiện

OR true làm cho mệnh đề WHERE trở nên luôn đúng, điều kiện kiểm tra mật khẩukhông được thực thi bởi ký hiệu ( ) Trong ngôn ngữ truy vấn SQL, ký hiệu ( ) đạidiện cho phần ghi chú và sẽ không được thực thi Nếu trong bảng users có chứa useradmin, kẻ tấn công sẽ đăng nhập thành công vào hệ thống với user admin

Do hậu quả của tấn công chèn mã SQL là rất nghiêm trọng, do đó nhiều giải phápđược đề xuất nhằm hạn chế ảnh hưởng và ngăn chặn triệt để lỗ hổng này Nhiềuphương án khắc phục lỗ hổng được kết hợp giúp đảm bảo an toàn cho hệ thống Một

số biện pháp, kỹ thuật có thể áp dụng gồm:

Hình 1- 7 Lợi dụng lỗ hổng SQL Injection để vượt qua khâu xác thực

Trang 25

- Sử dụng các câu lệnh SQL được tham số hóa: Các truy vấn tham số hóa sẽ yêucầu phải có câu lệnh SQL trước, sau đó dữ liệu được tham số hóa và truyềnvào câu lệnh SQL Cách này sẽ giúp cơ sở dữ liệu phân biệt được đâu là câulệnh truy vấn và đâu là dữ liệu người dùng nhập Câu lệnh này đảm bảo kẻ tấncông không thể thay đổi mục đích của câu truy vấn, ngay cả khi các đoạn mãtruy vấn độc hại được nhập vào

- Sử dụng Stored Procedure: Tuy không đảm bảo an toàn tuyệt đối trước cáccuộc tấn công chèn mã SQL, tuy nhiên Stored Procedure cũng có hiệu quả nhấtđịnh

- Cách hoạt động của Stored Procedure cũng khá tương tự như tham số hóa câulệnh SQL, khác biệt ở đây là thay vì được lưu trữ trong mã của ứng dụng web,

- Stored Procedure được lưu trữ trực tiếp trong cơ sở dữ liệu, và được gọi ra từứng dụng

- Xác thực đầu vào: Cách hữu hiệu nhất để ngăn chặn chèn mã tấn công SQL làxác thực đầu vào, trước khi thực hiện truy vấn Có thể sử dụng các bộ lọc cósẵn, hoặc các thư viện, hay các framework cũng là một cách hữu hiệu

- Không hiển thị các thông báo lỗi hoặc các ngoại lệ: Một trong những cách kẻtấn công dùng đó là dựa vào các thông báo lỗi để thực hiện truy vết phiên bản

cơ sở dữ liệu, kiểu lưu trữ, vì vậy tốt hơn cả, không nên hiển thị chi tiết cácthông báo lỗi hay các ngoại lệ

- Tạo bản sao dữ liệu thường xuyên: Phòng trong trường hợp kẻ tấn công xóahoặc thay đổi dữ liệu, ta luôn có một bản sao để khôi phục về trạng thái banđầu

1.2.3.2 Cross-Site Scripting (XSS)

Lỗ hổng Cross-Site Scripting (XSS) là một trong những lỗ hổng được tin tặc sửdụng phổ biến nhất để tấn công các ứng dụng web Lợi dụng việc ứng dụng khôngkiểm soát được sự có mặt của các mã thực thi trái phép trong giá trị tham số đầu vào

Trang 26

và/ hoặc trong phản hồi HTTP Mã khai thác tồn tại trong các ứng dụng web chạy trêntrình duyệt với quyền truy nhập của người dùng Hậu quả của tấn công XSS có thểgiúp tin tặc đánh cắp thông tin người dùng cuối, ứng dụng web bị chèn các thông tin,hình ảnh xấu.

Có 3 loại tấn công XSS chính: Stored XSS, Reflected XSS, DOM-based XSS

Ví dụ, một trang web có chức năng tìm kiếm như sau:

http://example.com/search?keyword=abc

Kẻ tấn công có thể chèn đoạn mã Javascript để khai thác lỗ hổng XSS như sau:

http://example.com/search?keyword=<script>alert(document.cookie)</script>Khi đó, đoạn mã JavaScript sẽ được thực thi trên trình duyệt của người dùng

Một vài biện pháp phòng chống của lỗ hổng này có thể kể đến như:

- Lọc dữ liệu đầu vào: lọc dữ liệu đầu vào luôn là một trong những cách phòngchống hữu hiệu nhất cho những cuộc tấn công chèn mã Mọi dữ liệu người dùngđều phải qua quá trình lọc và xác thực, đặc biệt chú ý đến những ký tự đặc biệt

- Sử dụng Entity Encode/ Escaped: Thay vì sử dụng trực tiếp các ký tự như ‘<’,

‘>’, … ta có thể sử dụng các nhóm ký tự mang ý nghĩa tương đương như &#60,

&#61, Các kí tự này sẽ ngăn chặn được việc thực thi đoạn mã script ở phíamáy khách

- Sử dụng các thư viện Javascript: Các thư viện Javascript hiện đại hầu hết đềuđược tích hợp sẵn các bộ lọc/ Escaped Javascript

1.2.3.3 Cross-site request forgery

Cross site request forgery (CSRF) là một lỗ hổng bảo mật cho phép kẻ tấn cônglừa người dùng thực hiện các hành động mà họ không có ý định thực hiện trên ứngdụng web mà họ đã xác thực Các cuộc tấn công này thường kết hợp với phishing,social engineering để tiếp cận người dùng, lừa họ truy cập các URL một cách vô thức,thông qua tấn công CSRF có thể thực hiện chuyển tiền, thay đổi thông tin cá nhân,thay đổi thông tin đăng nhập…

Trang 27

Một ví dụ cho việc tấn công CSRF như sau:

Một URL có chức năng chuyển tiền có dạng như sau:

có thể gây ra nhiều nguy hiểm cho hệ thống web và dữ liệu của người dùng

Cơ chế hoạt động của lỗ hổng Path Traversal là kẻ tấn công sử dụng ký tự dot-slash (“ /”) để truy cập vào các thư mục cha của thư mục hiện tại Khi kẻ tấncông truy cập thành công vào thư mục cha, chúng có thể tiếp tục truy cập vào các thưmục, tập tin nhạy cảm trên máy chủ web (truy cập vào những tệp tin được cấp quyềncho user chạy ứng dụng web)

dot-Ví dụ khai thác lỗ hổng Path Traversal:

Trang 28

Cách phòng chống tấn công Path Traversal:

- Xác thực dữ liệu đầu vào

Hình 1- 8 Khai thác lỗ hổng Path Traversal đọc file nhạy cảm

Trang 29

- RFI – Remote File Inclusion: thực hiện RCE qua đường dẫn đến file màhacker sử dụng để include

Điều kiện xảy ra: Server cho phép include code từ bên ngoài

Ví dụ: với cấu hình ngôn ngữ PHP php.ini:

Nếu kẻ tấn công truy cập và kết hợp với lỗ hổng Path Traversal để đọc filenhạy cảm trên hệ thống

http://example.com?index.php?file_name= / / / /etc/passwdCách phòng chống:

- Kiểm tra chặt chẽ các file sử dụng để include

- Hạn chế sử dụng include

- Cấu hình không cho phép include từ bên ngoài nếu không cần thiết

1.3 Phương pháp phát hiện và phòng chống tấn công ứng dụng web

Lớp Bảo mật Mạng đảm nhận vai trò quan trọng trong việc đảm bảo sự an toàncủa giao tiếp giữa máy chủ và máy khách Để đạt được điều này, các thiết bị mạngnhư router, switch, tường lửa, và hệ thống ngăn chặn và phát hiện xâm nhập(IPS/IDS) cần được cấu hình và triển khai một cách an toàn và hiệu quả

Lớp Bảo mật Máy chủ Web chịu trách nhiệm bảo vệ các thành phần và hệ thốngcon bên trong máy chủ, bao gồm hệ điều hành, cơ sở dữ liệu, phần mềm, và các tậptin khác Điều này đòi hỏi các biện pháp bảo mật mạnh mẽ để ngăn chặn các mối đedọa từ việc tấn công và xâm phạm

Trang 30

Lớp Bảo mật Ứng dụng đảm bảo an toàn và bảo mật cho người dùng và dữ liệucủa họ trong ứng dụng web Các khía cạnh quan trọng của lớp này bao gồm quản lýquyền truy cập, xác thực, cấu hình, và ghi nhật ký, nhằm ngăn chặn các mối đe dọa từcác vấn đề liên quan đến ứng dụng như đánh cắp thông tin cá nhân và truy cập tráiphép.

Việc kết hợp chặt chẽ giữa các lớp này sẽ tạo nên một hệ thống bảo mật ứng dụngweb toàn diện, đảm bảo rằng tất cả các khía cạnh của môi trường trực tuyến đều đượcbảo vệ hiệu quả và an toàn

Triển khai các giải pháp bảo mật bảo vệ ứng dụng web

Thực hiện triển khai tường lửa ứng dụng web cùng các hệ thống phát hiện vàngăn chặn xâm nhập là một phương tiện quan trọng để tăng cường bảo mật cho ứngdụng web Tường lửa ứng dụng web hay WAF, là một giải pháp thiết yếu nhằm đềphòng các lỗ hổng bảo mật tiềm ẩn Được triển khai dưới dạng thiết bị phần cứnghoặc phần mềm trên máy chủ, WAF giữ vai trò theo dõi thông tin truyền tải qua giaothức http/https giữa trình duyệt của người dùng và máy chủ web

WAF có khả năng thực hiện các chính sách bảo mật dựa trên việc phân tích cácdấu hiệu tấn công, tuân thủ các giao thức tiêu chuẩn, và nhận diện lưu lượng truy cậpứng dụng web có sự bất thường Điều này giúp ngăn chặn hiệu quả các mối đe dọabảo mật như SQL injection và Cross-Site Scripting (XSS), đảm bảo an toàn cho dữliệu và người dùng trong môi trường ứng dụng web

WAF thường hoạt động thông qua một loạt các quy tắc được định nghĩa sẵn, haycòn gọi là chính sách Chính sách này có thể dễ dàng thay đổi và cập nhật, do đóWAF có khả năng phản ứng nhanh đối với các lỗ hổng bảo mật mới

Giống như WAF, các hệ thống phát hiện xâm nhập (IDS) và ngăn chặn xâm nhập(IPS) cũng có khả năng bảo vệ ứng dụng web khỏi các cuộc tấn công Khác với WAF,IDS/IPS có khả năng phát hiện và ngăn chặn xâm nhập ở tầng mạng Sự khác biệtgiữa IDS/IPS đó là IDS chỉ có khả năng phát hiện tấn công, trong khi đó IPS có cả

Trang 31

khả năng phát hiện và ngăn chặn Cách hoạt động của IPS/IDS cũng khá tương đồngvới WAF, cũng cần một bộ quy tắc để kiểm tra và ngăn chặn các giao thức mạngkhông hợp lệ IPS/IDS thích hợp để thu thập thông tin, điều tra và ứng cứu sự cố xảy

ra ở tầng mạng IPS/IDS và WAF thường được kết hợp với nhau để mang đến khảnăng bảo mật tốt hơn cho các ứng dụng web

Cấu hình, cập nhật phiên bản ứng dụng định kỳ

Một biện pháp cơ bản nhưng cực kỳ hữu hiệu trong việc bảo vệ ứng dụng web, đó

là cấu hình đúng Cấu hình ứng dụng web được hiểu như việc cấp quyền truy nhập,xác thực, trao quyền, và các cấu hình về thành phần mặc định, cách cập nhật hệthống, cùng nhiều các thành phần khác Một số cấu hình an toàn có thể kế đến như:

- Ngoại trừ các tài nguyên công cộng để tải trang web, chặn mọi truy cập đếncác tài nguyên khác mà không có đúng quyền

- Triển khai các cơ chế kiểm soát truy cập đến trang web

- Tạo quyền tối thiểu cho những người dùng khác nhau đối với mỗi bản ghi, thay

vì mọi người đều có thể chỉnh sửa và xóa bản ghi đó

- Tắt chức năng duyệt thư mục theo mặc định, và ngăn chặn truy nhập đến cácthư mục hệ thống và thư mục cấu hình/ cài đặt ứng dụng web

- Cấu hình ghi nhật ký cho mỗi kết nối trong quá trình kết nối đến ứng dụngweb

- Các phiên làm việc nên được xóa bỏ khi người dùng đăng xuất

- Các dữ liệu nhạy cảm nên được mã hóa bằng một thuật toán mã hóa mạnhtrong cơ sở dữ liệu của ứng dụng web

- Cấu hình giao thức HTTPS thay vì HTTP

- Áp dụng các mẫu thiết kế an toàn

- Các môi trường khác nhau (môi trường người dùng, môi trường kiểm thử) nênđược cấu hình giống nhau, và đảm bảo an toàn giữa các môi trường đó

Trang 32

- Loại bỏ các thành phần không được sử dụng ở ứng dụng web, các thư viện bênthứ ba, và thường xuyên cập nhật các thư viện cũng như thành phần nhằm đảmbảo các bản vá bảo mật luôn có sẵn.

- Đảm bảo quá trình ghi log được diễn ra đúng đủ và an toàn, phục vụ cho mụcđích truy vết và ứng cứu khẩn cấp

- Sử dụng chữ ký số đối với việc tải các tài nguyên bên thứ ba vào ứng dụngweb, đảm bảo việc tải tài nguyên là đúng nguồn và không bị thay đổi

Ngoài ra, rất nhiều ứng dụng được phát triển dựa trên các nền tảng được cung cấpbởi các hãng nổi tiếng và phát sinh lỗ hổng theo thời gian Khi các lỗ hổng được tìm

ra, các nhà cung cấp sẽ cung cấp các bản vá, chính vì vậy cần phải thực hiện cập nhậtcác bản vá để tránh bị ảnh hưởng bởi các lỗ hổng

Không tin tưởng dữ liệu do người dùng cung cấp

Dữ liệu người dùng là một yếu tố không đáng tin cậy nhất, do đó cần được xácthực và tiến hành lọc bỏ các thành phần không hợp lệ, trước khi được máy chủ web

xử lý Việc lọc dữ liệu người dùng cần được triển khai trên cả máy khách và máy chủ,

do việc chỉ đảm bảo dữ liệu đúng trên máy khách là không đủ để xác thực rằng dữliệu sẽ an toàn khi xử lý trên máy chủ Một ví dụ cơ bản cho trường hợp này, đó là kẻtấn công có thể tạo form nhập liệu riêng, hoặc xóa các thành phần xác thực dữ liệutrên máy khách, tắt Javascript, hoặc phức tạp hơn, gửi trực tiếp yêu cầu đến máy chủ

mà không thông qua bất cứ khâu xác thực nào

Các khâu xác thực dữ liệu đầu vào có thể kể đến như: kiểm tra kích thước đầuvào, định dạng đầu vào Ví dụ như, với dữ liệu yêu cầu là định dạng ngày, thì địnhdạng cần thiết sẽ là dd/mm/yyyy Với dữ liệu có yêu cầu bắt buộc phải nhập, thì kíchthước dữ liệu cần lớn hơn 0 Một số trường hợp đặc biệt có thể cần kiểm tra thêm nộidung và tính hợp lý của dữ liệu Một số bộ lọc sẵn có có thể lọc được các dữ liệukhông hợp lệ, dữ liệu được phân loại là dữ liệu chứa mã tấn công, để đảm bảo dữ liệu

Ngày đăng: 02/04/2024, 15:04

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

TÀI LIỆU LIÊN QUAN

w