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 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Trang 3LỜ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 4MỤ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 5CHƯƠ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 6DANH 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 7SSRF 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 8DANH 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 9DANH 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 10Hì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 11LỜ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 12Chươ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 13WEB 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 14Hì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 15cầ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 16Cá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 18Giao 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 19Hì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 20Kiể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 21Mộ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 22lỗ 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 23Ví 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 24Mộ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 26và/ 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ư <,
=, 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 27Mộ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 28Cá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 30Lớ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 31khả 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