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

Đ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

Trang 1

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

-Lê Ngọc Khoa

NGHIÊN CỨU PHƯƠNG PHÁP PHÁT HIỆN TẤNCÔNG ỨNG DỤNG WEB SỬ DỤNG HỌC SÂU CNN

ĐỀ ÁN

ĐỀ ÁN TỐT NGHIỆP THẠC SĨ KỸ THUẬT(Theo định hướng ứng dụng)

HÀ NỘI – 2024

Trang 2

Lê Ngọc Khoa

NGHIÊN CỨU PHƯƠNG PHÁP PHÁT HIỆN TẤNCÔNG ỨNG DỤNG WEB SỬ DỤNG HỌC SÂU CNN

ĐỀ CƯƠNG ĐỀ ÁN TỐT NGHIỆP THẠC SĨ KỸ THUẬT

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 ai cô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

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

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ạo

API Application ProgrammingInterface Giao diện lập trình ứng dụng

CNN Convolutional NeuralNetwork Mạng nơ-ron tích chập CSRF Cross site request forgery Một loại lỗ hổng web

CVE 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 tin HTML HyperText MarkupLanguage HyperText Markup Language

HTTP HyperText Transfer Protocol Giao thức truyền tải siêu vănbản HTTPS HyperText Transfer ProtocolSecure Giao thức bảo mật HTTP antoàn

IDS Intrusion Detection System Hệ thống phát hiện xâm nhập IPS Intrusion Prevention System Hệ thống phát hiện xâm nhậpvà ngăn chặn LDAP Lightweight DirectoryAccess Protocol Giao thức ứng dụng truy cậpcác cấu trúc thư mục

LFI Local File Inclusion Một loại lỗ hổng web LSTM 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 web RNN Recurrent neural networks Mạng nơ ron hồi quy

SQL 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 web SVM Support vector machine Thuật toán học máy TF-IDF Term Frequency - InverseDocument Frequency Mô hình trích xuất đặc trưng

URL Uniform resource locator Địa chỉ định vị tài nguyênthống nhất WAF Web Application Firewall Tường lửa ứng dụng web

XSS 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 39 Bảng 3- 2 Kết quả thử nghiệm với mô hình học sâu CNN 40 Bả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ày cả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 an ninh, 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ụ nhu cầ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 coi trọ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 gia trong 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 gia tă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át triể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ọc sâ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ức nă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ọc sâ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ác lĩ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ên họ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ình Convolution 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

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 gian mạ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 cho việ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ông chỉ 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 quan trọ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ụng web 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ọng trong 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ệu quả

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ểm hiệ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ông qua các phương thức như HTTP (Hypertext Transfer Protocol) hoặc phương thức truyề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 ứng dụ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 Đầu tiê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ệc cầ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 là từ viết tắt của Hyper Text Transfer Protocol nghĩa là Giao thức Truyền tải Siêu Văn Bản hoạt động theo kiểu yêu cầu - phản hồi Đây là nền tảng của bất kỳ sự trao đổi dữ liệu nào trên các ứng dụng Web và cũng là giao thức được sử dụng trong giao tiếp giữa máy khách (client) và máy chủ (server) Theo đó, máy khách (client) tạo ra một yêu cầu (HTTP request) và gửi nó đến máy chủ HTTP ở cổng biết trước (Well-known port).

Thông thường, cổng được sử dụng trong ứng dụng web là cổng 80 (HTTP) hoặc HTTPS (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 ứng dụng web Vì vậy, nên sử dụng giao thức HTTPS thay thế nhằm đảm bảo tính bảo mậ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àng củ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ại trong 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ản nhấ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ánh trườ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 đa dạng Nó có thể là các biến trong truy vấn và cũng có thể là các trường trong header hoặ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 cookiethuộ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ảo mậ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ế

A06:2021-Vulnerable and Outdated ComponentsA07:2021-Identification and Authentication FailuresA08:2021-Software and Data Integrity FailuresA09:2021-Security Logging and Monitoring FailuresA10: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ày khô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ắp thô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ông

qua 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ác cũ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ọc tiề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ây thiệ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ếu phim 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ấu hì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ếu só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ống khô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ành bở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 trong rấ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 hệ thống.

A07:2021-Identification and Authentication Failures (Lỗ hổng xác minh danh tính vàxác thực người dùng)

 Ứng dụng web cho phép sử dụng các mật khẩu mặc định, yếu hay phổ biến như admin/admin, root/root, admin/password.

 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ứng khô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ảomậ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ộc tấ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ập nhậ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ụng trê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 qua domain localhost không thể truy cập thông qua internet Lợi dụng điều này kẻ tấn cô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ập trang quản trị thành công.

Tấn công chèn mã SQL (SQL Injection) là một kỹ thuật cho phép kẻ tấn công chèn mã SQL vào dữ liệu gửi đến máy chủ ứng dụng web và sau đó máy chủ cơ sở dữ liệu thực thi truy vấn Khai thác thành công lỗ hổng chèn mã SQL có thể cho phép kẻ tấn công vượt qua bước đăng nhập, xem, sửa đổi, xóa dữ liệu, đánh cắp thông tin trong cơ sở dữ liệu và có thể chiếm quyền điều khiển máy chủ cơ sở dữ liệu Đối với các ứng dụng web có kết nối cơ sở dữ liệu, chèn mã SQL là dạng tấn công phổ biến được tin tặc nhằm đến.

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ười dù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ẩu không được thực thi bởi ký hiệu ( ) Trong ngôn ngữ truy vấn SQL, ký hiệu ( ) đại diện cho phần ghi chú và sẽ không được thực thi Nếu trong bảng users có chứa user admin, 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ều phươ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êu cầu phải có câu lệnh SQL trước, sau đó dữ liệu được tham số hóa và truyền và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âu lệ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ấn cô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ác cuộ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âu lệ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ác thô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óa hoặ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ông kiể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ên trì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:

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òng chố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ía má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ông lừ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 ứng dụ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:

http://example_bank.com/transfer?username=alice&amount=100

Kẻ tấn công có thể lừa người dùng bằng cách gửi cho người dùng liên kết thông qua email hay tin nhắn, ví dụ như:

<a href="http://example_bank.com/transfer?username=alice&amount=100/"> Free gift</a>

Như vậy, chỉ cần người dùng click vào liên kết hay truy cập liên kết, khoản tiền 100$ sẽ được chuyển cho người dùng có username=alice

Cách phòng chống CSRF:

- Sử dụng CSRF token cho mỗi yêu cầu HTTP gửi lên máy chủ nhằm tránh kẻ tấn công giả mạo.

- Sử dụng captcha

- Sử dụng các thư viện phòng chống CSRF 1.2.3.4 Path Traversal

Lỗ hổng web Path Traversal (còn được gọi là Directory Traversal) là một lỗ hổng bảo mật phổ biến trên các ứng dụng web Lỗ hổng này cho phép kẻ tấn công truy cập vào các tệp tin và thư mục trên máy chủ web mà không được phép truy cập Điều này 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-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ấn cô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ền cho user chạy ứng dụng web).

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.

- Sử dụng danh sách các ký tự cho phép sử dụng 1.2.3.5 File Inclusion

Lỗ hổng File Inclusion dựa trên chức năng include file được hỗ trợ bởi các ngôn ngữ lập trình.

Kẻ tấn công có thể lợi dụng để include những nội dung không muốn nhằm đánh cắp thông tin hệ thống, chèn các đoạn lệnh khiến server thực thi.

PHP: Include, require, include_once, require_once JSP: <jsp: include…>, <c: import…>

Các dạng tấn công:

- LFI – Local File Inclusion: hacker có thể xem được rất nhiều thông tin của server như các file: passwd, php.ini, access_log,… Khi kết hợp với lỗ hổng upload file có thể dẫn đến RCE mà không cần thư mục có quyền thực thi).

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:

- allow_url_include=On - allow_url_open=On

Một ứng dụng web sử dụng chức năng include để import nội dung của file bất kỳ vào file hiện tại:

- 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àn củ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ạng như 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ống con 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ập tin 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 đe dọ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ệu củ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ái phé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ụng web 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 được bả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 ứng dụ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ứng hoặ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 giao thứ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ác dấ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ọa bả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, hay cò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ệt giữ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 đồng vớ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ạng khô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 đến cá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ác thư 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ụng web.

- 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ạnh trong 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ên thứ ba, và thường xuyên cập nhật các thư viện cũng như thành phần nhằm đảm bả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ụng web, đả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ấp bở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ật cá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ác thự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ệu trê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 đầu và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ì định dạ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ích thướ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ội dung 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ệu khô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