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

Nghiên cứu bảo mật thông tin cho hệ thống website

100 5 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 100
Dung lượng 2,85 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các công cụ hỗ trợ người lập trình web, người quản trị mạng cũng xuất hiện giúp tìm kiếm lỗ hổng của ứng dụng web nhưng nó không theo kịp sự phát triển nhanh đến mức chóng mặt theo xu hư

Trang 1

LỜI CAM ĐOAN

Tôi xin cam đoan đề tài nghiên cứu của tôi do tôi nghiên cứu và thực hiện dưới

sự hướng dẫn của Thầy giáo TS Nguyễn Đình Hƣng Với mục đích học tập, nghiên

cứu để nâng cao kiến thức và trình độ chuyên môn nên tôi đã làm luận văn này một cách nghiêm túc và hoàn toàn trung thực

Để hoàn thành bản luận văn này, ngoài các tài liệu tham khảo đã liệt kê, tôi cam đoan không sao chép toàn văn các công trình hoặc thiết kế tốt nghiệp của người khác

Nếu xảy ra bất cứ điều không đúng như những lời cam đoan trên, tôi xin chịu hoàn toàn trách nhiệm trước viện và Nhà trường

Hà Nội, tháng 8 năm 2015

Học viên

Trần Thị Hằng

Trang 2

LỜI CẢM ƠN

Để hoàn thành luận văn “Nghiên cứu bảo mật thông tin cho hệ thống website”,

em xin tỏ lòng biết ơn sâu sắc đến TS – Nguyễn Đình Hưng đã tận tình hướng dẫn trong suốt quá trình viết luận văn tốt nghiệp

Em xin chân thành cảm ơn quý Thầy, Cô Viện Công nghệ Thông tin & Truyền thông, Trường Đại học Bách Khoa Hà Nội, đã tận tình truyền đạt kiến thức trong thời gian học tập và nghiên cứu Với vốn kiến thức được tiếp thu trong quá trình học tập và nghiên cứu không chỉ là nền tảng cho quá trình nghiên cứu khóa luận mà còn là hành trang quý báu để em bước vào đời một cách vững chắc và tự tin

Em rất biết ơn sự ủng hộ của đồng nghiệp, gia đình và bạn bè – những người thân yêu luôn là chỗ dựa vững chắc cho em

Trong phạm vi luận văn tốt nghiệp cao học khó có thể diễn đạt hết ý về mặt lý thuyết cũng như kỹ thuật, mặc dù đã cố gắng hoàn thành luận văn với tất cả sự nổ lực của bạn thân, song luận văn khó có thể tránh khỏi những thiếu sót Kính mong nhận được những ý kiến đóng góp để tác giả tiếp tục hoàn thiện kiến thức cũng như giải pháp của mình

Cuối cùng, em xin kính chúc Quý Thầy cô, Bạn bè, Đồng nghiệp luôn dồi dào sức khỏe và thành công trong sự nghiệp

Xin chân thành cảm ơn!

Học viên

Trần Thị Hằng

Trang 3

M C C

LỜI CAM ĐOAN

LỜI CẢM ƠN

DANH M C CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

DANH M C CÁC HÌNH VẼ, CÁC BIỂU BẢNG

MỞ ĐẦU 1

CHƯƠNG I TỔNG QUAN VỀ AN NINH AN TOÀN ỨNG D NG WEB 3

1.1 Khái niệm về an toàn thông tin 3

1.2 Các công nghệ dùng trong ứng dụng web 6

1.2.1 Giao thức HTTP, SSL 6

1.2.2 Công nghệ được sử dụng để tạo trang web 18

1.3 Phân tích thực trạng bảo mật website ngày nay 21

1.4 Các rủi ro thường gặp trong ứng dụng web 24

1.4.1 Dữ liệu đầu vào không được kiểm tra 24

1.4.2 Lỗi kiểm soát truy cập nguồn tài nguyên 26

1.4.3 Lỗi liên quan đến quá trình quản lý xác thực và phiên truy cập 27

1.4.4 Lỗi Cross Site Scripting (XSS) 27

1.4.5 Lỗi tràn bộ đệm 29

1.4.6 Lỗi Injection 30

1.4.7 Lưu trữ thiếu an toàn 31

1.4.8 Tấn công từ chối dịch vụ 32

1.4.9 Quản lý cấu hình thiếu an toàn 33

CHƯƠNG II PHÂN TÍCH CÁC VẤN ĐỀ LỖ HỔNG BẢO MẬT THÔNG TIN WEBSITE 35

2.1 Thao tác trên tham số truyền 35

2.1.1 Thao tác trên URL 35

2.1.2 Thao tác trên biến ẩn Form 36

2.1.3 Thao tác trên Cookie 38

2.1.4 Thao tác trong HTTP Header 39

Trang 4

2.2 Chèn câu lệnh truy vấn SQL (SQL Injection) 40

2.2.1 Khái niệm SQL Injection 40

2.2.2 Giới thiệu mô hình cơ sở dữ liệu 40

2.2.3 Các cách tấn công 41

2.2.4 Cách phòng chống 54

2.3 Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Side Scripting) 57 2.3.1 Kỹ thuật tấn công Cross Site Scripting (XSS) 57

2.3.2 Phương pháp tấn công XSS truyền thống 59

2.3.3 Một số website tìm thấy lỗ hổng XSS 62

2.3.4 Tấn công XSS bằng Flash 63

2.3.5 Cách phòng chống 65

2.4 Tràn bộ đệm (Buffer Overfow) 65

2.4.1 Khái niệm 65

2.4.2 Sơ đồ tổ chức của bộ nhớ 66

2.4.3 Một số cách gây tràn bộ đệm qua ứng dụng web 67

2.4.4 Các cách phòng chống 67

2.5 Tấn công từ chối dịch vụ (DoS) 67

2.5.1 Khái niệm 67

2.5.2 Những khả năng bị tấn công bằng DoS 68

2.5.3 Các kỹ thuật tấn công 68

2.5.4 Biện pháp phòng chống 73

2.6 Chiếm hữu phiên làm việc (Session Management) 74

2.6.1 Tổng quan về Session ID 74

2.6.2 Ấn định phiên làm việc 74

2.6.3 Đánh cắp phiên làm việc 76

CHƯƠNG III TRIỂN KHAI PHƯƠNG PHÁP TẤN CÔNG TỪ CHỐI DỊCH V VÀ GIẢI PHÁP BẢO MẬT WEBSITE TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT VINH 77

3.1 Tình hình ứng dụng công nghệ thông tin giai đoạn 2011-2015 77

3.1.1 Hạ tầng kỹ thuật 77

Trang 5

3.1.2 Ứng dụng nội bộ 78

3.2 Hiện trạng Website trường Đại học Sư Phạm Kỹ thuật vinh 79

3.3 Tấn công từ chối dịch vụ (DoS) 79

3.3.1 Giới thiệu về tấn công mô phỏng 79

3.3.2 Công cụ và các bước chuẩn bị 79

3.3.3 Tiến hành tấn công 80

3.4 Đánh giá 84

3.5 Giải pháp chống DoS được đưa ra cho website trường Đại học Sư phạm Kỹ thuật vinh 84

KẾT LUẬN 91

TÀI LIỆU THAM KHẢO 92

Trang 6

DANH M C CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

ICMP Internet Control Message Protocol

Trang 7

DANH M C CÁC HÌNH VẼ, CÁC BIỂU BẢNG

Hình 1.1 Cơ sở cho một mô hình tổng quát……….…… ……….… ………5

Hình 1.2 Lớp giao thức HTTP……….…… ……6

Hình 1.3 Cấu hình đầy đủ URI……….………….…… … 7

Hình 1.4 Hoạt động của HTTP……… … ……… …………8

Hình 1.5 Hoạt động kết nối của HTTP…… … ……….……… 8

Hình 1.6 Hoạt động Pipelining của HTTP……….…………8

Hình 1.7 Hoạt động GET của HTTP……….……….…… … 9

Hình 1.8 Ví dụ về web form POST………… ……….…… ……… 10

Hình 1.9 Hoạt động POST của HTTP……… ……….…… ……….…………10

Hình 1.10 Hoạt động PUT của HTTP……… ……….…… ……….…………11

Hình 1.11 Ví dụ về File Upload – PUT…… ……… …… ……….……….…11

Hình 1.12 Hoạt động File Delection – DELETE…….…… ……….…………11

Hình 1.13 Cấu trúc thông điệp HTTP Request……….…… ……….……….…12

Hình 1.14 Một ví dụ về nội dung thông điệp HTTP……… ….………….…………13

Hình 1.15 Ví dụ cụ thể về Request-Line ……… …….…… …… …….……… 13

Hình 1.16 Cấu trúc thông điệp HTTP Response …….…… …… …… …………14

Hình 1.17 Cụ thể trường Status-Line ……… …….…… …… …….…………14

Hình 1.18 Các giao thức con của SSL trong mô hình TCP/IP…… …… …………15

Hình 1.19 Từng bước thành lập một kết nối SSL…….…… …… ……….………16

Hình 1.20 Sử dụng Proxy để thay đổi tham số…….…… …… …….….…….……26

Hình 1.21 Tấn công XSS…….…… … ……… … ….……….…28

Hình 1.22 Lỗi tràn bộ đệm….…… … ……… ……… … ….…………29

Hình 1.23 Lỗi SQL Injection….…… … ……….… … ……… ……….…30

Hình 1.24 Lưu trữ thiếu an toàn….…….……….…… … ……… …………31

Hình 1.25 Tấn công từ chối dịch vụ.…….……….….… ……… …… …33

Hình 2.1 Quá trình thực hiện XSS.…….……….… … ……… …… …59

Hình 2.2 Sơ đồ tổ chức bộ nhớ.…….……….… …… ……… …… …66

Hình 2.3 Cơ chế thiết lập kết nối trước khi truyền số liệu.….………… …… …69

Hình 2.4 Tấn công DoS truyền thống.….……… …… …….69

Hình 2.5 Kiểu tấn công DoS vào băng thông.….……… …… …70

Trang 8

Hình 2.6 Tấn công DDoS.….……… ……… …… ……71

Hình 2.7 Tấn công kiểu DRDoS.….……… …… …72

Hình 3.1 Sơ đồ mạng trường Đại học Sư phạm Kỹ thuật Vinh.………… ….……78

Hình 3.2 Website trường Đại học Sư phạm Kỹ thuật Vinh.………… …… …79

Hình 3.3 Cài đặt DoSHTTP 2.5.1.……… … …… ……80

Hình 3.4 Chọn Card mạng để bắt gói tin.……… … …… …80

Hình 3.5 website mục tiêu kiểm tra.……… … …… …….81

Hình 3.6 Kiểm tra WireShark.……….……… … …… …81

Hình 3.7 Xác định mục tiêu và bắt đầu tấn công….……… … …… …82

Hình 3.8 Kiểm tra các kết nối trong WireShark khi tấn……… … …… …82

Hình 3.9 Kiểm tra lại website ……… … …… …83

Hình 3.10 Tắt phần mềm DoSHTTP……… … ……….… 83

Hình 3.11 File báo cáo kết quả ……… … …… …83

Hình 3.12 Mô hình IP Snort ……… … …… …88

Hình 3.13 Quá trình xử lý gói Hình……… … …… ……89

Hình 3.14 Công cụ FortGuard Firewall……… … …… …90

Trang 9

ra vấn đề cấp thiết cần làm như thế nào để bảo đảm an toàn thông tin cho ứng dụng web, thông tin của người sử dụng Các khái niệm chuyên môn về ứng dụng web và tấn công ứng dụng web cũng dần trở nên phổ biến hơn trong các tài liệu chuyên ngành Các công cụ hỗ trợ người lập trình web, người quản trị mạng cũng xuất hiện giúp tìm kiếm lỗ hổng của ứng dụng web nhưng nó không theo kịp sự phát triển nhanh đến mức chóng mặt theo xu hướng nhanh hơn, đẹp hơn của các ứng dụng web, tất nhiên nó không thể ngăn chặn hoàn toàn các cuộc tấn công ứng dụng web, khi mà các cuộc tấn công ngày càng đa dạng khai thác triệt để những lỗi của ứng dụng web, của người quản trị, hay người lập trình ứng dụng web

Thống kê cho thấy 75% cuộc tấn công Internet là tấn công ứng dụng web, nó gây ra những thiệt hại vô cùng to lớn, vì vậy việc tìm hiểu về tấn công ứng dụng web

là rất cần thiết nhằm có cách phòng chống tấn công và bảo mật thông tin website hiệu

quả trở thành một yêu cầu cấp thiết Luận văn “Nghiên cứu bảo mật thông tin cho hệ thống website” sẽ đáp ứng phần nào nhu cầu cấp thiết về an ninh bảo mật hiện nay

Xây dựng nên quy trình phục vụ cho việc kiểm tra và phát hiện các điểm yếu an toàn thông tin trong ứng dụng web, từ đó đưa ra báo cáo đánh giá về an toàn thông tin cho website

Luận văn gồm 3 chương với các nội dung sau:

Chương I: Tổng quan về an ninh an toàn ứng dụng web

Trình bày khái niệm về an toàn thông tin Các rủi ro thường gặp và cơ chế phòng thủ trong ứng dụng web

Chương II: Phân tích các vấn đề lỗ hổng bảo mật thông tin website

Trang 10

Trình bày một cách chi tiết các phương thức tấn công cũng như các cách thức phòng chống tấn công

Chương III: Triển khai demo các hình thức tấn công và các giải pháp bảo mật cho Website trường Đại học Sư phạm Kỹ thuật vinh

Mô phỏng một số tấn công điển hình như SQL Injection, DoS, và giải pháp thực nghiệm phòng chống tấn công cho website trường Đại học Sư phạm Kỹ thuật Vinh

Luận văn đã được kiểm tra kỹ nhưng cũng không tránh khỏi những sai sót, rất mong nhận được sự đóng góp ý kiến của quý thầy cô, bạn bè và các đồng nghiệp để đề tài hoàn thiện hơn nữa

Trang 11

CHƯƠNG I TỔNG QUAN VỀ AN NINH AN TOÀN ỨNG D NG WEB

1.1 Khái niệm về an toàn thông tin

Thông tin được lưu trữ bởi các sản phẩm và hệ thống CNTT là một tài nguyên quan trọng cho sự thành công của tổ chức đó, là tài sản của một cá nhân hay tổ chức Các thông tin cá nhân lưu trữ trong hệ thống thông tin cần được giữ bí mật, bảo vệ và không bị thay đổi khi không được phép Trong khi các sản phẩm và hệ thống CNTT thực hiện các chức năng của chúng, các thông tin cần được kiểm soát để đảm bảo chúng được bảo vệ chống lại các nguy cơ, ví dụ như việc phổ biến và thay đổi thông tin không mong muốn và trái phép, nguy cơ mất mát thông tin [1],[5],[6]

An toàn thông tin là an toàn kỹ thuật cho các hoạt động của các cơ sở hạ tầng

thông tin, trong đó bao gồm an toàn phần cứng và phần mềm theo các tiêu chuẩn kỹ thuật do nhà nước ban hành; duy trì các tính chất bí mật, toàn vẹn, chính xác, sẵn sàng phục vụ của thông tin trong lưu trữ, xử lý và truyền tải trên mạng (theo định nghĩa trong Nghị định 64-2007/NĐ-CP)

Thuật ngữ an toàn CNTT thường sử dụng để chỉ việc ngăn chặn và làm giảm

nhẹ các mối nguy hại tương tự đối với các sản phẩm và hệ thống CNTT

Mục tiêu hướng tới của người dùng là bảo vệ các tài sản nói trên Tuy nhiên, các sản phẩm và hệ thống thường luôn tồn tại những điểm yếu dẫn đến những rủi ro có thể xảy ra, làm tổn hại đến giá trị tài sản thông tin Các đối tượng tấn công (tin tặc) có chủ tâm đánh cắp, lợi dụng hoặc phá hoại tài sản của các chủ sở hữu, tìm cách khai thác các điểm yếu để tấn công, tạo ra các nguy cơ và các rủi ro cho các hệ thống

Với các biện pháp an toàn thông tin người dùng có được công cụ trong tay để nhận thức được các điểm yếu, giảm thiểu các điểm yếu, ngăn chặn các nguy cơ tấn công, làm giảm các yếu tố rủi ro Như vậy, các biện pháp và kỹ thuật đảm bảo an toàn thông tin chính là mang lại sự tin cậy cho các sản phẩm và hệ thống

Đảm bảo an toàn thông tin là đảm bảo an toàn kỹ thuật cho hoạt động của các

cơ sở hạ tầng thông tin, trong đó bao gồm đảm bảo an toàn cho cả phần cứng và phần mềm hoạt động theo các tiêu chuẩn kỹ thuật do nhà nước ban hành; ngăn ngừa khả năng lợi dụng mạng và các cơ sở hạ tầng thông tin để thực hiện các hành vi trái phép gây hại cho cộng đồng, phạm pháp hay khủng bố; đảm bảo các tính chất bí mật, toàn

Trang 12

vẹn, chính xác, sẵn sàng phục vụ của thông tin trong lưu trữ, xử lý và truyền tải trên mạng

Như vậy khái niệm đảm bảo an toàn thông tin bao hàm đảm bảo an toàn cho cả phần cứng và phần mềm An toàn phần cứng là bảo đảm hoạt động cho cơ sở hạ tầng thông tin An toàn phần mềm gồm các hoạt động quản lý, kỹ thuật nhằm bảo vệ hệ thống thông tin, đảm bảo đảm cho các hệ thống thực hiện đúng chức năng, phục vụ đúng đối tượng một cách sẵn sàng, chính xác, tin cậy An toàn công nghệ thông tin là đảm bảo an toàn kỹ thuật cho các sản phẩm, dịch vụ và hệ thống công nghệ thông tin

An toàn thông tin yêu cầu nhằm đảm bảo 3 đặc điểm quan trọng nhất của thông tin, đó là: tính bí mật, tính toàn vẹn và tính sẵn sàng Các đặc điểm này bao trùm toàn

bộ phạm trù an toàn các hệ thống thông tin Các đặc điểm này cũng đúng với mọi tổ chức, không lệ thuộc vào việc chúng chia sẻ thông tin như thế nào

Tính bí mật

Tính bí mật là tâm điểm chính của mọi giải pháp an toàn cho một sản phẩm trên

hệ thống CNTT Một giải pháp an toàn là tập hợp các quy tắc xác định quyền được truy cập đến với thông tin đang tìm kiếm, đối với một số lượng người sử dụng thông tin nhất định và một số lượng thông tin là tài sản nhất định Trong trường hợp kiểm soát truy cập cục bộ, nhóm người truy cập sẽ được kiểm soát xem là họ đã truy cập những số liệu nào Tính bí mật là sự đảm bảo rằng các chức năng kiểm soát truy cập

có hiệu lực

Tính toàn vẹn

Tính toàn vẹn, không bị sửa đổi là đặc tính phức hợp nhất và dễ bị hiểu lầm của thông tin Một định nghĩa khái quát hơn được sử dụng ở trong tài liệu này là vấn đề cấp độ là chất lượng của số liệu (thông tin), chứ không phải là con người được, hoặc không được phép truy cập Đặc tính toàn vẹn được hiểu là chất lượng của thông tin được xác định căn cứ vào độ xác thực khi phản ánh thực tế Số liệu càng gần với thực

tế bao nhiêu thì chất lượng thông tin càng chuẩn bấy nhiêu

Tính sẵn sàng

Tính sẵn sàng của thông tin cũng là một đặc tính quan trọng, không khác gì các đặc tính đã đề cập đến Đó là khía cạnh sống còn của an toàn thông tin, đảm bảo cho

Trang 13

thông tin đến đúng địa chỉ (người được phép sử dụng) khi có nhu cầu, hoặc được yêu cầu

Bộ ba các đặc tính then chốt của thông tin đề cập đến ở trên bao trùm toàn bộ các mặt của việc đảm bảo an toàn thông tin Một ma trận được tạo nên bởi 3 yếu tố là

3 trạng thái của thông tin (truyền dẫn, lưu giữ, xử lí) được minh họa ở trục hoành; cùng với 3 đăc tính then chốt của thông tin (độ tin cậy, tính toàn vẹn, tính sẵn sàng) được minh họa trên trục tung có thể được sử dụng làm nền tảng cho mô hình thể hiện các biện pháp an toàn thông tin

Hình 1.1 Cơ sở cho một mô hình tổng quát

Các biện pháp an toàn hệ thông thông tin được phân loại thành 3 lớp như sau, tạo thành chiều thứ 3 của không gian ma trận:

Các biện pháp công nghệ: Bao hàm tất cả các biện pháp thiết bị phần cứng, các

phần mềm, phần sụn (firmware) cũng như các kỹ thuật công nghệ liên quan được

áp dụng nhằm đảm bảo các yêu cầu an toàn của thông tin trong các trạng thái của

nó như đã kể trên

Các biện pháp về tổ chức: Đưa ra các chính sách, quy định, phương thức thực

thi Thực tế cho thấy, an toàn thông tin không chỉ đơn thuần là vấn đề thuộc phạm trù công nghệ, kỹ thuật Hệ thống chính sách và kiến trúc tổ chức đóng một vai trò hữu hiệu trong việc đảm bảo an toàn thông tin

Các biện pháp về đào tạo, tập huấn, nâng cao nhận thức: Các biện pháp công

nghệ hay các biện pháp về tổ chức thích hợp phải dựa trên các biện pháp đào tạo, tập huấn và tăng cường nhận thức để có thể triển khai đảm bảo an toàn thông tin từ nhiều hướng khác nhau Các nhà nghiên cứu và các kỹ sư cũng cần phải hiểu rõ các nguyên lý an toàn hệ thống thông tin, thì mới mong các sản phẩm và hệ thống

Trang 14

do họ làm ra đáp ứng được các nhu cầu về an toàn thông tin của cuộc sống hiện tại đặt ra

Mô hình ma trận không gian 3 chiều kể trên có thể áp dụng làm cơ sở cho đánh giá an toàn thông tin một cách khái quát nhất Ví dụ: Người đánh giá an toàn thông tin cho một sản phẩm là một hệ thống thông tin sẽ phải xác định các trạng thái thông tin trong hệ thống cần được đánh giá Mô hình tổng quát này sẽ cho phép xác định các trạng thái thông tin không bị lệ thuộc vào bất kỳ công nghệ cụ thể nào đang được áp dụng

1.2 Các công nghệ dùng trong ứng dụng web

Hình 1.2 Lớp giao thức HTTP

Trang 15

1.2.1.1.2 URI – Uniform Resource Identifiers

Thông thường, chúng ta quen thuộc với định nghĩa URL (Uniform Resource Locators) Địa chỉ http://www.example.com là một ví dụ về URL Trên thực tế, không

có nhiều khác biệt giữa hai khái niệm URL và URI, URL là chỉ một loại của URI

URI là một đặc điểm kỹ thuật của giao thức HTTP Như hình dưới cho thấy một URI chứa rất nhiều các thành phần, không đơn giản như URL

Hình 1.3 Cấu hình đầy đủ URI

 Protocol: Xác định các giao thức và các ứng dụng cần thiết để truy cập tài nguyên, trong trường hợp này là giao thức HTTP

 Username: Nếu giao thức hỗ trợ khái niệm về tên người dùng thì username cung cấp tên người dùng để chứng thực truy cập tài nguyên

 Password: Mật khẩu truy cập tài nguyên

 Host: Tên miền truyền thông cho webserver

 Port: Là port cho các giao thức lớp ứng dụng, ví dụ như HTTP là cổng 80 (có thể bỏ qua tham số này)

 Path: Đường dẫn path cấp đến tài nguyên được đặt trên server

 File: Tên các tập tin tài nguyên trên server

 Query: Các truy vấn thêm thông tin về tài nguyên của client

 Fragment: Một vị trí nào đó trong tài nguyên

1.2.1.1.3 Hoạt động HTTP

 Kết nối

HTTP thuộc giao thức TCP, vì vậy trước khi tiến hành truyền thông phải thực hiện phiên kết nối TCP

Trang 16

Trước đây, mỗi kết nối TCP sẽ thực hiện chỉ một request HTTP và một response, nghĩa là nếu client request 2 lần thì sẽ cần 2 phiên kết nối TCP Điều này gây

ra nhiều bất cập, ảnh hưởng rất nhiều đến hiệu năng hoạt động của server

Trang 17

 Web Page Retrieval – GET

Hoạt động HTTP đơn giản nhất là GET Đó là cách để client lấy một đối tượng hoặc tài nguyên nào đó trên server Các trình duyệt sẽ yêu cầu một website từ server với GET

Hình 1.7 Hoạt động GET của HTTP

Với ví dụ trên, client khởi tạo và gửi thông điệp GET đến server, thông điệp này định danh đối tượng mà client yêu cầu server đáp ứng bằng một URI (Uniform Resource Identifier) Server có thể trả về tài nguyên mà client yêu cầu với một mã trạng thái 200 OK Nếu server không đáp ứng được yêu cầu client thì nó sẽ gửi về một

số mã trạng thái khác được mô tả ở bảng bên dưới

Mã trạng

100 – 199 Thông tin: các server nhận được yêu cầu nhưng kết quả chưa có sẵn để trả

về client

200 - 299 Thành công: Các server đã có thể trả về theo yêu cầu thành công

300 – 399 Chuyển hướng: Các client đã được chuyển hướng yêu cầu đến server

khác hoặc tài nguyên khác

400 – 499 Lỗi client: Các yêu cầu của client chứa lỗi mà server không thể trả về kết

quả

500 – 599 Lỗi server: Server đã không hành động theo yêu cầu, ngay cả yêu cầu là

hợp lệ

Bảng Mã trạng thái được trả về của HTTP

 Web Forms – POST

Trong khi GET cho phép một server gửi thông tin đến client, thì hoạt động POST cung cấp một cách để client gửi thông tin đến các server Trình duyệt sử dụng POST để gửi nội dung các Form đến web server Hình dưới cho thấy một ví dụ như vậy:

Trang 18

Hình 1.8 Ví dụ về web form POST

Hình 1.9 Hoạt động POST của HTTP

Như hình trên cho thấy, hoạt động POST đơn giản như GET Client gửi một thông điệp POST và bao gồm thông tin mà nó muốn gửi đến server Cũng giống như GET, một phần của thông điệp POST là URI Nhưng trong trường hợp này, URI xác định các đối tượng trên server có thể xử lý thông tin

Cũng như GET, server có thể trả về thông tin cho client Đối với trình duyệt web, thông tin thường là một trang web mới để hiển thị

 File Upload – PUT

Các hoạt động PUT cũng cung cấp một cách để client gửi thông tin đến các server Hay nói cách khác, PUT dùng để upload dữ liệu lên server

Như hình dưới đây cho thấy, hai hoạt động nhìn rất giống nhau Với POST, client gửi bao gồm một URI và dữ liệu Web server về mã trạng thái, tùy chọn kèm theo và dữ liệu Sự khác biệt giữa POST và PUT ở chỗ URI: Với POST, các URI xác định một đối tượng trên server mà có thể xử lý dữ liệu Với một PUT, các URI xác định đối tượng trong đó các server nên đặt dữ liệu (ví dụ đường dẫn cho server đặt dữ liệu)

Trang 19

Trong khi một POST URI thường chỉ ra một chương trình, scrip… thì PUT URI thường là đường dẫn và tên cho tập tin

Hình 1.10 Hoạt động PUT của HTTP

Hình 1.11 Ví dụ về File Upload – PUT

 File Delection – DELETE

Với GET và PUT, giao thức HTTP trở thành một giao thức chuyển file đơn giản Hoạt động DELETE sẽ hoàn thành chức năng này bằng cách giúp client xóa các đối tượng, tài nguyên từ các server

Như hình dưới đây cho thấy, client gửi một thông DELETE cùng với các URI của đối tượng mà server nên xóa Các server đáp ứng một mã trạng thái và dữ liệu kèm theo

Hình 1.12 Hoạt động File Delection – DELETE

Trang 20

 Trạng thái – HEAD

Các hoạt động của HEAD giống như GET, ngoại trừ server không trả lại đối tượng thực tế yêu cầu Cụ thể, server sẽ trả về một mã trạng thái nhưng không có dữ liệu (HEAD có nghĩa là “tiêu đề”, nghĩa là server chỉ trả về thông điệp chứa tiêu đề chứ không chứa dữ liệu)

Client có thể sử dụng thông điệp HEAD khi muốn xác minh rằng một đối tượng

có tồn tại hay không

Ví dụ: Có thể sử dụng thông điệp HEAD để đảm bảo liên kết đến một đối tượng hợp lệ mà không tiêu tốn băng thông

Cache trong trình duyệt cũng có thể sử dụng thông điệp HEAD để xem một đối tượng đã thay đối hay không, nếu không thay đổi thì hiển thị thông tin đã được lưu trước đây, nếu thay đổi thì sẽ thực hiện GET để lấy dữ liệu về từ server

1.2.1.1.4 Thông điệp HTTP

Một thông điệp HTTP bắt đầu với một “line” hay một mã trạng thái, có thể được theo sau bởi các tiêu đề (header) khác nhau và phần thân (body) của thông điệp

Cấu trúc của thông điệp HTTP:

HTTP có hai tác nhân là client và server Các client gửi yêu cầu (request) và server trả lời (response) Vì vậy, chúng ta sẽ phân tích hai thông điệp chính là HTTP Requests và HTTP Responses

 HTTP Request

Hình 1.13 Cấu trúc thông điệp HTTP Request

Trang 21

Hình trên cho thấy cấu trúc cơ bản của HTTP Requests Một HTTP Request bắt đầu bởi Request-Line Request-Line có thể được theo sau bởi một hoặc nhiều header

và body

Để cụ thể hơn, hình bên dưới cho thấy một thông điệp http (dưới dạng văn bản)

do Internet Explorer của Microsoft gửi khi người dùng truy cập vào trang http://www.ft.com Dòng đầu tiên là Request-Line, và tiêu đề thông điệp tạo nên phần còn lại của văn bản

Hình 1.14 Một ví dụ về nội dung thông điệp HTTP

Hình dưới phân tích cụ thể hơn Request-Line, bao gồm 3 phần: Method-Phương thức của thông điệp, URI và Version-Phiên bản của HTTP

Hình 1.15 Ví dụ cụ thể về Request-Line

Phương thức (method) cụ thể xuất hiện đầu tiên trong Request-Line Trong ví

dụ trên đây là một phương thức GET

Mục tiếp theo trong Request-Line là Request-URI chứa nguồn tài nguyên cần truy cập Trong ví dụ trên, Request-URI là (/), chỉ ra một yêu cầu đối với các nguồn tài nguyên gốc Phần cuối cùng của Request-Line là phiên bản HTTP Như ví dụ trên cho thấy, HTTP phiên bản 1.1

 HTTP Response

Request Response bắt đầu bởi Status-Line (dòng mã trạng thái) Sau đó là phần thông tin của Header và một dòng trắng Cuối cùng là phần body

Trang 22

Hình 1.16 Cấu trúc thông điệp HTTP Response

Status-Line bắt đầu bởi số phiên bản của HTTP (trường hợp này là HTTP/1.1), sau đó là mã trạng thái (trường hợp này là 200 OK)

Giao thức SSL tổ hợp nhiều giải thuật mã hóa nhằm đảm bảo quá trình trao đổi thông tin trên mạng được bảo mật Việc mã hóa dữ liệu diễn ra một cách trong suốt, hỗ trợ nhiều giao thức khác chạy trên nền giao thức TCP

Giao thức SSL được hình thành và phát triển đầu tiên năm 1994 bởi nhóm nghiên cứu Netscape dẫn dắt bởi Elgammal và ngày nay đã trở thành chuẩn bảo mật

Trang 23

thực hành trên Internet SSL là giao thức tầng (layered protocol), bao gồm 4 giao thức con sau:

Hình 1.18 Các giao thức con của SSL trong mô hình TCP/IP

Theo biểu đồ trên, SSL nằm trong tầng ứng dụng của giao thức TCP/IP Do đặc điểm này, SSL có thể được dùng trong hầu hết mọi hệ điều hành hỗ trợ TCP/IP mà không cần phải chỉnh sửa nhân của hệ thống hoặc ngăn xếp TCP/IP Điều này mang lại cho SSL sự cải tiến mạnh mẽ so với các giao thức khác như IPSec (IP Security Protocaol) Vì giao thức này đòi hỏi nhân hệ điều hành phải hỗ trợ và chỉnh sửa ngăn xếp TCP/IP SSL cũng có thể dễ dàng vượt qua tường lửa và proxy, cũng như NAT (Network Address Translation) mà không cần nguồn cung cấp

Hoạt động của giao thức SSL

Điểm cơ bản của SSL được thiết kế độc lập với tầng ứng dụng để đảm bảo tính

bí mật, an toàn và chống giả mạo luồng thông tin qua Internet giữa hai ứng dụng bất

Trang 24

kỳ, ví dụ như webserver và các trình duyệt khách (browsers), do đó được sử dụng rộng rãi trong nhiều ứng dụng khác nhau trên môi trường Internet

Toàn bộ cơ chế hoạt động và hệ thống thuật toán mã hóa sử dụng trong SSL được phổ biến công khai, trừ khóa chia sẻ tạm thời (session key) được sinh ra tại thời điểm trao đổi giữa hai ứng dụng là tạo ngẫu nhiên và bí mật đối với người quan sát trên mạng máy tính Ngoài ra, giao thức SSL còn đòi hỏi ứng dụng chủ phải được chứng thực bởi một đối tượng lớp thứ ba (CA) thông qua giấy chứng thực điện tử (digital certificate) dựa trên mật mã công khai (ví dụ RSA)

Sau đây ta xem xét một cách khái quát cơ chế hoạt động của SSL để phân tích cấp độ an toàn của nó và các khả năng áp dụng trong các ứng dụng nhạy cảm, đặc biệt

là các ứng dụng về thương mại và thanh toán điện tử…

Hình 1.19 Từng bước thành lập một kết nối SSL

Trang 25

Giao thức SSL dựa trên hai nhóm con giao thức là giao thức “bắt tay” (handshake protocol) và giao thức “bản ghi” (record protocol) Giao thức bắt tay xác định các tham số giao dịch giữa hai đối tượng có nhu cầu trao đổi thông tin hoặc dữ liệu, còn giao thức bản ghi xác định khuôn dạng cho tiến hành mã hóa và truyền tin hai chiều giữa hai đối tượng đó Khi hai ứng dụng máy tính, ví dụ giữa một trình duyệt web và máy chủ web, làm việc với nhau, máy chủ và máy khách sẽ trao đổi “lời chào” (hello) dưới dạng các thông điệp cho nhau với xuất phát đầu tiên chủ động từ máy chủ, đồng thời xác định các chuẩn về thuật toán mã hóa và nén số liệu có thể được áp dụng giữa hai ứng dụng Ngoài ra, các ứng dụng còn trao đổi “số nhận dạng/khóa theo phiên” (session ID, session key) duy nhất cho lần làm việc đó Sau đó ứng dụng khách yêu cầu có chứng thực điện tử (digital certificate) xác thực của ứng dụng chủ (web server)

Chứng thực điện tử thường được xác nhận rộng rãi bởi một cơ quan trung gian (là CA-Certificate Authority) như RSA Data Sercurity hay VeriSign Inc., một dạng tổ chức độc lập, trung lập và có uy tín Các tổ chức này cung cấp dịch vụ “xác nhận” số nhận dạng của một công ty và phát hành chứng chỉ duy nhất cho công ty đó như là bằng chứng nhận dạng (identity) cho các giao dịch trên mạng, ở đây là các máy chủ web server

Sau khi kiểm tra chứng chỉ điện tử của máy chủ (sử dụng thuật toán mật mã công khai, như RSA tại trình máy trạm), ứng dụng máy trạm sử dụng các thông tin trong chứng chỉ điện tử để mã hóa thông điệp gửi lại máy chủ mà chỉ có máy chủ có thể giải mã Trên cơ sở đó, hai ứng dụng trao đổi khóa chính (master key) – khóa bí mật hay khóa đối xứng - để làm cơ sở cho việc mã hóa luồng thông tin/dữ liệu qua lại giữa hai ứng dụng chủ khách Toàn bộ cấp độ bảo mật và an toàn của thông tin/dữ liệu phụ thuộc vào một số tham số:

(1) số nhận dạng theo phiên làm việc ngẫu nhiên

(2) cấp độ bảo mật của các thuật toán bảo mật áp dụng cho SSL

(3) độ dài của khóa chính (key length) sử dụng cho lược đồ mã hóa thông tin

Các thuật toán mã hóa dùng trong SSL

Các thuật toán mã hóa (cryptographic algorithm hay còn gọi là cipher) là các hàm toán học được sử dụng để mã hóa và giải mã thông tin Giao thức SSL hỗ trợ rất

Trang 26

nhiều các thuật toán mã hóa, được sử dụng để thực hiện các công việc trong quá trình xác thực server và client, truyền tải các certificates và thiết lập các khóa của từng phiên giao dịch (session key) Client và server có thể hỗ trợ các bộ mã (cipher suite) khác nhau tùy thuộc vào nhiều yếu tố như phiên bản SSL đang dùng, chính sách của công ty về độ dài khóa mà họ cảm thấy chấp nhận được - điều này liên quan đến mức

độ bảo mật của thông tin,…

1.2.2 Công nghệ đƣợc sử dụng để tạo trang web

Ban đầu, các trang web tĩnh; người dùng gửi yêu cầu một tài nguyên nào đó, và server sẽ trả về tài nguyên đó Các trang web không có gì hơn là một văn bản được định dạng và phân tán Đối với các trình duyệt, thì trang web tĩnh không phải là các vấn đề khó khăn, và trang web lúc đầu chỉ để thông tin về các sự kiện, địa chỉ, hay lịch làm việc qua Internet mà thôi, chưa có sự tương tác qua các trang web

Năm 1990, Tim Berners-Lee, tại CERN, đã sáng chế ra HTML (Hyper Text Markup language), ngôn ngữ đánh dấu siêu văn bản HTML rất đơn giản và dễ dùng,

và nó trở thành một ngôn ngữ rất phổ biến và cơ bản

Tuy nhiên, không lâu sau đó, nhu cầu về các trang web động, có sự tương tác ngày một tăng, chính vì thế sự ra đời các công nghệ web động là một điều tất yếu Sau đây là một số công nghệ web động cơ bản:

Tuy nhiên, CGI không phải là cách an toàn cho các trang web động Với CGI, người khác có thể chạy chương trình trên hệ thống Vì thế có thể chạy các chương trình không mong muốn gây tổn hại hệ thống Nhưng dù vậy, cho đến nay thì CGI vẫn còn được sử dụng

Trang 27

1.2.2.2 Applet

Tháng 5/1995, John Gage của hãng sun và Andressen (nay thuộc Netscape Communications Corporation) đã công bố một ngôn ngữ lập trình mới có tên Java Netscape Navigator đã hỗ trợ ngôn ngữ này, và một con đường mới cho các trang web động được mở ra, kỷ nguyên của applet bắt đầu

Applet cho phép các nhà phát triển viết các ứng dụng nhỏ nhúng vào trang web Khi người dùng sử dụng một trình duyệt hỗ trợ Java, họ có thể chạy các applet trong trình duyệt trên nền máy ảo Java Virtual Machine (JVM) Dù rằng applet làm được nhiều điều song nó cũng có một số nhược điểm: thường bị chặn bởi việc đọc và ghi các file hệ thống, không thể tải các thư viện, hoặc đôi khi không thể thực thi trên phía client Bù lại những hạn chế trên applet được chạy trên mô hình bảo mật kiểu sandbox bảo vệ người dùng khỏi các đoạn mã nguy hiểm

Có những lúc applet được sử dụng rất nhiều, nhưng nó cũng có những vấn đề nảy sinh: đó là sự phụ thuộc vào máy ảo Java JVM, các applet chỉ thực thi khi có môi trường thích hợp được cài đặt phía client, hơn nữa tốc độ của các applet là tương đối chậm vì thế applet không phải là giải pháp tối ưu cho web động

1.2.2.3 JavaScript

Cùng thời gian này, Netscape đã tạo ra một ngôn ngữ kịch bản gọi là JavaScript JavaScript được thiết kế để việc phát triển dễ dàng hơn cho các nhà thiết kế web và các lập trình viên không thành thạo Java (Microsoft cũng có một ngôn ngữ kịch bản gọi là VBScript) JavaScript ngay lập tức trở thành một phương pháp hiệu quả để tạo ra các trang web động Việc người ta coi các trang như là một đối tượng đã làm nảy sinh một khái niệm mới gọi là Document Object Model (DOM) Lúc đầu thì JavaScript và DOM có một sự kết hợp chặt chẽ nhưng sau đó chúng được phân tách DOM hoàn toàn là cách biểu diễn hướng đối tượng của trang web và nó có thể được sửa đổi với các ngôn ngữ kịch bản bất kỳ như JavaScript hay VBScript

Tổ chức World Wide Web Consortium (W3C) đã chuẩn hóa DOM, trong khi European Computer Manufacturers Association (ECMA) phê duyệt JavaScript dưới dạng đặc tả ECMAScript

Trang 28

1.2.2.4 JSP/Servlet, ASP và PHP

Cùng với Java, Sun đồng thời đưa ra một công nghệ mới gọi là servlet Các đoạn mã Java sẽ không chạy phía client như với applet; chúng sẽ được chạy trên một ứng dụng phía server Servlet cũng đồng thời phục vụ các CGI script Servlet là một bước tiến lớn, nó đưa ra một thư viện hàm API trên Java và một thư viện hoàn chỉnh

để thao tác trên giao thức HTTP JavaServer Page (JSP) là một công nghệ lập trình web của Sun, cùng với nó là một công nghệ khác của Microsoft – Active Server pages (ASP), JSP là công nghệ đòi hỏi một trình chủ hiểu được Java

Microsoft đã nghiên cứu các nhược điểm của servlet và tạo ra ASP dễ dàng hơn

để thiết kế các trang web động Microsoft thêm các bộ công cụ rất mạnh và sự tích hợp rất hoàn hảo với các web server JSp và ASP có những nét tương đương vì chúng đều được thiết kế để phân tách quá trình xử lý khỏi quá trình biểu diễn Có sự khác biệt về

kỹ thuật, song cả hai đều cho phép các nhà thiết kế web tập trung vào cách bố trí (layout) trong khi các nhà phát triển phần mềm thì tập trung vào các kỹ thuật lập trình logic Tất nhiên Microsoft và Sun không độc quyền ở các giải pháp phía server Còn

có các công nghệ khác, trong đó phải kể đến là PHP (Hypertext Preprocessor) cho tới Cold Fusion Các công nghệ này cung cấp các công cụ rất mạnh cho các nhà phát triển

1.2.2.5 Flash

Năm 1996, FutureWave đã đưa ra sản phẩm FutureSplash Animator Sau đó FutureWave thuộc sở hữu của Macromedia, và công ty này đưa ra sản phẩm Flash Flash cho phép các nhà thiết kế tạo các ứng dụng hoạt họa và linh động Flash không đòi hỏi các kỹ năng lập trình cao cấp và rất dễ học Cũng giống như nhiều giải pháp khác Flash yêu cầu phần mềm phía client Chẳng hạn như gói Shockwave Player plug-

in có thể được tích hợp trong một số hệ điều hành hay trình duyệt

1.2.2.6 DHTML

Khi Microsoft và Netscape đưa ra các version 4 của các trình duyệt của họ, thì các nhà phát triển web có một lựa chọn mới: Dynamic HTML (DHTML) DHTML không phải là một chuẩn của W3C; nó giống một bộ công cụ thương mại hơn Trong thực tế nó là một tập hợp gồm HTML Cascading Style Sheets (CSS), JavaScript và DOM Tập hợp các công nghệ trên cho phép các nhà phát triển sửa đổi nội dung và

Trang 29

cấu trúc của một trang web một cách nhanh chóng Tuy nhiên, DHTML yêu cầu sự hỗ trợ từ các trình duyệt Mặc dù cả Internet Explorer và Netscape hỗ trợ DHTML, nhưng các thể hiện của chúng là khác nhau, các nhà phát triển cần thiết phải biết được loại trình duyệt nào mà phía client dùng DHTML thật sự là một bước tiến mới, nhưng nó vẫn cần một sự quy chuẩn để phát triển Hiện nay DHTML vẫn đang trên con đường phát triển mạnh

1.2.2.7 XML

Kể từ khi ra đời vào giữa năm 1990 Extensible Markup Language (XML) của W3C dẫn xuất của SGML đã trở nên rất phổ biến XML có mặt ở khắp nơi, Microsoft Office 12 cũng sẽ hỗ trợ định dạng file XML

Ngày nay chúng ta có rất nhiều dạng dẫn xuất của XML cho các ứng dụng web: XUL của Mozilla; XAMJ, một sản phẩm mã nguồn mở trên nền Java; MXML từ Macromedia; và XAML của Microsoft

1.3 Phân tích thực trạng bảo mật website ngày nay

Cùng với sự phát triển chung của thế giới, trong những năm gần đây, số lượng thuê bao Internet của Việt Nam tăng trưởng nhanh chóng Hiện, số thuê bao Internet chiếm gần 32% dân số Việt Nam Đa số các doanh nghiệp và các tổ chức có hệ thống mạng và website giới thiệu, quảng bá thương hiệu, với gần 200.000 tên miền vn và hàng triệu tên miền thương mại Có rất nhiều doanh nghiệp đã ứng dụng thanh toán trực tuyến vào công việc kinh doanh, giao dịch,…

Tuy nhiên, mạng Internet Việt Nam còn tiềm ẩn rất nhiều những nguy cơ về mặt an ninh, an toàn thông tin Dựa trên các bản báo cáo tổng hợp về an ninh thông tin của nhiều hãng bảo mật nước ngoài như McAfee, Kaspersky hay CheckPoint…, nguy

cơ mất an toàn thông tin ở Việt Nam đang tăng lên đứng thứ 5 trong tổng số 10 nước

có nguy cơ mất an toàn thông tin cao nhất trong năm 2010 Cụ thể, Việt Nam đứng sau Trung Quốc, Nga, Ấn Độ và Mỹ về mức độ rủi ro mà qua đó người sử dụng và các nhà cung cấp dịch vụ Internet có thể bị tấn công Năm quốc gia còn lại gồm Đức, Malaysia, Pháp, Ukraine và Tây ban Nha

Theo đánh giá của một số chuyên gia về an ninh mạng, các tên miền vn đang đứng hàng thứ 3 trong bảng xếp hạng các tên miền có nguy cơ bị tấn công (khoảng

Trang 30

15.000 website) Đặc biệt, đã có nhiều trang web có tên miền vn bị hacker tấn công dùng làm địa chỉ để chuyển hướng ngầm truy cập của người sử dụng đến các web chứa

mã độc để cài cắm các phần mềm gián điệp vào máy người truy cập, đánh cắp thông tin cá nhân

Các chuyên gia an ninh mạng cũng cho biết, đa số các trang web lớn của Việt Nam đều có lỗ hổng bảo mật và có thể bị chiếm quyền điều khiển Lỗ hổng an ninh của các hệ thống ngày càng được phát hiện nhiều hơn Số lượng các điểm yếu an ninh trong năm 2010 là 4.300, có tới 30% lỗ hổng có mức độ nguy hiểm cao Gần một nửa (49%) số lỗ hổng an ninh vẫn chưa có các bản vá do nhà cung cấp dịch vụ phát hành

Hiện trạng an toàn thông tin Việt Nam năm 2014

Diễn biến ngày càng phức tạp của tội phạm công nghệ cao gióng lên hồi chuông cảnh báo về nguy cơ mất an toàn an ninh mạng tại Việt Nam Tính đến hết quý III năm

2014, tổng khối lượng website “.vn” của Việt Nam bị tấn công và chiếm quyền kiểm soát đã lên đến con số hơn 6.500 Trung bình mỗi ngày có hơn 18 website của Việt Nam bị chiếm quyền điều khiển, trong đó hầu hết các tấn công xuất phát điểm đều đến

từ các nguồn ngoài lãnh thổ

Theo SecurityDaily, trong 2 ngày 10-11/5/2014 đã có hơn 200 website của Việt Nam bị các nhóm hacker tấn công và để lại những lời nhắn, hình ảnh mang tính chất khiêu khích và chứng tỏ các website đó đều đã bị kiểm soát Ngoài ra, một số đợt tấn công cao điểm từ bên ngoài nhắm vào hệ thống website Việt Nam có thể kể đến nữa là

2 đợt tấn công của các nhóm tin tặc vào cuối tháng 4/2014 và đầu tháng 9/2014 Đặc biệt, trong nửa đầu tháng 9/2014 đã có tổng cộng 1039 website của Việt Nam bị chiếm quyền trong cùng một thời điểm, đây là con số cao nhất được ghi nhận của năm nay Điểm đáng chú ý là chỉ riêng trong hai đợt tấn công này, có đến 30 website của các cơ quan chính phủ và 69 website của cơ quan giáo dục Việt Nam bị chiếm quyền hoặc bị thay đổi giao diện trang chủ

Một nghiên cứu vừa được công ty công nghệ Akamai có trụ sở tại Massachusetts, Hoa Kỳ, công bố cho thấy 43% các vụ tấn công trên mạng Internet toàn cầu và phát tán virus đến từ Trung Quốc Đứng ở vị trí thứ hai là Indonesia với 15%, Mỹ đứng thứ 3 với 13%, Đài Loan 3,7%, Ấn Độ 2,1%, Nga 2%, Brazil 1,7%, Hàn Quốc 1,4%, Romania và Thổ Nhĩ Kỳ 1,2%

Trang 31

Không nằm ngoài những thống kê trên của Mỹ, chủ mưu thực hiện các cuộc tấn công quy mô tại Việt Nam kể trên phần lớn là do nhóm tin tặc Trung Quốc mang tên 1937CN, hoạt động dưới sự bảo trợ của chính phủ nước này 1937CN cũng chính là nhóm đã thực hiện vụ tấn công vào máy chủ DNS của facebook.com.vn và thegioididong.com trong tháng 8/2013 Sau khi chiếm quyền thành công, nhóm công khai trên đưa lên trang chủ của mình các thông tin liên quan đến những vấn đề nhạy cảm giữa Việt Nam và Trung Quốc, về biển Đông cũng như các chiến tích đạt được trong việc tấn công các website Việt Nam Ngoài ra, nhóm 1937CN cũng đã từng tấn công nhiều website “.gov.vn” (website của các tổ chức chính phủ Việt Nam)

Không chỉ riêng có 1937 CN tham gia tấn công, Sky-Eyeye, một nhóm hacker lớn khác của Trung Quốc cũng tham gia và đã thực hiện tấn công gần 100 website của Việt Nam Nếu năm 2013 chỉ ghi nhận hơn 1.000 IP Trung Quốc thực hiện các cuộc tấn công thì con số năm 2014 đã tăng lên đến gần 70.000 Tiếp theo sau Trung Quốc là

Mỹ (gần 25.000) và Đài Loan (hơn 20.000) Theo nhiều chuyên gia bảo mật trong nước, hacker Trung Quốc đã thả phần mềm gián điệp xâm nhập máy tính ở nhiều quốc gia khác trên thế giới cũng như tại Việt Nam Các máy tính bị xâm nhập này đã bị biến thành các máy tính ma (zombie) Chúng liên kết các zoombie này thành một mạng máy tính tấn công lớn (còn gọi là botnet) rồi dùng nó để tấn công vào các website khác với sức công phá vô cùng nguy hiểm

Từ ngày 13-19/10/2014, hàng chục website lớn do hãng truyền thông VCCORP quản lý và đồng quản lý bao gồm các báo mạng như Dân trí, Người lao động, Thời báo kinh tế Việt Nam, VnEconomy… và trang tin điện tử kenh14, Soha News, VTV, CafeF, Muachung… đột ngột tê liệt, không thể truy cập được Trầm trọng hơn, các thông tin nhạy cảm và số liệu mật của VCCORP bị phơi bày trên một trang thanh toán điện tử của hãng Sau 5 ngày sự cố, thiệt hại ban đầu cho VCCORP lên đến hàng chục

tỉ đồng theo như lời một đại diện của tập đoàn này Đây được coi là sự cố về hệ thống nghiêm trọng nhất từng xẩy ra với VCCORP từ trước đến nay, thu hút hàng triệu lượt quan tâm của cộng đồng mạng

Sau nhiều nỗ lực điều tra, kết luận cho thấy rõ ràng đây là một cuộc phá hoại có chủ đích đã được lên kế hoạch và có đầu tư nhằm vào VCCORP Nhóm tin tặc đã lợi dụng việc nhân viên của hãng đã không tuân thủ đúng quy trình chính sách bảo mật để

Trang 32

cài một phần mềm gián điệp được lập trình rất chuyên nghiệp để thực hiện ý đồ của chúng

Hiện nay, nhiều công ty công nghệ, truyền thông tại Việt Nam kinh doanh dựa hoàn toàn trên Internet và việc bảo vệ các hệ thống máy chủ, dữ liệu là nhiệm vụ có ảnh hưởng sống còn đến sự phát triển của công ty Tuy nhiên, các cá nhân, doanh nghiệp tại Việt Nam chưa nhận thức được về mối nguy hiểm đến từ các phần mềm, các chương trình chưa có bản quyền chia sẻ miễn phí trên Internet, cũng bởi tư duy tiết kiệm mà thường sử dụng các hệ điều hành, phần mềm không có bản quyền còn nhiều Bởi vậy, đã xuất hiện nhiều lỗ hổng an toàn thông tin để hacker, virus hoặc mã độc có thể tấn công vào hệ thống bất cứ lúc nào

Vấn đề trong bảo mật an ninh thông tin của doanh nghiệp và các tổ chức hiện nay, theo ông Stefan Tanase, chuyên gia nghiên cứu an ninh cấp cao, là ý thức của nhân viên về bảo mật thông tin cho đơn vị mình – “người gác cổng” này chính là lỗ hổng để các tin tặc tấn công vào doanh nghiệp Hiện nay, rất ít công ty công nghệ chú trọng đến bảo mật vì phần lớn nhân viên hệ thống của các công ty này không được đào tạo bài bản về an toàn thông tin, không có các đội phản ứng nhanh tại chỗ để ứng phó với các sự cố an ninh có thể xẩy ra bất cứ lúc nào Theo đó, khi có sự cố xảy ra các doanh nhiệp sẽ không có biện pháp xử lý, không kịp trở tay và dẫn tới những hậu quả lớn khó khắc phục

Theo các chuyên gia an ninh mạng, để cung cấp dịch vụ online ổn định thì các

hệ thống kiên quan phải được quản lý chặt chẽ, quản lý từ kỹ thuật, máy móc đến những con người tham gia vận hành hệ thống Phải có chính sách dự phòng khi sự cố xảy ra Hệ thống dữ liệu, máy chủ phải được phân bố nhiều địa điểm (site), không nên

để tập trung một chỗ để phòng tránh những cuộc tấn công và cân bằng tải khi hệ thống

có số lượng truy cập tăng cao

1.4 Các rủi ro thường gặp trong ứng dụng web

1.4.1 Dữ liệu đầu vào không được kiểm tra

Ứng dụng web sử dụng dữ liệu đầu vào trong các truy cập HTTP (hoặc trong các tập tin) nhằm xác định kết quả phản hồi Hacker có thể sửa đổi bất kỳ phần nào của một truy xuất HTTP, bao gồm URL, querystring, headers, cookies, form fields, và

Trang 33

thậm chí field ẩn (hidden fields), nhằm vượt qua các cơ chế bảo mật [7] Các tấn công phổ biến dạng này gồm:

 Sửa đổi file ẩn

Một số website bảo vệ chống lại loại tấn công này bằng cách thiết lập bộ lọc dữ liệu đầu vào Vấn đề nan giải là có rất nhiều cách để mã hóa (encode) dữ liệu, và những phương cách mã hóa này không giống như các cách mã hóa thông thường khác

ở chỗ là nó dễ dàng được giải mã Tuy vậy, những nhà lập trình viên thường quên giải

mã tất cả các tham số trước khi sử dụng chúng Tham số cần phải được chuyển đổi đến dạng đơn giản nhất trước khi được kiểm tra, nếu không, dữ liệu xấu đầu vào có thể được mã hóa ẩn và vượt qua tầng bảo vệ của các module kiểm tra dữ liệu

Một số lượng lớn ứng dụng chỉ sử dụng các cơ chế lọc phía trình duyệt để kiểm tra dữ liệu đầu vào Các cơ chế kiểm tra phía trình duyệt rất dễ dàng được vượt qua, và ứng dụng web xem như không được bảo vệ bởi cơ chế này Hacker có thể tạo ra các truy xuất HTTP không thông qua trình duyệt bằng cách sử dụng các công cụ như telnet, truy xuất thẳng đến cổng 80 cuả máy chủ web Kiểm tra dữ liệu ở phía máy trình duyệt có lợi điểm về hiệu suất và tính dễ sử dụng, tuy nhiên cơ chế này không cung cấp bất cứ lợi điểm gì về bảo mật Kiểm tra dữ liệu ở phía server đóng vai trò thiết yếu trong việc ngăn cản những cuộc tấn công dạng sửa đổi tham số đầu vào Khi các cơ chế bảo vệ ở server đã được thiết lập, cơ chế bảo vệ phía trình duyệt có thể được sử dụng nhằm giảm bớt dung lượng các dữ liệu không hợp lệ đến máy chủ

Trang 34

Hình 1.20 Sử dụng Proxy để thay đổi tham số

Hình1.20 mô tả phương cách phổ biến của hacker hiện nay sử dụng để tấn công ứng dụng web Trước tiên, hacker thiết lập một proxy đứng giữa trình duyệt và máy chủ ứng dụng web Proxy này có khả năng chặn các gói dữ liệu trước khi chuyển đến máy chủ, do đó cho phép hacker sửa đổi dữ liệu truy cập và chèn các mã tấn công trước khi gửi đến ứng dụng web

Những cuộc tấn công dạng này đang có xu hướng ngày càng phổ biến hơn do

số lượng các công cụ hỗ trợ các chức năng tạo tham số bất kỳ, tạo mã tấn công, tấn công brute force đang ngày càng tăng Hậu quả của việc sử dụng các tham số không được kiểm tra không nên được xem nhẹ Một số lượng lớn các cuộc tấn công sẽ gây khó khăn cho nhà lập trình web nếu họ không có một hệ thống tập trung kiểm tra tính hợp lệ của tất cả các truy xuất HTTP

1.4.2 Lỗi kiểm soát truy cập nguồn tài nguyên

Kiểm soát truy cập tài nguyên (authorization), là cơ chế mà ứng dụng web cho phép truy cập đến nội dung, tính năng ứng dụng cho một số người sử dụng và từ chối truy cập cho một số người sử dụng khác Những kiểm tra này được thực hiện sau quá trình xác thực, và quản lý các quyền truy cập mà người sử dụng được phép Kiểm soát truy cập bề ngoài tưởng chừng là một vấn đề đơn giản nhưng thực tế là một vấn đề rất khó được thi hành đầy đủ Một mô hình quản lý truy cập tài nguyên cho ứng dụng web cần được thiết kế theo sát các nội dung và hàm chức năng của một website cung cấp

Những nhà lập trình viên thường không đánh giá được mức độ khó khăn trong việc xây dựng một cơ chế quản lý kiểm soát truy cập dữ liệu Đa số những chức năng này không được thiết kế từ lúc đầu mà được xây dựng kèm theo tùy tính năng của ứng

Trang 35

dụng Vì vậy, các chức năng kiểm soát được xây dựng ở khắp các module khác nhau trong mã nguồn Khi ứng dụng được phát triển xong và đưa vào triển khai, các mã kiểm soát này sẽ trở nên không thống nhất và gây ra nhiều lỗ hổng nghiêm trọng khó phát hiện được

1.4.3 Lỗi liên quan đến quá trình quản lý xác thực và phiên truy cập

Quản lý xác thực và phiên truy cập bao gồm tất cả các yếu tố quản lý xác thực người sử dụng và các phiên truy cập Xác thực người dùng là một yếu tố quan trọng trong quy trình này, nhưng ngay cả những cơ chế xác thực mạnh nhất vẫn có thể bị mắc những lỗi liên quan đến các chức năng quản lý xác thực, bao gồm thay đổi password, quên password, nhớ password ở trình duyệt, cập nhật tài khoản, và những hàm chức năng khác

Xác thực người dùng trên ứng dụng web thường bao gồm sử dụng một username và password Những phương pháp xác thực khác mạnh hơn bao gồm các giải pháp phần cứng hoặc mềm dựa trên các token mã hóa hoặc dùng phương pháp sinh trắc học (biometrics) Tuy nhiên những phương pháp này có phần hạn chế do giá thành cao Một số lượng lớn lỗi ứng dụng trong các hàm quản lý tài khoản và phiên truy cập có thể dẫn đến mối nguy cơ lộ tài khoản người sử dụng và thậm chí tài khoản của người quản trị

Ứng dụng web thường phải theo dõi và duy trì phiên truy cập của người dùng nhằm phân biệt các truy cập từ người dùng khác nhau Giao thức HTTP không cung cấp khả năng này và do đó ứng dụng web phải tự tạo cơ chế này Thường thì, môi trường phát triển ứng dụng cung cấp cơ chế quản lý phiên truy cập (thường là dưới hình thức cookie token), tuy nhiên, đa số các nhà lập trình nghiêng về phát triển cơ chế riêng của họ Trong cả hai trường hợp, nếu token quản lý phiên truy cập không được bảo vệ, hacker có thể ăn cắp token truy cập tài khoản của người khác

1.4.4 Lỗi Cross Site Scripting (XSS)

Lỗi Cross –side scripting (thường được gọi tắt là XSS) xảy ra khi một ứng dụng web bị lợi dụng để gửi dữ liệu xấu (thường là đoạn mã script) đến trình duyệt của người sử dụng Những lỗ hổng này rất phổ biến và xảy ra trong bất cứ phần nào của ứng dụng web có sử dụng dữ liệu từ người dùng trong các giá trị phản hồi mà không kiểm tra tính hợp lệ [4]

Trang 36

Một hacker có thể sử dụng lỗ hổng này để gửi các đoạn mã đến người dùng Trình duyệt trong máy người dùng không thể biết được nên tin hay không tin đoạn mã nào, và sẽ thi hành đoạn script này Bởi vì trình duyệt tin rằng đoạn mã đến từ một nguồn tin tưởng, đoạn mã script có thể truy cập đến cookies, session tokens, hoặc bất

kỳ thông tin nhạy cảm nào được lưu lại trong trình duyệt có liên quan đến trang web đang truy cập Những đoạn mã này còn có thể sửa đổi nội dung trang web Hậu quả của tấn công dạng XSScos thể rất nguy hiểm, bao gồm lộ session cookie, cho phép hacker chiếm quyền sở hữu tài khoản Những hậu quả khác bao gồm: lộ các tập tin của người dùng, cài đặt các chương trình trojan, di chuyển người sử dụng đến trang web khác, sửa đổi nội dung trang web nhằm đánh lừa người dùng Hình dưới đây mô tả một ví dụ tấn công dạng cross site scripting với hậu quả là khách hàng bị lừa truy cập vào trang web giả mạo nhằm ăn cắp tài khoản khách hàng:

http://www.bank-that.com/dichvu.php?url=http://www.bank-gia.com

Trang 37

4 Khách hàng nhận được email, tưởng là email từ phía ngân hàng thật, nên bấm vào link

5 Khi bấm vào link, thay vì truy cập vào ngân hàng thật, trình duyệt của khách hàng được chuyển tự động đến trang web ngân hàng giả do hacker tạo sẵn trông giống như ngân hàng thật: http://www.bang-gia.com

Khách hàng nhập thông tin đăng ký vào trang ngân hàng giả và thông tin này được chuyển đến hacker

1.4.5 Lỗi tràn bộ đệm

Hacker sử dụng lỗi tràn bộ đệm nhằm ảnh hưởng đến dòng lệnh thực thi của ứng dụng web Bằng cách gửi một đoạn mã được thiết kế đặc biệt đến ứng dụng, hacker có thể làm cho ứng dụng web thi hành bất kỳ đoạn mã nào, điều này tương đương với việc chiếm quyền làm chủ máy server Mặc dù là một lỗi phổ biến, lỗi tràn

bộ đệm là loại lỗi rất khó được phát hiện và ngay cả khi đã được phát hiện, lỗi này rất khó được lợi dụng do hacker cần một trình độ rất cao để có thể viết đoạn mã khai thác [4]

Hình 1.22 Lỗi tràn bộ đệm

Hình trên mô tả một cuộc tấn công tràn bộ đệm, hacker gửi đến ứng dụng web một truy cập với gói dữ liệu có độ dài vượt mức cho phép mà hàm xử lý của ứng dụng

có thể xử lý Thông thường, dữ liệu đầu vào được lưu trữ trên bộ nhớ đệm trước khi xử

lý, dữ liệu vượt quá độ dài đăng ký sẽ được chèn lên các dữ liệu quan trọng khác trong

bộ đệm, dẫn đến khả năng thi hành mã tùy ý cho hacker

Trang 38

1.4.6 Lỗi Injection

Lỗi Injection cho phép hacker lợi dụng lỗ hổng trong ứng dụng web làm phương tiện để gửi các đoạn mã nguy hiểm đến hệ thống Những cuộc tấn công dạng này bao gồm các mã gọi là hàm đến hệ điều hành, gọi các ứng dụng qua lệnh shell, và các hàm gọi đến cơ sở dữ liệu (SQL Injection) Những đoạn mã nguy hiểm được viết bằng perl, python và ngôn ngữ khác có thể được chuyển đến và thực thi bởi ứng dụng web, hệ điều hành hoặc các ứng dụng khác [4]

Rất nhiều ứng dụng web sử dụng các hàm của hệ điều hành và các chương trình ngoài để thi hành các chức năng Sendmail là một trong những chương trình ngoài được sử dụng nhiều nhất Khi ứng dụng web sử dụng dữ liệu từ người dùng để tạo ra đoạn mã thực thi, dữ liệu từ người dùng cần được lọc kỹ lưỡng Nếu không, hacker có thể kèm vào các ký tự đặc biệt, đoạn lệnh, và những thông tin xấu này có thể được chuyển đến hệ thống và các chương trình ngoài

Hình 1.23 Lỗi SQL Injection

Một trong những dạng phổ biến nhất của lỗi injection là lỗi “sql injection” Lỗi này xảy ra khi ứng dụng sử dụng những dữ liệu đầu vào không được kiểm tra làm tham số

để xây dựng chuỗi lệnh SQL Bằng cách sử dụng những đoạn mã SQL đặc biệt, hacker

có thể gây ra những hậu quả nghiêm trọng như:

Trang 39

 Vượt qua hệ thống xác thực login mà không cần sử dụng password hoặc username

 Truy cập vào một phần hoặc tất cả các thông tin trong CSDL

 Lấy được thông tin về cấu trúc của cơ sở dữ liệu

 Sửa đổi hoặc xóa thông tin trong CSDL

 Chạy các lệnh trong hệ điều hành trên máy chủ CSDL

1.4.7 ƣu trữ thiếu an toàn

Đa số các ứng dụng web cần lưu trữ dữ liệu nhạy cảm, trong cơ sở dữ liệu hoặc trong một tập tin nào đó trong hệ thống Thông tin nhạy cảm bao gồm: mật khẩu, số thẻ tín dụng, thông tin tài khoản, hoặc các thông tin cần bảo vệ khác Các cơ chế mã hóa thường được sử dụng để bảo vệ những thông tin này Mặc dù sử dụng các hàm mã hóa không khó cho các lập trình viên, tuy nhiên, lập trình viên vẫn thường mắc những lỗi cơ bản khi áp dụng vào ứng dụng web do không hiểu rõ hết các đặc điểm mã hóa [7]

Hình 1.24 Lưu trữ thiếu an toàn

Những lỗi thông thường bao gồm:

 Không mã hóa dữ liệu quan trọng như khóa, certificates và mật khẩu

 Lưu trữ các khóa bảo mật trong bộ nhớ bằng các cơ chế không an toàn

 Cơ chế tạo số ngẫu nhiên không đảm bảo

 Sử dụng sai thuật toán

 Tạo một thuật toán mã hóa không đảm bảo

Trang 40

Hậu quả của những điểm yếu này có thể rất nghiêm trọng đến an toàn của một trang web, cho phép hacker lấy được toàn bộ các thông tin quan trọng được lưu trữ

1.4.8 Tấn công từ chối dịch vụ

Ứng dụng web rất dễ bị tổn thương do các cuộc tấn công từ chối dịch vụ (DoS) Tấn công từ chối dịch vụ vào ứng dụng web được định nghĩa là các tấn công làm tê liệt ứng dụng, làm cho các truy cập hợp lệ không thể được tiến hành

Đa số máy chủ web chỉ có thể xử lý hỗ trợ một số lượng nhất định người sử dụng trong điều kiện bình thường Một hacker có thể tạo ra nhiều truy cập đồng thời từ một máy để tấn công ứng dụng Sử dụng load balancing sẽ gây khó khăn cho các cuộc tấn công kiểu này, tuy nhiên không thể ngăn ngừa hoàn toàn nếu có quá nhiều truy cập cùng lúc

Một dạng khác của tấn công DoS ứng dụng web dựa trên các lỗi trong chức năng của ứng dụng Ví dụ một ứng dụng sử dụng cơ chế tài khoản trong một tiếng hoặc hơn nếu nhận được quá ba lần mật khẩu sai Hacker có thể lợi dụng điểm yếu này, gửi đến quá ba lần sai mật khẩu của một tài khoản hợp lệ, hậu quả là người dùng của tài khoản này không thể truy cập được trong một tiếng hoặc hơn

Trong một cuộc tấn công từ chối dịch vụ điển hình vào ứng dụng web, hackers

sẽ tìm cách chiếm gần hết nguồn tài nguyên hệ thống trên máy chủ hoặc ứng dụng, hậu quả là người sử dụng hợp lệ không thể truy cập vào ứng dụng tài nguyên hệ thống bao gồm: băng thông, số lượng truy cập đồng thời cơ sở dữ liệu, dung lượng trống ổ cứng, CPU, dung lượng bộ nhớ RAM, threads, và các nguồn tài nguyên khác liên quan đến ứng dụng

Ngày đăng: 28/02/2021, 00:02

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w