- Về mặt thực nghiệm : Tiến hành phát hiện lỗ hổng bảo mật trên ứng dụng Vega và xây dựng một số chương trình Kết cấu của luận văn gồm 2 chương chính với các nội dung sau:... Các lỗ hổn
Trang 1HỌC VIỆN KỸ THUẬT MẬT MÃ
BÁO CÁO MÔN HỌC
THỰC TẬP CƠ SỞ
ĐỀ TÀI MỘT SỐ KĨ THUẬT ĐẢM BẢO AN TOÀN THÔNG
TIN CHO WEBSITE
Sinh viên thực hiện: Dương Văn Minh
AT160726 Nguyễn Văn Anh AT160701 Mai Văn Thắng AT160744 Nhóm 57Giảng viên hướng dẫn: TS Phạm Văn Hưởng
1
Trang 3Chúng em xin chân thành cảm ơn thầy Phạm Văn Hưởng – giảng viên trực
tiếp hướng dẫn, chỉ bảo, tạo mọi điều kiện thuận lợi giúp đỡ chúng em trong quá trình thực hiện đề tài.
Tuy đã có rất nhiều cố gắng và sự nỗ lực của các thành viên để hoàn thiện đề
tài, nhưng chắc chắn đề tài “ MỘT SỐ KĨ THUẬT ĐẢM BẢO AN TOÀN THÔNG TIN TRONG WEBSITE ” của chúng em còn nhiều thiếu sót Chúng em rất mong
nhận được sự góp ý từ các thầy giáo để nhóm em có thể hoàn thiện tốt hơn các đề tài nghiên cứu sau Chúng em xin chân thành cảm ơn!
Hà Nội, ngày 24 tháng 8 năm 2022 Nhóm sinh viên thực hiện đề tài
Nhóm 57
1
Trang 4LỜI CẢM ƠN 1
MỤC LỤC 2
CHƯƠNG 1 TỔNG QUAN VỀ TẤN CÔNG LỖ HỔNG BẢO MẬT WEBSITE 7
1.1 Tổng quan về công nghệ Web
7 1.1.1 Giới thiệu chung 7
1.1.2 Dịch vụ và cơ chế hoạt động Web 10
1.1.3 Công nghệ Web 2.0 và 3.0 11
1.1.4 Ưu điểm và hạn chế của Web app 11
1.2 Một số phương thức tấn công lỗ hổng bảo mật Website
12 1.2.1 Giới thiệu chung 11
1.2.2 Các phương thức tấn công lỗ hổng bảo mật Website 12
1.2.3 Nhận xét và đánh giá 12
1.3 Một số nguyên nhân gây ra các lỗ hổng bảo mật Website
13 1.2.1 Nguyên nhân do nền tảng xây dựng website 11
1.2.2 Nguyên nhân do hạ tầng cung cấp hạ tầng web 12
1.2.3 Nguyên nhân do người vận hàng và sử dụng dịch vụ web 12
1.4 Kết luận
20 CHƯƠNG 2 NGHIÊN CỨU GIẢI PHÁP PHÁT HIỆN LỖ HỔNG BẢO MẬT WEBSITE 20
2.1 Tổng quan về phát hiên lỗ hổng bảo mật Website
20 2.1.1 Giới thiệu chung 11
2.1.2 Cơ chế và mô hình phát hiện lỗ hổng bảo mật Website 11
2.2 Giải pháp sử dụng công cụ phần mềm dò quét
21 2.2.1 Giới thiệu giải pháp 11
Trang 52
Trang 632 CHƯƠNG 3 THỰC NGHIỆM 24
3.1 Cài đặt phầm mềm 24
3.2 Tiến hành quét 24
3.3 Kết quả thực nghiệm 24
3.3 Kết luận 24
DANH MỤC CÁC TÀI LIỆU THAM KHẢO 25
Trang 7DANH SÁCH CÁC HÌNH VẼ
4
Trang 8MỞ ĐẦU
1.Tính cấp thiết của đề tài
Ngày nay công nghệ thông tin đang là nền công nghệ mũi nhọn trongchiến lược phát triển kinh tế, xây dựng đất nước của hầu hết các quốc gia Cácsản phẩm công nghệ thông tin đã và đang được ứng dụng rộng rãi trong mọi lĩnhvực của đời sống kinh tế, xã hội và hầu hết đều đem đến những giá trị thiết thực.Đối tượng phục vụ chủ yếu của ngành công nghệ thông tin hiện nay chính là các
tổ chức, các cơ sở doanh nghiệp… Bảo mật luôn luôn là một vấn đề hàng đầucho tất cả các loại ứng dụng, đặc biệt là các website
Từ những ngày đầu của Internet người ta đã quan tâm đến tính an toàntrong trao đổi thông tin Tuy không có sự an toàn tuyệt đối nhưng những pháttriển trong lĩnh vực này thì rất nhanh và mang lại nhiều thành quả vì đây là vấn
đề cấp bách của nhiều doanh nghiệp Không có một mức an toàn thích hợp, sựkhai thác thương mại của Internet thì không hoàn toàn an toàn
Chính vì thế sự an toàn của Web trên mạng cũng không thể nằm ngoàivấn đề này Có thể nói ngày nay ngoài việc nghiên cứu làm sao để tạo ra mộtWebsite tốt mang lại nhiều lợi ích thì việc nghiên cứu để làm sao mang lại sự antoàn cho Website cũng là một trong những vấn đề quan trọng nhất Thật khó tintưởng để sử dụng một dịch như mua hàng trên một giao diện website, hoặcchuyển tiền trực tuyến trên nền website nếu không đảm bảo được mức độ antoàn tối đa Vì vậy em đã chọn đề tài để báo cáo cho môn thực tập cơ sở là “Một
số kĩ thuật đảm bảo an toàn thông tin cho Website” Đề tài tập trung đi sâu vàotìm hiểu về các lỗ hổng kĩ thuật tấn công website và các vấn đề bảo mật liênquan, sử dụng ứng dụng mã nguồn mở có tên là VEGA để phân tích các lỗ hổng
và giải quyết bài toán đề ra
2 Mục đích nghiên cứu
Mục đích nghiên cứu của đề tài là nghiên cứu phát hiện các lỗ
hổng bảo mật website và thử nghiệm một số giải pháp phát hiện các lỗ
5
Trang 9hổng bảo mật website thường gặp.
3 Đối tượng và phạm vi nghiên cứu
Đối tượng và phạm vi nghiên cứu của luận văn là nghiên cứu cácgiải pháp và công cụ phát hiện các lỗ hổng bảo mật website
4 Phương pháp nghiên cứu
- Về mặt lí thuyết : Thu thập, khảo sát, phân tích các tài liệu và thông tin
có liên quan đến phát hiện lỗ hổng bảo mật website
- Về mặt thực nghiệm : Tiến hành phát hiện lỗ hổng bảo mật trên ứng
dụng Vega và xây dựng một số chương trình
Kết cấu của luận văn gồm 2 chương chính với các nội dung sau:
Trang 10CHƯƠNG 1 TỔNG QUAN VỀ TẤN CÔNG LỖ HỔNG
BẢO MẬT WEBSITE
Nội dung của chương 1 sẽ khảo sát tổng quan về công nghệ web, một số phương thức tấn công lỗ hổng bảo mật website, một số nguyên nhân gây ra lỗ hổng bảo mật website và các vấn đề khác liên quan.
1.1 Tổng quan về công nghệ Web
1.1.1 Giới thiệu chung
Trang web (web page) trên mạng Internet là nơi giới thiệu nhữngthông tin, hình ảnh về doanh nghiệp và sản phẩm, dịch vụ của doanh nghiệp(hay giới thiệu bất cứ thông tin gì) để khách hàng có thể truy cập ở bất kỳ nơiđâu, bất cứ lúc nào
Website là tập hợp nhiều trang web Khi doanh nghiệp xây dựngwebsite nghĩa là đang xây dựng nhiều trang thông tin, catalog sản phẩm, dịch
vụ, Để tạo nên một website cần phải có 3 yếu tố cơ bản [1]:
Cần phải có tên miền (domain)
Nơi lưu trữ website (hosting)
Nội dung các trang thông tin (web page)
Website tĩnh do lập trình bằng ngôn ngữ HTML theo từng trang nhưbrochure, không có cơ sở dữ liệu và không có công cụ quản lý thông tin trênwebsite Thông thường website tĩnh được thiết kế bằng các phần mềm nhưFrontPage, Dreamwaver, Đặc điểm của website tĩnh là ít thay đổi nội dung,sự
Trang 11thay đổi nội dung này thường liên quan đến sự thay đổi các văn bản đi kèm
thể hiện nội dung trên đó
Hiện nay, hầu hết các doanh nghiệp đều sử dụng website động, thế hệcông nghệ website được mọi người biết đến là web 2.0 [1]
- Tên miền (domain): Tên miền chính là địa chỉ website, trên internet chỉ tồn tại
duy nhất một địa chỉ (tức là tồn tại duy nhất một tên miền) Có 2 loại tên miền:
- Tên miền Quốc tế: là tên miền có dạng com; net; org; biz; name
- Tên miền Việt Nam: là tên miền có dạng vn; com.vn; net.vn; org.vn;
.gov.vn;
- Lưu trữ website: Dữ liệu thông tin của website phải được lưu trữ trên một
máy tính (máy chủ - server) luôn hoạt động và kết nối với mạng Internet Mộtserver có thể lưu trữ nhiều website, nếu server này bị sự cố chẳng hạn tắt trong mộtthời điểm nào đó thì không ai có thể truy cập được những website lưu trữ trênserver tại thời điểm bị sự cố
- Tùy theo nhu cầu lưu trữ thông tin mà doanh nghiệp có thể thuê dung lượng thích hợp cho website [thuê dung lượng host]
- Dung lượng host: Là nơi để lưu cơ sở dữ liệu của website (hình ảnh, thông
tin,
…), đơn vị đo dung lượng thường là MB hoặc GB
- Băng thông hay dung lượng đường truyền: Là tổng số MB dữ liệu tải lên máy
chủ hoặc tải về từ máy chủ (download, upload) nơi đặt website, đơn vị đo thôngthường là MB/giây
1.1.1.1 Khái niệm về ứng dụng website
Web app (Web application) là một chương trình ứng dụng được lưu trữ trên một máy chủ từ xa và được phân phối bằng Internet thông qua bất kỳ trình duyệt nàohiện có Giao diện người dùng của Web app thường được xây dựng bằng các ngôn ngữ lập trình như HTML, CSS, Javascript Khác với các ứng dụng dành cho thiết bị
di động, hiện tại không có SDK cụ thể nào để phát triển các Web app
Ngoài ra, bất kỳ thành phần nào của Website có thể thực hiện một số chứcnăng cho người dùng đều đủ điều kiện là Web app Ví dụ: mua hàng, tính tiền, thanh toán,…
Các Web App có thể được thiết kế cho nhiều mục đích sử dụng khác nhau vàđược sử dụng bởi bất kỳ ai từ tổ chức đến một cá nhân Một số ví dụ điển hình
Trang 12về các Web app mà chúng ta thường dùng hàng ngày như: Email, các
trang thương mại điện tử, website chỉnh sửa ảnh, Facebook…Nhờ có Web app chúng ta có thể thực hiện các chức năng như đăng thông tin, upload file, xuất báocáo, chỉnh sửa ảnh trực tuyến,
Hình 1.1 Mô phỏng ứng dụng Web
1.1.2 Dịch vụ và cơ chế hoạt động Web
Dịch vụ Web là sự kết hợp các máy tính cá nhân với các thiết bị khác,các cơ sở dữ liệu và các mạng máy tính để tạo thành một cơ cấu tính toán ảo
mà người sử dụng có thể làm việc thông qua các trình duyệt mạng
Bản thân các dịch vụ này sẽ chạy trên các máy phục vụ trên nềnInternet chứ không phải là các máy tính cá nhân, do vậy có thể chuyển cácchức nǎng từ máy tính cá nhân lên Internet Người sử dụng có thể làm việcvới các dịch vụ thông qua bất kỳ loại máy nào có hỗ trợ Web service và cótruy cập Internet, kể cả các thiết bị cầm tay Do đó các Web service sẽ biếnđổi Internet thành một môi trường làm việc chứ không chỉ là một phương tiện
để xem và tải nội dung [10]
Web Service là một giao diện truy cập mạng đến các ứng dụng chứcnăng, được xây dựng từ việc sử dụng các công nghệ chuẩn Internet [10].Được minh hoạ trong hình 1.1 sau:
Trang 13Hình 1.2 Dịch vụ Web Service[10].
Web Service cho phép truy cập tới các code ứng dụng sử dụng chuẩn
công nghệ Internet
Không giống như mô hình Client/Server truyền thống, chẳng hạn như
hệ thống Web server/webpage, Web Service không cung cấp cho người dùng
một giao diện đồ hoạ nào, Web Service đơn thuần chỉ là việc chia sẻ các dữ
liệu logic và xử lý các dữ liệu đó thông qua một giao diện chương trình ứng
dụng được cài đặt xuyên suốt trên mạng máy tính Tuy nhiên nguời phát triển
Web Service hoàn toàn có thể đưa Web Service vào một giao diện đồ hoạ
người dùng (chẳng hạn như là một trang web hoặc một chương trình thực thi
nào đó) để có thể cung cấp thêm các chức năng đặc biệt cho người dùng
Cơ chế hoạt động của Web Service yêu cầu phải có 3 thao tác đó là :
Find, Public, Bind [10]
Hình 1.3 Cơ chế hoạt động của Web Service[10].
Trong kiến trúc Web Service, Service Provider công bố các mô tả về các servicethông qua Service Registry Service Consumer tìm kiếm trong các Service Registry đểtìm ra các service mà họ cần sử dụng Service Consumer có thể là một người hoặccũng có thể là một chương trình
Kĩ thuật mô tả dịch vụ là một trong những thành phần chủ chốt của kiến trúcWeb Service Các thông tin mô tả đầy đủ nhất về kiến trúc Web Service được thể hiệntrong hai tài liệu riêng biệt, đó là Network Accessible Service Specification Language(NASSL) và Web-Defined Service (WDS)
Trang 141.1.3 So sánh giữa Ứng dụng website và website
- Về khả năng tương tác
Mục đích chính của Website là cung cấp những thông tin hữu ích, nhưng tại đó, người đọc chỉ có thể xem, nghe và click các link qua lại chứ không thể tác động hay tạo nên sự ảnh hưởng gì của trang Nên khả năng tương tác của Website thấp
Còn mục đích của Web app là tăng khả năng tương tác của người dùng với trang nên bạn không chỉ đọc, nghe mà còn có thẻ thao tác dữ liệu trên trang bằng cách nhấn nút, gửi biểu mẫu, nhận phản hồi từ trang, nhắn tin trực tuyến hay mua hàng, thanh toán, …
- Về khả năng tích hợp
Thực tế, cả Website và Web app đều có khả năng tích hợp các phần mềm, công cụtrực tuyến khác Tuy nhiên, web app có khả năng tích hợp cao hơn do chúng có những chức năng phức tạp và thường yêu cầu tương tác với các hệ thống bổ sung
Điển hình nhưphần mềm CRM thường được tích hợp trong Web app, giúp cho việc quản
lý bán hàng trở nên dễ dàng và hiệu quả hơn
Còn với Website, phần lớn sẽ tập trung vào việc cung cấp cho người dùng
những chức năng cốt lõi hơn là các chức năng tích hợp
Hình 1.4 Website và Web Application
- Về khả năng xác thực thông tin
Đối với Web app, xác thực là một yếu tố quan trọng và rất cần thiết khi người
dùng đăng nhập Khả năng có tác dụng giúp người dùng bảo mật tài khoản, tránh truy
Trang 15cập trái phép và rò rỉ những dữ liệu riêng tư của họ.
Còn với các Website, thông tin xác thực thường không bắt buộc đối với người dùng Chỉ trong trường hợp website của bạn chứa thông tin nhạy cảm, chỉ phù hợp với một đối tượng nhất định thì tính năng xác thực mới cần dùng đến Hoặc người dùng cũng có thể được đề nghị đăng ký tài khoản để có quyền truy cập vào các tùy chọn không có sẵn
- Về ngôn ngữ sử dụng khi thiết kế
Website thường được thiết kế khá đơn giản, chủ yếu hiển thị nội dung văn bản, hình ảnh, video và hỗ trợ việc giới thiệu, nhận thông tin của người dùng từ form yêu cầu Nên các lập trình viên Website thường sử dụng CMS WordPress bởi có mã nguồn
chuẩn SEO, giao diện đơn giản, giúp tiết kiệm chi phí và thời gian triển khai
Còn Web app được thiết kế phức tạp hơn với nhiều ngôn ngữ Ngoài HTML,CSS còn có PHP, LAMP, MEAN, NET, Ruby, Python ,… Hơn nữa, các Web app thường là được lập trình bằng code tay mà không có sự hỗ trợ của các CMS hay mãnguồn có sẵn
1.2 Một số phương thức tấn công lỗ hổng bảo mật website
1.2.1 Giới thiệu chung.
Các lỗ hổng bảo mật trên một hệ thống thông tin nói chung là các điểm yếu
có thể tạo ra sự ngưng trệ của dịch vụ, thêm quyền đối với người sử dụng hoặc chophép các truy cập không hợp pháp vào hệ thống Các lỗ hổng cũng có thể nằmngay các dịch vụ cung cấp như sendmail, web, ftp … Ngoài ra các lỗ hổng còn tồntại ngay chính tại hệ điều hành như trong Windows, UNIX; hoặc trong các ứngdụng mà người sử dụng thường xuyên sử dụng như Word processing, các hệdatabases,
Có thể được phân chia các dạng lỗ hổng bảo mật trên một hệ thống nóichung thành ba cấp độ nguy hiểm như sau [2]:
Lỗ hổng loại C: các lỗ hổng loại này cho phép thực hiện các phương thức
tấn công theo DoS (Dinal of Services – Từ chối dịch vụ) Mức độ nguy hiểm thấp,chỉ ảnh hưởng tới chất lượng dịch vụ, có thể làm ngưng trệ, gián đoạn hệ thống;không làm phá hỏng dữ liệu hoặc đạt được quyền truy nhập bất hợp pháp
Lỗ hổng loại B: Các lỗ hổng cho phép người sử dụng có thêm các quyền
trên hệ thống mà không cần thực hiện kiểm tra tính hợp lệ Mức độ nguy hiểmtrung bình Những lỗ hổng này thường có trong các ứng dụng trên hệ thống; có
Trang 16thể dẫn đến mất hoặc lộ thông tin yêu cầu bảo mật.
Lỗ hổng loại A: Các lỗ hổng này cho phép người sử dụng ở ngoài có thể
truy nhập vào hệ thống bất hợp pháp Lỗ hổng rất nguy hiểm, có thể làm phá hủytoàn bộ hệ thống
Các lỗ hổng bảo mật Website là các điểm yếu của hệ thống cung cấp dịch vụWeb cho phép tin tặc tấn công đánh cắp dữ liệu người dùng, dữ liệu hệ thống, kiểmsoát ứng dụng web, hoặc thậm chí kiểm soát cả hệ thống máy chủ chạy ứng dụngweb Các lỗ hổng bảo mật Website rất đa dạng và bao gồm cả ba loại trên
Trong phần tiếp theo, luận văn sẽ trình bày một số phương thức tấn công lỗhổng bảo mật Website
1.2.2 Các phương thức tấn công lỗ hổng bảo mật website
Trong mục này, luận văn sẽ khảo sát các phương thức tấn công lỗ hổng bảomật Website dựa trên khuyến nghị của OWASP [16]
- Vượt qua kiểm tra lúc đăng nhập
- Sử dụng câu lệnh SELECT
- Sử dụng câu lệnh INSERT
- Sử dụng các Stored-Procedures
1.2.2.2 Tấn công kiểu Broken Authentication And Session Management
Đây là kiểu tấn công lỗi xác thực và quản lý phiên làm việc (Broken
Authentication And Session Management), bao gồm những đoạn chương trình
Trang 17kiểm tra danh tính và quản lý phiên làm việc của người sử dụng thường hay đượclàm qua loa không đúng cách Điều này giúp kẻ thâm nhập có thể ăn cắp mật mã,khóa, mã của các phiên làm việc {session token} hoặc tận dụng những lỗi khác đểgiả mạo danh tính các người dùng khác.
Quản lý xác thực và phiên bao gồm tất cả các khía cạnh xử lý xác thực vàquản lý phiên làm việc Xác thực là một khía cạnh quan trọng của quá trình này,nhưng ngay cả các cơ chế xác thực vững chắc cũng có thể bị suy yếu do chức năngquản lý có khe hở, bao gồm thay đổi mật khẩu, ghi nhớ mật khẩu, thay đổi tàikhoản và nhiều chức năng khác Vì các cuộc tấn công có thể xảy ra với nhiều ứngdụng web nên chức năng quản lý tài khoản yêu cầu xác thực lại ngay cả khi người
sử dụng có phiên làm việc hợp lệ Một phương pháp xác thực mạnh mẽ hơn là sửdụng phần mềm và phần cứng tuy nhiên phương pháp này rất tốn kém
Các ứng dụng web thường phải thiết lập phiên để theo dõi các luồng yêu cầu
từ người dùng, giao thức HTTP không hỗ trợ khả năng này vì vậy các ứng dụngweb phải tự tạo ra nó Thông thường môi trường ứng dụng web cung cấp khả năngphiên nhưng nhiều nhà phát triển thích tự họ tạo ra một thẻ phiên của riêng họ Tuynhiên, chức năng ứng dụng liên quan đến quản lý xác thực và phiên làm việcthường thực hiện một cách chính xác, điều này cho phép kẻ tấn công lấy được mậtkhẩu, khóa, thẻ phiên hoặc khai thác lỗ hổng để thực hiện các giả mạo danh tínhngười dùng
1.2.2.3 Tấn công Cross Site Scripting (XSS)
Kiểu tấn công thực thi mã script xấu Cross-Site Scripting (XSS) là một trong những kĩ thuật tấn công phổ biến nhất hiên nay, đồng thời nó cũng là một trong những vấn đề bảo mật quan trọng đối với các nhà phát triển web và cả những người sử dụng web Bất kì một website nào cho phép người sử dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các đoạn mã nguy hiểm thì đều có thể tiềm
ẩn các lỗi XSS
Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS đểtránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là một kĩ thuật tấncông bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ) những thẻHTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người
Trang 18sử dụng khác Trong đó, những đoạn mã nguy hiểm được chèn vào hầu hết đượcviết bằng các Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là
cả các thẻ HTML Kĩ thuật tấn công XSS đã nhanh chóng trở thành một trongnhững lỗi phổ biến nhất của Web Applications và mối đe dọa của chúng đối vớingười sử dụng ngày càng lớn
1.2.2.4 Kiểu tấn công Insecure Direct Object References
Kiểu tấn công đối tượng tham chiếu trực tiếp không an toàn (Insecure DirectObject References), xảy ra khi người phát triển để lộ một tham chiếu đến nhữngđối tượng trong hệ thống như các tập tin, thư mục hay chìa khóa dữ liệu Nếuchúng ta không có một hệ thống kiểm tra truy cập, kẻ tấn công có thể lợi dụngnhững tham chiếu này để truy cập dữ liệu một cách trái phép
Việc phân quyền yếu cho phép người dùng có thể truy cập dữ liệu của ngườikhác Hacker có thể xác định được cấu trúc truy vấn gửi đến server và có thể nhanhchóng thu nhập dữ liệu như Credit Card, mã khách hàng, thông tin cá nhân
1.2.2.5 Tấn công Security Misconfiguration
Kiểu tấn công sai sót trong cấu hình bảo mật (Security Misconfiguration), như
là một cơ chế an ninh tốt cần phải định nghĩa những hiệu chỉnh về an ninh và triểnkhai nó cho các ứng dụng, máy chủ ứng dụng, máy chủ web, máy chủ dữ liệu vàcác ứng dụng nền tảng
Tất cả những thiết lập nên được định nghĩa, thực hiện và bảo trì bởi vì rấtnhiều hệ thống không được triển khai với thiết lập an toàn mặc định Các hiệuchỉnh cũng bao gồm cập nhật phần mềm và những thư viện được sử dụng bởi ứngdụng
1.2.2.6 Tấn công Sensitive Data Exposure
Kiểu tấn công phơi bày các dữ liệu nhạy cảm (Sensitive Data Exposure), baogồm nhiều ứng dụng web không bảo vệ dữ liệu nhạy cảm như thẻ tín dụng, mã sốthuế và những mã xác thực bí mật bằng các phương thức mã hóa hay băm(hashing) Kẻ tấn công có thể ăn cắp hay thay đổi những dữ liệu nhạy cảm này vàtiến hành hành vi trộm cắp, gian lận thẻ tín dụng, v.v
Trang 191.2.2.7 Tấn công Missing Function Level Access Control
Kiểu tấn công thiếu chức năng điều khiển truy cập (Missing Function LevelAccess Control) bao gồm gần như tất cả các ứng dụng web kiểm tra quyền truy cậpcấp độ chức năng trước khi thực hiện chức năng mà có thể nhìn thấy trong giaodiện người dùng Tuy nhiên, các ứng dụng cần phải thực hiện kiểm tra kiểm soáttruy cập tương tự trên máy chủ khi mỗi chức năng được truy cập Nếu yêu cầukhông được xác nhận, kẻ tấn công sẽ có thể giả mạo yêu cầu để truy cập vào chứcnăng trái phép
1.2.2.8 Tấn công Cross-Site Request Forgery (CSRF)
Kiểu tấn công giả mạo yêu cầu (CSRF) là kiểu tấn công này ép buộc trìnhduyệt web của một người dùng đã đăng nhập gửi những yêu cầu các HTTP giả baogồm cookie của phiên truy cập và những thông tin tự động khác bao gồm thông tinđăng nhập đến một ứng dụng web Điều này, cho phép kẻ tấn công buộc trìnhduyệt web tạo ra những yêu cầu đến ứng dụng web mà ứng dụng không thể biếtđây là những yêu cầu giả mạo của kẻ tấn công
1.2.2.9 Tấn công Using Components with Known Vulnerabilities
Kiểu tấn công sử dụng thành phần đã tồn tại lỗ hổng (Using Components withKnown Vulnerabilities) bao gồm các lổ hổng có thể có trong các thành phần (thànhphần phát triển ứng dụng) như các thư viện, các framework, và mô-đun phần mềmkhác Các thành phần này gần như luôn luôn chạy với quyền cao nhất trong hệthống Vì vậy, nếu bị khai thác, các thành phần này có thể gây mất dữ liệu nghiêmtrọng
Các ứng dụng sử dụng các thành phần tồn tại lổ hổng có thể làm suy yếuphòng thủ của hệ thống, cho phép một loạt các cuộc tấn công và ảnh hưởng đến hệthống
1.2.2.10 Tấn công Unvalidated Redirects and Forwards
Trang 20Kiểu tấn công chuyển hướng và chuyển tiếp thiếu kiểm tra (UnvalidatedRedirects and Forwards) là kiểu tấn công ứng dụng web thường chuyển hướng,chuyển tiếp người dùng đến những trang web, website khác và sử dụng nhữngthông tin thiếu tin cậy để xác định trang đích đến Nếu không được kiểm tra mộtcách cẩn thận, kẻ tấn công có thể lợi dụng để chuyển hướng nạn nhân đến các trangweb lừa đảo hay trang web chứa phần mềm độc hại, hoặc chuyển tiếp để truy cậpcác trang trái phép.
Ngoài 10 phương thức tấn công phổ biến mạng hiện nay theo OWASP, còn
có thể kế đến phương pháp tấn công APT rất quan trọng trong tấn công mạng
1.2.2.11 Tấn công APT
Thuật ngữ APT (Advanced Persistent Threat) được sử dụng để mô tả kiểutấn công dai dẳng và có chủ đích vào một thực thể được nhắm đến Thông thườngtấn công APT có sự chuẩn bị kỹ càng và được thực hiện, hỗ trợ bởi một tổ chứchoặc cao cấp hơn là chính phủ của một nước nào đó nhằm tìm kiếm thông tin tìnhbáo từ cá nhân, doanh nghiệp, chính phủ nước khác
Phân tích các thuật ngữ trong APT:
Advanced : thuật ngữ này trong cụm từ APT chỉ các kiểu tấn công cao cấp
hơn các thể loại thông thường Trong APT, tin tặc sử dụng các malware và cácbiến thể khác nhau để tiến hành qua mặt và xâm nhập vào hệ thống Không giốngcác virus hay chương trình độc hại máy tính khác, các malware này phần lớn có thểqua mặt được các phương pháp bảo vệ truyền thống khác như Firewall, IPS, vàphần mềm diệt virus
Persistent : kiểu tấn công APT thực sự bao giờ cũng có chủ đích nhất định
và thuật ngữ Persistent mang ý nghĩa việc tấn công luôn theo sát để đạt được mụcđích của nó Mục tiêu tấn công sẽ không bị tấn công ngay tức thì mà các mã độc sẽ
đi theo nhiều đường khác nhau cho đến khi xâm nhập vào hệ thống, sau đó chờthời cơ Chúng chỉ thực sự kích hoạt tấn công khi phát hiện đúng mục tiêu
Threat : chỉ các mối nguy hại liên quan đến an ninh, an toàn thông tin Theo
thống kế của FireEye [12], tấn công APT nằm trong nhóm hiểm họa an toàn thôngtin bắt đầu xuất hiện từ giai đoạn 2010-2011 cho đến nay Đây là phương
Trang 21thức tấn công đa dạng, nhanh chóng tạo ra các biến thể để qua mặt các giải pháp anninh và gây thiệt hại to lớn so với các rủi ro an ninh khác như virus, spyware.
1.2.3 Nhận xét và đánh giá
Thực tế với tình hình hiện nay, các ứng dụng Web ngày một nhiều Sự thayđổi chóng mặt của công nghệ đã giúp ứng dụng Web được cải tiến nâng cao rấtnhiều, và vấn đề bảo mật cho ứng dụng Web không ngừng tăng lên Một khi ứngdụng Web bị rò rỉ lỗ hổng, các hacker sẽ dễ dàng chiếm quyền quản trị Web, ứngdụng và phần mềm của công ty Nguyên nhân dẫn đến các ứng dụng Web bị rò rỉthông tin, các nguy cơ về lỗ hổng, là do các đoạn mã lệnh, mã code không phù hợptrong ứng dụng Web Chỉ cần một lỗ hổng, hacker cũng có thể xâm nhập và truycập vào cơ sở dữ liệu, thông tin và thực hiện các hành vi sai trái như đánh cắp, thayđổi, chỉnh sửa, mã hóa dữ liệu…Đối với các doanh nghiệp, tổ chức, cơ quan nhànước, việc tăng lớp bảo mật, rà quét lỗ hổng ứng dụng là điều cần thiết
Việc đánh cắp hoặc chiếm đoạt quyền truy cập của người dùng, nhà quản trị,cũng như chiếm các phiên làm việc trên session management hoặc ẩn phiên làmviệc session fixation, dẫn đến các hậu quả không an toàn như: những thông tin cánhân, thông tin quan trọng, tài chính của công ty và khách hàng sẽ bị hacker xâmphạm; ứng dụng web và các phần mềm khác mà công ty, doanh nghiệp đang sửdụng rất có thể sẽ bị hacker cài mã theo dõi, virus độc hại; hệ thống máy chủ hoặc
hệ thống có thể bị tê liệt do sự cố bắt nguồn từ các ứng dụng Web,…
CHƯƠNG 2. NGHIÊN CỨU GIẢI PHÁP PHÁT HIỆN LỖ
HỔNG BẢO MẬT WEBSITE
Trong chương 2 này sẽ nghiên cứu về một số giải pháp phát hiện lỗ hổng
bảo mật website.
2.1 Tổng quan về phát hiện lỗ hổng bảo mật Website
2.1.1 Giới thiệu chung.
Hệ thống Website có thể hoạt động và cung cấp dịch vụ cho người dùng
Trang 22thường trải qua các giai đoạn sau đây:
(1) Giai đoạn thiết kế hệ thống Website;
(2) Giai đoạn cài đặt hệ thống Website;
(3) Giai đoạn triển khai và vận hành khai thác hệ thống Website
Trong cả ba giai đoạn trên đều có thể phát sinh các lỗ hổng bảo mật và cần phải có các giải pháp phát hiện lỗ hổng bảo mật cho hệ thống Website
Quy trình phát hiện lỗ hổng bảo mật cho hệ thống Website đang
hoạt động thông thường được thực hiện theo các bước sau:
(1) Bước 1: Khảo sát hiện trạng hệ thống Website
Trước hết, thực hiện khảo sát toàn bộ hệ thống website nhằm thu thập những thông tin cơ bản về thiết kế, cài đặt và hiện trạng vận hành để chuẩn bịcho bước 2
(2) Bước 2: Xây dựng kịch bản đánh giá
Trong bước này cần xây dựng các kịch bản cụ thể để tiến hành phát hiện
lỗ hổng bảo mật cho hệ thống Website
(3) Bước 3: Đánh giá sơ bộ
Thường sử dụng các công cụ rà quét toàn bộ hệ thống website bao gồmwebsite chính và các website site con như: blog, website wordpress, diễnđàn,
(4) Bước 4: Đánh giá chi tiết
Trong bước này thường thực hiện tấn công từ bên trong và bên ngoàimạng nội bộ kết nối hệ thống website Trong đó, tấn công từ bên trong hệthống sẽ tiến hành thâm nhập toàn bộ hệ thống thông qua bộ lưu trữ mật khẩucủa website, tấn công từ diễn đàn, … Còn tấn công từ bên ngoài hệ thống sẽgiả lập vai trò là các hacker thâm nhập vào hệ thống thông qua wifi, internet,host, IDS, tường lửa, …
Trên cơ sở đánh giá chi tiết sẽ đưa ra những giải pháp, những tư vấn thiết
Trang 23thực nhằm khắc phục các lỗ hổng bảo mật đã phát hiện cho hệ thống website.Trong mục tiếp theo, dựa trên ý tưởng trình bày trong [2], luận văn sẽđưa ra mô hình phát hiện lỗ hổng bảo mật Website tổng quát.
2.1.2 Cơ chế và mô hình phát hiện lổ hổng bảo mật Website.
Lỗ hổng bảo mật Website rất đa dạng và có thể do nhiều nguyên nhânkhác nhau, có thể phát sinh từ những yếu tố thuần túy kỹ thuật; cũng có thể docác yếu tố về tổ chức và quản lý như: thiếu hoặc khiếm khuyết trong các biệnpháp bảo vệ thông tin Tuy nhiên, lỗ hổng bảo mật Website có thể được chiathành ba loại: lỗ hổng khách quan, lỗ hổng chủ quan và lỗ hổng ngẫu nhiên
Lỗ hổng khách quan xuất phát từ các đặc tính kỹ thuật vốn có của thiết bị vàphần mềm của Website Lỗ hổng chủ quan xuất phát từ hành vi của chủ thể,
có thể là nhà thiết kế, các quản trị viên và người sử dụng Lỗ hổng ngẫu nhiênxuất phát từ môi trường của hệ thống Website và những bối cảnh không dựđoán trước được
Hình 2.1 dưới đây mô tả mô hình tổng quát phát hiện lỗ hổng bảo mậtWebsite
Theo hình 2.1, quá trình phát hiện lỗ hổng bảo mật Website được xâydựng bằng cách thực hiện kiểm tra thụ động và kiểm tra thăm dò tích cực(active probe) các lỗ hổng
Trong quá trình rà quét (scan), các công cụ phân tích lỗ hổng bảo mật Website sẽ gửi yêu cầu đến địa chỉ của Website (lên cổng máy chủ) phân tích các gói dữ liệu nhận được sau đó trả về tương ứng về các lỗ hổng có thể tồn tại.
Phương pháp thăm dò tích cực cung cấp khả năng phân tích dấu vết sốđoạn phần mềm của Website, thực hiện quá trình so sánh kết quả nhận đượcvới dấu vết số lỗ hổng đã được biết của Website đang được kiểm tra Trongquá trình kiểm tra thăm dò tích cực, các phương tiện phân tích an toàn môphỏng các tấn công vào Website, sử dụng thông tin lỗ hổng nhận được khiquét
Trang 24Hình 2.1 Mô hình cơ chế tổng quát phát hiện lỗ hổng bảo
mật Website.
Kết quả rà quét và kiểm tra thăm dò tích cực được đưa vào cơ sở dữ liệu lỗhổng, trong đó lưu giữ thông tin các lỗ hổng của Website Trên cơ sở so sánhthông tin lỗ hổng được phát hiện với thông tin các lỗ hổng của Website, cácphương tiện phân tích an toàn hệ thống lập báo cáo về sự vắng mặt hay hiệndiện của những trùng hợp trong thông tin của các lỗ hổng, báo cáo này đượclưu trong cơ sở dữ liệu lỗ hổng
Mô tả thông tin các lỗ hổng đã được biết đến và lỗ hổng chưa biết (lỗhổng zero-day) được lưu giữ bằng thông tin về các tính chất đặc thù của từng
lỗ hổng cụ thể Để nhận dạng chính xác thông tin lỗ hổng được phát hiện, cơ
sở dữ liệu lỗ hổng cần chứa thông tin về tên gọi và phiên bản phần mềm củaWebsite, về định danh, tên và lớp của các lỗ hổng được phát hiện các lỗ hổng
đã được biết đến và lỗ hổng zero-day được lưu giữ bằng thông tin về các tínhchất đặc thù của từng lỗ hổng cụ thể Để nhận dạng chính xác thông tin lỗhổng được phát hiện, cơ sở dữ liệu lỗ hổng cần chứa thông tin về tên gọi và
Trang 25phiên bản phần mềm của Website, về định danh, tên và lớp của các lỗ hổngđược phát hiện
Dựa trên các thông tin trên, các phương tiện phân tích an toàn sẽ phânloại các mức độ của lỗ hổng Để đánh giá một cách chính xác thông tin về lỗhổng bao gồm: loại khiếm khuyết của Website, vị trí phát hiện và phươngpháp phát hiện lỗ hổng Quá trình đánh giá lỗ hổng kết thúc bằng các khuyếnnghị về việc loại bỏ lỗ hổng hoặc loại trừ khả năng sử dụng chúng
Trong trường hợp lỗ hổng được phát hiện lần đầu tiên, các phương tiệnphân tích sẽ đưa thông tin về nó vào cơ sở dữ liệu lỗ hổng và hình thành cơ sở
dữ liệu mới của lỗ hổng zero-day Khi các nhà phát triển Website đưa ra cácbản cập nhật và các biện pháp bảo vệ thông tin, thì lỗ hổng zero-day sẽchuyển thành lỗ hổng đã biết
2.2 Giải pháp sử dụng công cụ phần mềm dò quét.
.
2.2.1 Giới thiệu giải pháp
Trong quá trình thiết kế, cài đặt và vận hành hệ thống Website, thườngxuyên dò quét phát hiện các lỗ hổng bảo mật để kịp thời xử lý là sự lựa chọnthông minh giúp cho các doanh ngiệp, cá nhân, tổ chức bảo vệ được hệ thốngcủa mình Để thực hiện dò quét phát hiện các lỗ hổng bảo mật, người dùng cóthể tự cài đặt các phần mềm hoặc sử dụng các phần mềm sẵn có của các nhàcung cấp
Một số tiêu chuẩn kiểm thử lỗ hổng bảo mật website điển hình:
– OWASP (Open Web Application Security Project).
– OSSTMM (Open Source Security Testing Methodology Manual) – Kiểm thử theo phương thức mã nguồn mở
– PTF (Penetration Testing Framework) – Dò quét lỗ hổng bảo mật hệ thống.– ISSAF (Information Systems Security Assessment Framework) –
Đánh giá bảo mật Hệ thống thông tin
Để xây dựng các phần mềm phát hiện lỗ hổng bảo mật, trước hết cầnnghiên cứu kỹ các đặc điểm lỗ hổng bảo mật dựa trên các tiêu chuẩn nêu trên.Tiếp theo là sử dụng các ngôn ngữ lập trình (chẳng hạn như Python) để cài đặt
Trang 26phần mềm mô phỏng quá trình tấn công lỗ hổng bảo mật nhằm phát hiệnchúng Cuối cùng là sử dụng phần mềm để dò quét phát hiện lỗ hổng bảo mật.
Quá trình tự cài đặt các phần mềm phát hiện lỗ hổng bảo mật giúp chocác nhà phát triển Website nắm rõ bản chất của lỗ hổng và sớm có các giảipháp khắc phục
Trong hình 2.2 mô tả sơ đồ tấn công lỗ hổng cơ sở dữ liệu SQL của
website được viết bằng ngôn ngữ lập trình PHP và cơ sở dữ liệu SQL server
Hình 2.2: Sơ đồ thực hiện tấn công lỗ hổng cơ sở dữ liệu SQL trên web
Trên cơ sở đó, thực hiên cài đặt phần mềm theo sơ đồ trên để phát hiện
lỗ hổng bảo mật webiste tương ứng
2.2.2 Một số phần mềm phát hiện lỗ hổng bảo mật Website
Hiện nay có khá nhiều phần mềm miễn phí cũng như trả phí được pháthành Một số ứng dụng phát hiện lỗ hổng bảo mật Website khá phổ biến đượcliệt kê dưới đây
- Google Safe Browsing Diagnostic: sẽ cho biết về tên miền và các đường dẫn liên quan đến địa chỉ web muốn kiểm tra
- URL Void: có chức năng quét địa chỉ web bằng hơn 30 công cụ khác nhau
- UnMask Parasites: quét web cho biết nó chứa các mối nguy hiểm nào
Trang 27ví dụ đường link, dòng lệnh đáng ngờ.
- PhishTank: cung cấp danh sách địa chỉ Web có nguy cơ phishing
- UnShorten.it: đảm bảo an toàn cho người dùng khi truy cập vào các địa chỉ web rút gọn
- Phần mềm Havij: phát hiện lỗ hổng cơ sở dữ liệu SQL với ngôn ngữ lập trình web là PHP
- Phần mềm Rapid 7: có tính năng dò quét lỗ hổng toàn diện chuyên sâu trên cả phần cứng và phần mềm
- Phần mềm Acunetix: là chương trình tự động kiểm tra các ứng dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL Injection, hay Cross-Site Scripting,
…
- Nhưng ở trong báo cáo này , chúng ta sẽ cùng tìm hiểu về ứng dụng
Vega trên nền tảng Kali Linux để tìm kiếm các lỗ hổng trong Website bất kì.
Hình 2.3: Ứng dụng Vega
Tiếp theo , ta sẽ ví dụ khảo sát nhanh một số phần mềm khác cụ thể.
(a) Phần mềm Acunetix quét các lỗ hổng bảo mật web được viết bằng PHP
24
Trang 28Acunetix WVS (Web Vulnerability Scanner) là chương trình tự động kiểm tra các ứng dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL Injection,hay Cross-Site Scripting,… và tìm kiếm những chính sách đối với mật khẩu đăngnhập cũng như các phương thức xác thực vào WebSite.
Hình 2.4: Giao diện phần mềm WVS khai thác lỗ hổng bảo mật website (b) Phần mềm Havij khai thác lỗ hổng cơ sở dữ liệu SQL với ngôn ngữ lập trình web là PHP