• Dò quét định kỳ để phát hiện kịp thời các điểm sơ hở, sai sót trng lập trình • Đào tạo đội ngũ cán bộ kỹ thuật chuyên sâu về ATTT cho các ứng dụng dạng Web Hiện nay, có một số khoá họ
Trang 1BÁO CÁO TỔNG KẾT
DỤNG WEB PHỤC VỤ CÔNG TÁC GIẢNG DẠY
Trang 22
MỤC LỤC
TÓM TẮT 10
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 12
DANH MỤC CÁC BẢNG 13
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ 14
CHƯƠNG 1: TỔNG QUAN 23
1.1 Tổng quan về đề tài 23
1.1.1 Mục tiêu 23
1.1.2 Phương pháp thực hiện đề tài 23
1.1.3 Kiến trúc của ATLAB 29
1.2 Về nhóm đề tài 37
1.3 Nội dung công việc và kết quả đề tài Error! Bookmark not defined 1.4 Nội dung trình bày 39
CHƯƠNG 2: Lỗ hổng Injection 40
2.1 SQL Injection 1 40
2.1.1 Tình huống 40
2.1.2 Thực hiện 41
2.2 SQL Injection 2 43
2.2.1 Tình huống 43
2.2.2 Thực hiện 44
2.3 SQL Injection 3 48
2.3.1 Tình huống 48
2.3.2 Thực hiện 49
2.4 SQL Injection 4 53
2.4.1 Tình huống 53
2.4.2 Thực hiện 54
2.5 SQL Injection 5 58
2.5.1 Tình huống 58
2.5.2 Thực hiện 59
2.6 SQL Injection 6 63
2.6.1 Tình huống 63
Trang 33
2.6.2 Thực hiện 64
2.7 SQL Injection 7 68
2.7.1 Tình huống 68
2.7.2 Thực hiện 69
2.8 SQL Injection 8 73
2.8.1 Tình huống 73
2.8.2 Thực hiện 74
2.9 SQL Injection 9 78
2.9.1 Tình huống 78
2.9.2 Thực hiện 79
2.10 SQL Injection 10 83
2.10.1 Tình huống 83
2.10.2 Thực hiện 84
2.11 SQL Injection 11 88
2.11.1 Tình huống 88
2.11.2 Thực hiện 89
2.12 SQL Injection 12 93
2.12.1 Tình huống 93
2.12.2 Thực hiện 94
2.13 SQL Injection 13 98
2.13.1 Tình huống 98
2.13.2 Thực hiện 99
2.14 SQL Injection 14 103
2.14.1 Tình huống 103
2.14.2 Thực hiện 104
2.15 SQL Injection 15 106
2.15.1 Tình huống 106
2.15.2 Thực hiện 108
2.16 Blind SQL Injection 111
2.16.1 Mục tiêu 111
2.16.2 Tổng quan lý thuyết 111
Trang 44
2.16.3 Trang thiết bị thực hành 112
2.16.4 Tình huống 112
2.16.5 Thực hiện 113
CHƯƠNG 3: Lỗ hổng Cross-Site Scripting (XSS) 120
3.1 Reflected XSS 1 122
3.1.1 Mục tiêu 122
3.1.2 Tình huống 122
3.1.3 Thực hiện 122
3.2 Reflected XSS 2 126
3.2.1 Mục tiêu 126
3.2.2 Tình huống 126
3.2.3 Thực hiện 126
3.3 Reflected XSS 3 130
3.3.1 Mục tiêu 130
3.3.2 Tình huống 130
3.3.3 Thực hiện 130
3.4 Reflected XSS 4 134
3.4.1 Mục tiêu 134
3.4.2 Tình huống 134
3.4.3 Thực hiện 134
3.5 Reflected XSS 5 137
3.5.1 Mục tiêu 137
3.5.2 Tình huống 137
3.5.3 Thực hiện 137
3.6 Reflected XSS 6 142
3.6.1 Mục tiêu 142
3.6.2 Tình huống 142
3.6.3 Thực hiện 142
3.7 Stored XSS 1 146
3.7.1 Mục tiêu 146
3.7.2 Tình huống 146
Trang 55
3.7.3 Thực hiện 146
3.8 Stored XSS 2 149
3.8.1 Mục tiêu 149
3.8.2 Tình huống 149
3.8.3 Thực hiện 149
3.9 Stored XSS 3 153
3.9.1 Mục tiêu 153
3.9.2 Tình huống 153
3.9.3 Thực hiện 153
3.10 Stored XSS 4 158
3.10.1 Mục tiêu 158
3.10.2 Tình huống 158
3.10.3 Thực hiện 158
3.11 Stored XSS 5 161
3.11.1 Mục tiêu 161
3.11.2 Tình huống 161
3.11.3 Thực hiện 161
3.12 Stored XSS 6 166
3.12.1 Mục tiêu 166
3.12.2 Tình huống 166
3.12.3 Thực hiện 166
3.13 DOM-based XSS 1 170
3.13.1 Mục tiêu 170
3.13.2 Tình huống 170
3.13.3 Thực hiện 170
3.14 DOM-based XSS 2 172
3.14.1 Mục tiêu 172
3.14.2 Tình huống 172
3.14.3 Thực hiện 173
3.15 DOM-based XSS 3 174
3.15.1 Mục tiêu 174
Trang 66
3.15.2 Tình huống 175
3.15.3 Thực hiện 175
3.16 DOM-based XSS 4 177
3.16.1 Mục tiêu 177
3.16.2 Tình huống 177
3.16.3 Thực hiện 178
3.17 DOM-based XSS 5 179
3.17.1 Mục tiêu 179
3.17.2 Tình huống 180
3.17.3 Thực hiện 180
3.18 DOM-based XSS 6 182
3.18.1 Mục tiêu 182
3.18.2 Tình huống 182
3.18.3 Thực hiện 183
CHƯƠNG 4: Lỗ hổng Authentication 186
4.1 Brute-force Login 186
4.1.1 Mục tiêu 186
4.1.2 Tổng quan lý thuyết 186
4.1.3 Trang thiết bị thực hành 186
4.1.4 Tình huống 186
4.1.5 Thực hiện 186
4.2 Enumerate and Guessable User Account[25] 190
4.2.1 Mục tiêu 190
4.2.2 Tổng quan lý thuyết 190
4.2.3 Trang thiết bị thực hành 190
4.2.4 Tình huống 191
4.2.5 Thực hiện 191
4.3 Weak Password Change Functionalities[26] 193
4.3.1 Mục tiêu 193
4.3.2 Tổng quan lý thuyết 193
4.3.3 Trang thiết bị thực hành 194
Trang 77
4.3.4 Tình huống 194
4.3.5 Thực hiện 194
4.4 Transport Credential on Unencrypt Channel 1[27] 196
4.4.1 Mục tiêu 196
4.4.2 Tổng quan lý thuyết 196
4.4.3 Trang thiết bị thực hành 196
4.4.4 Tình huống 197
4.4.5 Thực hiện 197
4.5 Transport Credential on Unencrypt Channel 2 201
4.5.1 Mục tiêu 201
4.5.2 Tổng quan lý thuyết 201
4.5.3 Trang thiết bị thực hành 201
4.5.4 Tình huống 202
4.5.5 Thực hiện 202
4.6 Transport Credential on Unencrypt Channel 3 205
4.6.1 Mục tiêu 205
4.6.2 Tổng quan lý thuyết 205
4.6.3 Trang thiết bị thực hành 205
4.6.4 Tình huống 206
4.6.5 Thực hiện 206
CHƯƠNG 5: Lỗ hổng Insecure Direct Object Reference (IDOR) 210
5.1 Directory Traversal 1 211
5.1.1 Thực hiện 211
5.2 Directory Traversal 2 215
5.2.1 Thực hiện 215
5.3 Directory Traversal 3 218
5.3.1 Thực hiện 218
5.4 Directory Traversal 4 223
5.4.1 Thực hiện 223
CHƯƠNG 6: Lỗ hổng Cross-Site Request Forgery (CSRF) 229
6.1 CSRF 1 229
Trang 88
6.1.1 Mục tiêu 229
6.1.2 Tổng quan lý thuyết 229
6.1.3 Trang thiết bị thực hành 230
6.1.4 Tình huống 230
6.1.5 Thực hiện 230
6.2 CSRF 2 234
6.2.1 Mục tiêu 234
6.2.2 Tổng quan lý thuyết 234
6.2.3 Trang thiết bị thực hành 235
6.2.4 Tình huống 235
6.2.5 Thực hiện 235
6.3 CSRF 3 241
6.3.1 Mục tiêu 241
6.3.2 Tổng quan lý thuyết 241
6.3.3 Trang thiết bị thực hành 242
6.3.4 Tình huống 242
6.3.5 Thực hiện 242
6.4 CSRF 4 247
6.4.1 Mục tiêu 247
6.4.2 Tổng quan lý thuyết 247
6.4.3 Trang thiết bị thực hành 247
6.4.4 Tình huống 248
6.4.5 Thực hiện 248
CHƯƠNG 7: Certified Ethical Hacker (CEH) 251
7.1 DDoS 251
7.2 XXE 251
7.3 BOF 252
CHƯƠNG 8: Advanced Persistent Threat (APT) 252
CHƯƠNG 9: Các lỗ hổng khác 253
9.1 HeartBleed 253
9.1.1 Mục tiêu 253
Trang 99
9.1.2 Tổng quan lý thuyết 253
9.1.3 Trang thiết bị thực hành 256
9.1.4 Tình huống 256
9.1.5 Thực hiện 257
CHƯƠNG 10: Hướng phát triển của đề tài 260
THAM KHẢO 261
PHỤ LỤC: TRIỂN KHAI ATLAB 263
Trang 1010
TÓM TẮT
Bảo đảm An toàn thông tin (ATTT) cho ứng dụng Web, kể cả phía máy khách và máy chủ, là một vấn đề quan trọng và còn rất xa hoặc không bao giờ được giải quyết trọn vẹn Các khóa đào tạo về bảo mật, an ninh ứng dụng Web của các trung tâm đào tạo bảo mật trong nước phần lớn tập trung vào những vấn đề lý thuyết, ít đi sâu phân tích và thử nghiệm các vấn đề thực hành Bên cạnh đó là việc thiếu các môi trường thực hành, thử nghiệm dẫn đến khó khăn nắm bắt kiến thức trong các kỹ thuật tấn công Web Nói về ATTT cho Web, chúng ta dễ liệt kê một danh sách (không đầy đủ) các vấn đề cần phải xem xét là:
• Đào tạo để người dùng đầu cuối biết các nguy cơ khi sử dụng Web
• Đào tạo chuyên viên phát triển ứng dụng Web về lập trình an toàn
• Dò quét định kỳ để phát hiện kịp thời các điểm sơ hở, sai sót trng lập trình
• Đào tạo đội ngũ cán bộ kỹ thuật chuyên sâu về ATTT cho các ứng dụng dạng Web Hiện nay, có một số khoá học về có liên quan tới tấn công Web như CEH và một số dự
án xây dựng các bài thực hành về ATTT cho Web như Butterfly[3], WebGoat[4],
DVWA[5], … Tuy vậy, nội dung CEH thường thiên về công cụ, còn phần lớn các ứng dụng thực hành chỉ đưa ra các thử thách mà ít có sự đầu tư nhằm trình bày, giảng giải một cách dễ hiểu, có cấu trúc về mô hình kỹ thuật tấn công Web Hạn chế này dẫn đến hệ quả là học viên có thể giải quyết được các thử thách, nhưng lại không nắm vững các nguyên lý, bản chất của vấn đề Bên cạnh đó, một số ứng dụng có phần hướng dẫn giải quyết vấn đề khá tốt, nhưng lại không còn được duy trì tiếp tục phát triển
Chúng tôi cho rằng các môi trường thực hành thử nghiệm, các mô phỏng của các vấn đề trong thực tế đang là phần còn thiếu Do đó nhóm đề tài đã xây dựng sản phẩm Attacking Technics LAB (ATLAB) với mục tiêu là hình thành một môi trường thực hành, thử
nghiệm các phương thức tấn công Web Đặc điểm chính của sản phẩm là các bài thực hành được xây dựng một cách trực quan, các bước thực hành được hướng dẫn một cách chi tiết tỉ mỉ, cấu trúc hệ thống dễ tích hợp và các sản phẩm hiện có như Webgoat và dễ dàng nâng cấp độc lập hoặc cùng các sản phẩm này nhằm phục vụ cho công tác giảng dạy
và nghiên cứu về ATTT cho ứng dụng Web
Kết quả chính của đề tài “Xây dựng môi trường thực hành các lỗi ứng dụng Web phục vụ công tác giảng dạy” là một hệ thống tài liệu học tập bao gồm hai thành phần là các bài giảng lý thuyết và các bài thực hành đi kèm Nội dung của bài giảng đề cập đến các lỗi phổ biến nhất, nguy hại nhất của ứng dụng Web (theo đánh giá của OWASP[6]) như Injection[7], Cross-Site Scripting[8], Authentication[9], Insecure Direct Object
References[10], Cross-Site Request Forgery[11]
Trang 1111
ABSTRACT
Ensuring security for a web application, both client side and server side, is an important issue and we cannot solve it perfectly Many security training courses in our country only focus on theory, they rarely analyze deeper and do a test In the other hand, the lack of a practice environment leads to difficulty understanding the technical knowledge of the web attack Talking about information security for web application, we can easily list a list (not exhaustive) the issues to consider are:
• Training end users know the risks when surf the web
• Training web developers on secure programming
• Perform pentest periodically to detect vulnerabilities
• Training technical staff know the security information
Currently, there are several courses in relation to web attack, e.g CEH, and some project build environment to perform web attack, e.g Butterfly[3], WebGoat[4], DVWA[5], But, the content of CEH focus on tools, and project build attack environment focus on challenge, they rarely help a student understand the knowledge This limitation leads to that student can solve challenges but they not really understand the theory of attack
technique Additionally, some applications have instructions pretty well, but no longer maintained
We believe that the practice environment, the simulation of the real problems are the missing part and not effective in research, teaching web application security Therefore,
we built Attacking Technics LAB (ATLAB) to provide the environment to perform test attacks The key feature of the product is a todo list is guided meticulous, the system can easy to integrate existing products and easy to upgrade
The main result of the project "Building environment to performs exploit web application vulnerabilities" is a system of learning materials include two components, these are
theoretical lectures and hands-on lectures The content of the lecture refers to the most common vulnerabilities, most damaged of web application vulnerabilities (according to the OWASP[6]) as Injection[7], Cross-Site Scripting[8], Authentication[9], Insecure Direct Object References[10], Cross-Site Request Forgery[11]
Trang 1212
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
OWASP - Open Web Application Security Project
XSS - Cross-Site Scripting
CSRF - Cross-Site Request Forgery
IDOR - Insecure Direct Object Reference
CEH - Certified Ethical Hacker
APT - Advanced Persistent Threat
HTTP - Hypertext Transfer Protocol
SSL - Secure Sockets Layer
Trang 1313
DANH MỤC CÁC BẢNG
Bảng 1-1: Thư mục chứa mã nguồn của các LAB trong ATLAB 33
Bảng 1-2: Danh sách tài khoản trong đề tài ATLAB 34
Bảng 1-3: Nội dung công việc và kết quả của đề tài ATLAB 38
Bảng 2-1: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store1.com 41
Bảng 2-2: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store2.com 44
Bảng 2-3: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store3.com 49
Bảng 2-4: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store4.com 54
Bảng 2-5: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store5.com 59
Bảng 2-6: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store6.com 64
Bảng 2-7: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store7.com 69
Bảng 2-8: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store8.com 74
Bảng 2-9: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store9.com 79
Bảng 2-10: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store10.com 84
Bảng 2-11: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store11.com 89
Bảng 2-12: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store12.com 94
Bảng 2-13: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store13.com 99
Bảng 2-14: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store14.com 104
Bảng 2-15: Dữ liệu bảng oc_users trong cơ sở dữ liệu trang Web store15.com 107
Bảng 2-16: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store16.com 113
Bảng 4-1: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store16.com 191
Bảng 4-2: Dữ liệu bảng oc_user trong cơ sở dữ liệu trang Web store16.com 194
Trang 1414
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 1-1: Sơ đồ logic của ATLAB 31
Hình 1-2: Sơ đồ vật lý của ATLAB 32
Hình 1-3: Sơ đồ logic trong luận văn của anh Ngô Đức Duy 35
Hình 1-4: Sơ đồ vật lý trong luận văn của anh Ngô Đức Duy 36
Hình 1-5: Sơ đồ logic trong luận văn của anh Trần Hải Văn 37
Hình 1-6: Sơ đồ vật lý trong luận văn của anh Trần Hải Văn 37
Hình 2-1: Vector tấn công trong bài giảng SQL Injection 1 42
Hình 2-2: Kết quả tấn công của bài giảng SQL Injection 1 43
Hình 2-3: Sử dụng lại vector tấn công trong bài giảng SQL Injection 1 45
Hình 2-4: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 1 46
Hình 2-5: Vector tấn công trong bài giảng SQL Injection 2 47
Hình 2-6: Kết quả tấn công của bài giảng SQL Injection 2 48
Hình 2-7: Sử dụng lại vector tấn công trong bài giảng SQL Injection 2 50
Hình 2-8: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 2 51
Hình 2-9: Vector tấn công trong bài giảng SQL Injection 3 52
Hình 2-10: Kết quả tấn công của bài giảng SQL Injection 3 53
Hình 2-11: Sử dụng lại vector tấn công trong bài giảng SQL Injection 3 55
Hình 2-12: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 3 56
Hình 2-13: Vector tấn công trong bài giảng SQL Injection 4 57
Hình 2-14: Kết quả tấn công của bài giảng SQL Injection 4 58
Hình 2-15: Sử dụng lại vector tấn công trong bài giảng SQL Injection 4 60
Hình 2-16: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 4 61
Hình 2-17: Vector tấn công trong bài giảng SQL Injection 5 62
Hình 2-18: Kết quả tấn công của bài giảng SQL Injection 5 63
Hình 2-19: Sử dụng lại vector tấn công trong bài giảng SQL Injection 5 65
Hình 2-20: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 5 66
Hình 2-21: Vector tấn công trong bài giảng SQL Injection 6 67
Hình 2-22: Kết quả tấn công của bài giảng SQL Injection 6 68
Hình 2-23: Sử dụng lại vector tấn công trong bài giảng SQL Injection 6 70
Hình 2-24: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 6 71
Trang 1515
Hình 2-25: Vector tấn công trong bài giảng SQL Injection 7 72
Hình 2-26: Kết quả tấn công của bài giảng SQL Injection 7 73
Hình 2-27: Sử dụng lại vector tấn công trong bài giảng SQL Injection 7 75
Hình 2-28: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 7 76
Hình 2-29: Vector tấn công trong bài giảng SQL Injection 8 77
Hình 2-30: Kết quả tấn công của bài giảng SQL Injection 8 78
Hình 2-31: Sử dụng lại vector tấn công trong bài giảng SQL Injection 8 80
Hình 2-32: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 8 81
Hình 2-33: Vector tấn công trong bài giảng SQL Injection 9 82
Hình 2-34: Kết quả tấn công của bài giảng SQL Injection 9 83
Hình 2-35: Sử dụng lại vector tấn công trong bài giảng SQL Injection 9 85
Hình 2-36: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 9 86
Hình 2-37: Vector tấn công trong bài giảng SQL Injection 10 87
Hình 2-38: Kết quả tấn công của bài giảng SQL Injection 10 88
Hình 2-39: Sử dụng lại vector tấn công trong bài giảng SQL Injection 10 90
Hình 2-40: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 10 91 Hình 2-41: Vector tấn công trong bài giảng SQL Injection 11 92
Hình 2-42: Kết quả tấn công của bài giảng SQL Injection 11 93
Hình 2-43: Sử dụng lại vector tấn công trong bài giảng SQL Injection 11 95
Hình 2-44: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 11 96 Hình 2-45: Vector tấn công trong bài giảng SQL Injection 12 97
Hình 2-46: Kết quả tấn công của bài giảng SQL Injection 12 98
Hình 2-47: Sử dụng lại vector tấn công trong bài giảng SQL Injection 12 100
Hình 2-48: Thông báo lỗi sai cú pháp khi sử dụng lại vector tấn công trong bài giảng SQL Injection 12 101
Hình 2-49: Vector tấn công trong bài giảng SQL Injection 13 102
Hình 2-50: Kết quả tấn công của bài giảng SQL Injection 13 103
Hình 2-51: Vector tấn công trong bài giảng SQL Injection 14 105
Hình 2-52: Kết quả tấn công của bài giảng SQL Injection 14 106
Hình 2-53: Thông báo lỗi không khớp tên đăng nhập hoặc mật khẩu 109
Hình 2-54: Vector tấn công trong bài giảng SQL Injection 15 110
Trang 1616
Hình 2-55: Kết quả tấn công của bài giảng SQL Injection 15 111
Hình 2-56: Kết quả trả về thông tin sản phẩm iPhone 113
Hình 2-57: Kết quả trả về khi thêm biểu thức TRUE 114
Hình 2-58: Kết quả trả về khi thêm biểu thức FALSE 115
Hình 2-59: Kết quả trả về khi thêm so sánh ký tự đầu của phiên bản với 4 116
Hình 2-60: Kết quả trả về khi thêm so sánh ký tự đầu của phiên bản với 5 117
Hình 2-61: Kết quả trả về khi thêm biểu thức tìm kiếm bảng user 118
Hình 2-62: Kết quả trả về khi thêm biểu thức tìm kiếm bảng oc_user 119
Hình 3-1: Trang Web forum1.com phản hồi tìm kiếm với tham số testing 123
Hình 3-2: Mã nguồn của trang Web forum1.com trả về với tham số testing 123
Hình 3-3: Kiểm tra khả năng lỗi Reflected XSS trên trang forum1.com 124
Hình 3-4: Mã nguồn của trang Web forum1.com phản hồi khi kiểm tra khả năng lỗi Reflected XSS 124
Hình 3-5: Kết quả trả về khi khai thác lỗi Reflected XSS trên trang forum1.com 125
Hình 3-6: Mã nguồn của trang Web forum1.com phản hồi có chứa mã độc 125
Hình 3-7: Kiểm tra khả năng lỗi Reflected XSS trên trang forum2.com 127
Hình 3-8: Mã nguồn của trang Web forum2.com phản hồi khi kiểm tra khả năng lỗi Reflected XSS 127
Hình 3-9: Khai thác lỗi Reflected XSS trên trang Web forum2.com thất bại 128
Hình 3-10: Mã nguồn của trang Web forum2.com phản hồi có chứa mã độc bị lọc 129
Hình 3-11: Kết quả trả về khi khai thác lỗi Reflected XSS trên trang forum2.com 129
Hình 3-12: Mã nguồn của trang Web forum2.com phản hồi có chứa mã độc sau khi qua bộ lọc 130
Hình 3-13: Kiểm tra khả năng lỗi Reflected XSS trên trang forum3.com 131
Hình 3-14: Mã nguồn của trang Web forum3.com phản hồi khi kiểm tra khả năng lỗi Reflected XSS 131
Hình 3-15: Khai thác lỗi Reflected XSS trên trang Web forum3.com thất bại 132
Hình 3-16: Mã nguồn của trang Web forum3.com phản hồi có chứa mã độc bị lọc 133
Hình 3-17: Kết quả trả về khi khai thác lỗi Reflected XSS trên trang forum3.com 133
Hình 3-18: Mã nguồn của trang Web forum3.com phản hồi có chứa mã độc sau khi qua bộ lọc 134
Hình 3-19: Kiểm tra khả năng lỗi Reflected XSS trên trang forum4.com 135
Hình 3-20: Mã nguồn của trang Web forum4.com phản hồi khi kiểm tra khả năng lỗi Reflected XSS 135
Hình 3-21: Kết quả trả về khi khai thác lỗi Reflected XSS trên trang forum4.com 136
Hình 3-22: Mã nguồn của trang Web forum4.com phản hồi có chứa mã độc sau khi qua bộ lọc 137
Hình 3-23: Kiểm tra khả năng lỗi Reflected XSS trên trang forum5.com 138
Trang 1717
Hình 3-24: Mã nguồn của trang Web forum5.com phản hồi khi kiểm tra khả năng lỗi XSS Reflected 138
Hình 3-25: Khai thác lỗi Reflected XSS trên trang Web forum5.com thất bại 139
Hình 3-26: Trang Web forum5.com phản hồi tìm kiếm với tham số testing_keywords và testing_author 140
Hình 3-27: Mã nguồn của trang Web forum5.com trả về với tham số testing_keywords và testing_author 140
Hình 3-28: Kết quả trả về khi khai thác lỗi Reflected XSS trên trang forum5.com 141
Hình 3-29: Mã nguồn của trang Web forum5.com phản hồi có chứa mã độc sau khi qua bộ lọc 141
Hình 3-30: Kiểm tra khả năng lỗi Reflected XSS trên trang forum6.com 143
Hình 3-31: Mã nguồn của trang Web forum6.com phản hồi khi kiểm tra khả năng lỗi XSS Reflected 143
Hình 3-32: Header của trang Web forum6.com 144
Hình 3-33: Kết quả trả về khi khai thác lỗi Reflected XSS trên trang forum6.com 145
Hình 3-34: Mã nguồn của trang Web forum6.com phản hồi có chứa mã độc sau khi qua bộ lọc 145
Hình 3-35: Kiểm tra khả năng lỗi Stored XSS trên trang forum1.com 146
Hình 3-36: Mã nguồn của trang Web forum1.com phản hồi khi kiểm tra khả năng lỗi Stored XSS 147
Hình 3-37: Kết quả trả về khi khai thác lỗi Stored XSS trên trang forum1.com 148
Hình 3-38: Mã nguồn của trang Web forum1.com phản hồi có chứa mã độc 148
Hình 3-39: Kiểm tra khả năng lỗi Stored XSS trên trang forum2.com 150
Hình 3-40: Mã nguồn của trang Web forum2.com phản hồi khi kiểm tra khả năng lỗi Stored XSS 150
Hình 3-41: Khai thác lỗi Stored XSS trên trang Web forum2.com thất bại 151
Hình 3-42: Mã nguồn của trang Web forum2.com phản hồi có chứa mã độc bị lọc 151
Hình 3-43: Kết quả trả về khi khai thác lỗi Stored XSS trên trang forum2.com 152
Hình 3-44: Mã nguồn của trang Web forum2.com phản hồi có chứa mã độc sau khi qua bộ lọc 153
Hình 3-45: Kiểm tra khả năng lỗi Stored XSS trên trang forum3.com 154
Hình 3-46: Mã nguồn của trang Web forum3.com phản hồi khi kiểm tra khả năng lỗi Stored XSS 154
Hình 3-47: Khai thác lỗi Stored XSS trên trang Web forum3.com thất bại 155
Hình 3-48: Mã nguồn của trang Web forum3.com phản hồi có chứa mã độc bị lọc 156
Hình 3-49: Kết quả trả về khi khai thác lỗi Stored XSS trên trang forum3.com 157
Hình 3-50: Mã nguồn của trang Web forum3.com phản hồi có chứa mã độc sau khi qua bộ lọc 157
Hình 3-51: Kiểm tra khả năng lỗi Stored XSS trên trang forum4.com 159
Hình 3-52: Mã nguồn của trang Web forum4.com phản hồi khi kiểm tra khả năng lỗi Stored XSS 159
Hình 3-53: Kết quả trả về khi khai thác lỗi Stored XSS trên trang forum4.com 160
Trang 1818
Hình 3-54: Mã nguồn của trang Web forum4.com phản hồi có chứa mã độc sau khi qua bộ lọc 160
Hình 3-55: Kiểm tra khả năng lỗi Stored XSS trên trang forum5.com 162
Hình 3-56: Mã nguồn của trang Web forum5.com phản hồi khi kiểm tra khả năng lỗi Stored XSS 162
Hình 3-57: Khai thác lỗi Stored XSS trên trang Web forum5.com thất bại 163
Hình 3-58: Kết quả trả về khi khai thác lỗi Stored XSS trên trang forum5.com 164
Hình 3-59: Mã nguồn của trang Web forum5.com phản hồi có chứa một phần mã độc sau khi qua bộ lọc 164
Hình 3-60: Kết quả trả về khi khai thác lỗi Stored XSS trên trang forum5.com với đoạn mã hoàn chỉnh 165
Hình 3-61: Mã nguồn của trang Web forum5.com phản hồi có chứa mã độc hoàn chỉnh sau khi qua bộ lọc 165
Hình 3-62: Kiểm tra khả năng lỗi Stored XSS trên trang forum6.com 167
Hình 3-63: Mã nguồn của trang Web forum6.com phản hồi khi kiểm tra khả năng lỗi Stored XSS 167
Hình 3-64: Header của trang Web forum6.com 168
Hình 3-65: Kết quả trả về khi khai thác lỗi Stored XSS trên trang forum6.com 169
Hình 3-66: Mã nguồn của trang Web forum6.com phản hồi có chứa mã độc sau khi qua bộ lọc 169
Hình 3-67: Trang đăng nhập của Website forum1.com 170
Hình 3-68: Mã nguồn trang đăng nhập của Website forum1.com 171
Hình 3-69: Kết quả trả về khi khai thác lỗi DOM-based XSS trên trang forum1.com 172
Hình 3-70: Trang đăng nhập của Website forum2.com 173
Hình 3-71: Mã nguồn trang đăng nhập của Website forum2.com 173
Hình 3-72: Kết quả trả về khi khai thác lỗi DOM-based XSS trên trang forum2.com 174
Hình 3-73: Trang đăng nhập của Website forum3.com 175
Hình 3-74: Mã nguồn trang đăng nhập của Website forum3.com 176
Hình 3-75: Kết quả trả về khi khai thác lỗi DOM-based XSS trên trang forum3.com 177
Hình 3-76: Trang đăng nhập của Website forum4.com 178
Hình 3-77: Mã nguồn trang đăng nhập của Website forum4.com 178
Hình 3-78: Kết quả trả về khi khai thác lỗi DOM-based XSS trên trang forum4.com 179
Hình 3-79: Trang đăng nhập của Website forum5.com 180
Hình 3-80: Mã nguồn trang đăng nhập của Website forum5.com 181
Hình 3-81: Kết quả trả về khi khai thác lỗi DOM-based XSS trên trang forum5.com 182
Hình 3-82: Trang đăng nhập của Website forum6.com 183
Trang 1919
Hình 3-83: Mã nguồn trang đăng nhập của Website forum6.com 183
Hình 3-84: Header của trang Web forum6.com 184
Hình 3-85: Kết quả trả về khi khai thác lỗi DOM-based XSS trên trang forum6.com 185
Hình 4-1: Công cụ Acunetix 187
Hình 4-2: Chức năng Authentication của công cụ Acunetix 188
Hình 4-3: Cấu hình để Acunetix nhận biết trường Username và Password 188
Hình 4-4: Chọn trường tương ứng cho Username và Password 189
Hình 4-5: Kết quả brute-force tên đăng nhập và mật khẩu 190
Hình 4-6: Thông báo xuất ra khi đăng nhập với tên đăng nhập không tồn tại 192
Hình 4-7: Thông báo xuất ra khi đăng nhập với tên đăng nhập mặc định của hệ thống 193
Hình 4-8: Thông báo xuất ra khi thực hiện thay đổi mật khẩu với tên đăng nhập không tồn tại trong hệ thống 195
Hình 4-9: Thông báo xuất ra khi thực hiện thay đổi mật khẩu với tên đăng nhập mặc định trong hệ thống 195
Hình 4-10: Thông báo xuất ra khi thực hiện thay đổi mật khẩu với tên đăng nhập và mật khẩu hợp lệ 196
Hình 4-11: Dùng phần mềm Wireshark để bắt gói tin trong mạng LAN 197
Hình 4-12: Chọn interface tương ứng 197
Hình 4-13: Lọc ra các gói tin truy vấn đến máy chủ Web 198
Hình 4-14: Follow TCP Stream đối với gói tin gửi thông tin đăng nhập 199
Hình 4-15: Dữ liệu trong quá trình thực hiện đăng nhập của người dùng 199
Hình 4-16: Thử đăng nhập với thông tin nghe lén được 200
Hình 4-17: Đăng nhập thành công với dữ liệu nghe lén được 201
Hình 4-18: Dùng phần mềm Wireshark để bắt gói tin trong mạng LAN 202
Hình 4-19: Chọn interface tương ứng 202
Hình 4-20: Lọc ra các gói tin truy vấn đến máy chủ Web 203
Hình 4-21: Follow TCP Stream đối với gói tin gửi thông tin đăng nhập 203
Hình 4-22: Dữ liệu trong quá trình thực hiện đăng nhập của người dùng 204
Hình 4-23: Thử đăng nhập với thông tin nghe lén được 204
Hình 4-24: Đăng nhập thành công với dữ liệu nghe lén được 205
Hình 4-25: Dùng phần mềm Wireshark để bắt gói tin trong mạng LAN 206
Hình 4-26: Chọn interface tương ứng 206
Hình 4-27: Lọc ra các gói tin truy vấn đến máy chủ Web 207
Trang 2020
Hình 4-28: Follow TCP Stream đối với gói tin gửi thông tin đăng nhập 208
Hình 4-29: Dữ liệu trong quá trình thực hiện đăng nhập của người dùng 208
Hình 4-30: Thử đăng nhập với thông tin nghe lén được 209
Hình 4-31: Đăng nhập thành công với dữ liệu nghe lén được 209
Hình 5-1: Nội dung tập tin a.txt 212
Hình 5-2: Thông tin yêu cầu truy cập tập tin a.txt 212
Hình 5-3: Nội dung tập tin e.txt trong thư mục con sub_folder 213
Hình 5-4: Thông tin yêu cầu truy cập tập tin e.txt trong thư mục con sub_folder 213
Hình 5-5: Khai thác lỗi Directory Traversal trên trang explorer1.com 214
Hình 5-6: Nội dung tập tin password.txt trong thư mục của quản trị viên 215
Hình 5-7: Khai thác lỗi Directory Traversal tương tự bài Directory Traversal 1 216
Hình 5-8: Khai thác lỗi Directory Traversal trên trang explorer2.com thất bại 216
Hình 5-9: Khai thác lỗi Directory Traversal trên trang explorer2.com 217
Hình 5-10: Nội dung tập tin password.txt trong thư mục của quản trị viên 218
Hình 5-11: Khai thác lỗi Directory Traversal tương tự bài Directory Traversal 1 219
Hình 5-12: Khai thác lỗi Directory Traversal trên trang explorer3.com thất bại 219
Hình 5-13: Khai thác lỗi Directory Traversal tương tự bài Directory Traversal 2 220
Hình 5-14: Khai thác lỗi Directory Traversal trên trang explorer3.com thất bại 221
Hình 5-15: Khai thác lỗi Directory Traversal trên trang explorer3.com 222
Hình 5-16: Nội dung tập tin password.txt trong thư mục của quản trị viên 222
Hình 5-17: Khai thác lỗi Directory Traversal tương tự bài Directory Traversal 1 223
Hình 5-18: Khai thác lỗi Directory Traversal trên trang explorer4.com thất bại 224
Hình 5-19: Khai thác lỗi Directory Traversal tương tự bài Directory Traversal 2 225
Hình 5-20: Khai thác lỗi Directory Traversal trên trang explorer4.com thất bại 225
Hình 5-21: Khai thác lỗi Directory Traversal tương tự bài Directory Traversal 3 226
Hình 5-22: Khai thác lỗi Directory Traversal trên trang explorer4.com thất bại 227
Hình 5-23: Khai thác lỗi Directory Traversal trên trang explorer4.com 228
Hình 5-24: Nội dung tập tin password.txt trong thư mục của quản trị viên 228
Hình 6-1: Thực hiện thay đổi địa chỉ email của người dùng tester 231
Hình 6-2: Câu truy vấn yêu cầu thực hiện thay đổi địa chỉ email 231
Hình 6-3: Kiểm tra lại hành động thay đổi địa chỉ email bằng add-on Live HTTP headers 232
Trang 2121
Hình 6-4: Khai thác lỗi Stored XSS để lưu đoạn mã khai thác CSRF 1 233
Hình 6-5: Kết quả cuộc tấn công CSRF 1 234
Hình 6-6: Tạo một chủ đề mới trên diễn đàn 236
Hình 6-7: Phần mã nguồn của chủ đề vừa tạo 236
Hình 6-8: Thực hiện xóa bài viết vừa tạo 237
Hình 6-9: Câu truy vấn yêu cầu xóa bài viết vừa tạo 237
Hình 6-10: Kiểm tra lỗi CSRF với một bài viết bất kỳ 238
Hình 6-11: Mã nguồn của trang Web cho biết số thứ tự của bài viết trong cơ sở dữ liệu 238
Hình 6-12: Một bài viết của quản trị viên 239
Hình 6-13: Mã nguồn của trang Web có bài viết của quản trị viên 239
Hình 6-14: Khai thác lỗi Stored XSS để lưu đoạn mã khai thác CSRF 2 240
Hình 6-15: Kết quả cuộc tấn công CSRF 2 241
Hình 6-16: Tạo một chủ đề mới trên diễn đàn 243
Hình 6-17: Phần mã nguồn của chủ đề vừa tạo 243
Hình 6-18: Kiểm tra lỗi CSRF chức năng tạo chủ đề mới 244
Hình 6-19: Tạo một chủ đề mới thành công 245
Hình 6-20: Khai thác lỗi Stored XSS để lưu đoạn mã khai thác CSRF 3 246
Hình 6-21: Kết quả cuộc tấn công CSRF 3 246
Hình 6-22: Thực hiện lệnh dir trên hệ thống của máy chủ 248
Hình 6-23: Câu truy vấn yêu cầu thực hiện lệnh dir 249
Hình 6-24: Thực hiện lệnh dir C:\ 249
Hình 6-25: Kết quả của lệnh dir C:\ 250
Hình 6-26: Khai thác lỗi Stored XSS để lưu đoạn mã khai thác CSRF 4 251
Hình 9-1: Giao thức SSL 254
Hình 9-2: Heartbeat Extension của giao thức TLS 255
Hình 9-3: Ví dụ về lỗ hổng HeartBleed 256
Hình 9-4: Kiểm tra lỗ hổng HeartBleed bằng phần mềm BkavOpenSSL_Scanner 257
Hình 9-5: Cấu hình thông số cho Metasploit 258
Hình 9-6: Thông tin trong bộ nhớ của máy chủ khi khai thác lỗ hổng HeartBleed 259
Hình 10-1: Triển khai đề tài ATLAB 263
Hình 10-2: Cấu hình địa chỉ ip cho bài giảng ATLAB 263
Trang 2222
Hình 10-3: Ứng dụng WebGoat 264 Hình 10-4: Cấu hình tài khoản người dùng cho WebGoat 264 Hình 10-5: Cấu hình địa chỉ ip cho WebGoat 264
Trang 2323
CHƯƠNG 1: TỔNG QUAN 1.1 Tổng quan về đề tài
1.1.1 Mục tiêu
Mục tiêu của đề tài ATLAB là tạo ra một môi trường thực hành tấn công khai thác các lỗ hổng ứng dụng Web Cấu trúc mỗi bài học bao gồm phần mô tả nội dung lý thuyết và bản hướng dẫn chi tiết cho thực hành Với đề tài ATLAB, người sử dụng có thể là học sinh, sinh viên muốn tự tìm hiểu về lỗ hổng ứng dụng Web, hoặc là giảng viên về ATTT muốn
có ví dụ minh họa về sơ hở và kỹ thuật khai thác lỗ hổng ứng dụng Web một cách chi tiết
Các ưu điểm khi sử dụng ATLAB là:
- Nội dung phong phú, bao gồm nhiều lỗ hổng khác nhau Ngoài ứng dụng Web còn
có các lỗ hổng khác như lỗ hổng của máy chủ, lỗ hổng của cơ sở dữ liệu,
- Độ khó bài thực hành được nâng dần, dựa trên các trường hợp trong thực tế và các nghiên cứu về lỗ hổng ứng dụng Web
- Mỗi bài giảng đều có phần lý thuyết cần thiết để học viên hiểu và nắm được nội dung cơ bản, giúp ghi nhớ kiến thức cũng như thực hiện tốt bài thực hành
- Bài thực hành được giải thích rõ ràng cho từng bước thực hiện, cho phép tự học cũng như học có hướng dẫn
Phương thức sử dụng ATLAB được thực hiện qua giao diện Web cho phép dễ dàng hơn trong thực tế đào tạo Một trung tâm đào tạo có thể triển khai ATLAB trên máy chủ và cho phép học viên truy cập tới tài liệu học tập từ các máy tính cá nhân của mình
1.1.2 Phương pháp thực hiện đề tài
Phương pháp thực hiện đề tài của chúng tôi là
• Tìm hiểu và lựa chọn một thiết kế bài thực hành hiện có phù hợp nhất cho mục tiêu đề tài để làm điểm khởi đầu
• Xây dựng các bài thực hành dựa trên các nghiên cứu từ nhiều cá nhân, tổ chức khác nhau trong Phòng thí nghiệm ATTT ISeLAB
• Xây dựng một kiến trúc ATLAB cho phép vừa tái sử dụng được các bài thực hành hiện có, vừa dễ dàng tích hợp các bài giảng mới và khả năng nâng cấp ATLAB theo cùng các bản nâng cấp của phần mềm thực hành hiện có
Trang 24Bản quyền: DVWA sử dụng bản quyền GNU General Public License, điều này cho thấy DVWA là một phần mềm miễn phí, mọi người có quyền tái phân phối và/hoặc thay đổi DVWA dưới các điều kiện của GNU General Public License
DVWA được thiết kế với 3 mức độ và bao gồm các hạng mục sau:
Trang 25-OWASP Mutillidae: NOWASP (Multillidae) là một ứng dụng web miễn phí, mã nguồn
mở được cung cấp với mục đích làm đối tượng tấn công thử nghiệm cho các công cụ tự động Cùng với nhiều lỗ hổng và hướng dẫn có trong Mutillidae, điều này làm cho
Mutillidae trở thành một môi trường học tấn công ứng dụng web dễ sử dụng Ngoài ra, Mutillidae còn được thiết kế để sử dụng trong phòng thí nghiệm, trong lớp học hay trong các cuộc thi CTF Mutillidae đã được sử dụng trong các khóa học sau đại học, các khóa đào tạo về an ninh web Mutillidae có thể được cài đặt trên Linux và Windows sử dụng LAMP, WAMP hoặc XAMPP, phiên bản được cài đặt sẵn có trên SamuraiWTF, Rapid7 Metasploitable-2 và OWASP BWA
https://www.owasp.org/index.php/OWASP_Mutillidae_2_Project
Trang 2626
Bản quyền: NOWASP (Mutillidae) sử dụng GNU General Public License v3 làm bản quyền, NOWASP cho phép sử dụng Mutillidae vào các mục đích thương mại nhưng có yêu cầu phải công bố mã nguồn chương trình
Các tính năng nổi bật của NOWASP Mutillidae:
• Có hơn 35 lỗ hổng và có ít nhất một lỗ hổng đối với mỗi OWASP Top Ten 2007
và 2010
• Các lỗ hổng được thiết kế như trong môi trường thực tế
• Cài đặt và sử dụng một cách đơn giản
• Có bản cài đặt sẵn trên Rapid 7 Metasploitable 2, Samurai Web Testing
Framework (WTF) và OWASP Broken Web Apps (BWA)
• Có 2 mức độ để gợi ý và hỗ trợ người dùng bắt đầu học về an ninh ứng dụng web
• Cung cấp trang web bắt dự liệu và lưu dữ liệu này vào cơ sở dữ liệu và tập tin
- OWASP Hackademic Challenges Project: OWASP Hackademic là một dự án của
OWASP trong năm 2011 với mục tiêu giúp người dùng có thể tự kiểm tra kiến thức về an ninh ứng dụng Web của mình Người dùng có thể tấn công vào ứng dụng Web này như một môi trường thực tế nhưng được kiểm soát trong một môi trường an toàn
Dự án OWASP Hackademic được đặc biệt thiết kế để sử dụng trong môi trường giáo dục OWASP Hackademic được sử dụng để thách thức các sinh viên và nâng cao kinh nghiệm
về an ninh ứng dụng web trong môi trường thực tế
Trang 2727
https://www.owasp.org/index.php/OWASP_Hackademic_Challenges_Project
OWASP Hackademic thực hiện dựa trên các kịch bản thực tế với các lỗ hổng được kiểm soát, người dùng có thể khai thác các lỗ hổng này để tìm hiểu các khái niệm quan trọng của an ninh thông tin qua góc nhìn của người tấn công
Hiện nay OWASP Hackademic có 10 kịch bản khai thác lỗ hổng ứng dụng web có sẵn và được sắp xếp theo trình tự được đề nghị
Bản quyền: OWASP Hackademic sử dụng phiên bản Apache License v2.0 làm bản
quyền, tất cả mọi người đều có quyền sử dụng miễn phí, tái phân phối và quyền thay đổi chương trình
OWASP Hackademic được phát triển bởi các tình nguyện viên trên khắp thế giới và được phân phối bởi Alex Papanikolaou, Vasileios Vlachos,… Hiện nay, OWASP Hackademic được sử dụng trong nhiều trường đại học trên thế giới và nhận được các phản hồi tích cực
từ phía giáo viên và sinh viên
- WebGoat: WebGoat là một ứng dụng Web có sơ hở một cách cố ý được tổ chức
OWASP thiết kế năm 2010 để giảng dạy về các lỗ hổng ứng dụng Web
Trang 2828
https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
WebGoat bao gồm các phần chính như Code Quality, Concurrency, Unvalidated
Parameters, Access Control Flaws, Authentication Flaws, Trong mỗi bài thực hành của WebGoat có đề cập đến mục tiêu thực hành Tuy nhiên nội dung lý thuyết của bài thực hành không được cung cấp đầy đủ Có những bài giảng không có nội dung lý thuyết Hệ thống chấm điểm của WebGoat không đủ tin cậy vì là chấm gián tiếp (ví dụ như trong bài khai thác lỗi XSS, đoạn mã của người dùng nhập vào có chữ ‘script’ là đã được xác nhận tấn công thành công mà không biết script có hoạt động được hay không) Ngoài ra, phần hướng dẫn thực hành của OWASP cũng như các sản phẩm khác đều cho biết bài thực hành đang đề cập đến có tồn tại lỗi cụ thể, hướng dẫn khai thác mà bỏ qua phần làm sao kiểm tra Website có bị mắc lỗi hay không, làm sao nhận biết Website có lỗi Vì vậy bài thực hành chưa thực sự bám sát thực tế là người tấn công phải có kỹ năng biết một
Website có bị sơ hở hay không trước khi làm các bước tấn công tiếp theo
Về lựa chọn kỹ thuật khai thác để đưa vào đề tài, chúng tôi chọn năm (5) lỗ hổng ứng dụng Web phổ biến nhất theo OWASP
Cấu trúc của mỗi bài giảng bao gồm các phẩn như:
- Mục tiêu: Mô tả mục tiêu của bài thực hành Các thông tin về kiểu sơ hở, kỹ thuật khai thác được giới thiệu
- Tổng quan lý thuyết: Các kiến thức cơ bản về sơ hở và kỹ thuật tấn công được trình bày một cách trực quan và dễ hiểu cho phép học viên dễ dàng được trang bị kiến thức cần thiết để thực hiện bài thực hành
Trang 29OpenCart[12], phpBB[13], eXtplorer[14]
Ngoài các bài giảng được mô tả như trên, đề tài ATLAB còn được bổ sung thêm các bài giảng khác như:
- Một số lỗ hổng được đề cập trong khóa học Certified Ethical Hacker (CEH)[15]
- Advanced Persistent Threat (APT)[16]
- Lỗi mới HeartBleed của OpenSSL
1.1.3 Kiến trúc của ATLAB
ATLAB có 2 thành phần chính là thành phần cung cấp nội dung bài hướng dẫn thực hành
và thành phần cho phép học viên thực hành theo hướng dẫn Để tránh làm nhầm lẫn, bối rối cho người học vì cả hướng dẫn và làm thực hành đều hoạt động trong môi trường Web, nhóm đề tài đã cố gắng tách biệt tối đa 2 hoạt động đọc tài liệu hướng dẫn và tiến hành thực hành Ví dụ trang (tab) trong trình duyệt Web để coi hướng dẫn và tab để tiến hành thực hành luôn là 2 tab khác nhau
Kiến trúc hệ thống của đề tài ATLAB bao gồm các thành phần sau:
- Client: Web browser (Firefox, IE) để học viên tương tác với ATLAB
- Web Server: IIS 7.0, Apache, Tomcat cùng các ứng dụng hoạt động như Web Application
- OS: Windows Server 2008 R2 là hệ điều hành hỗ trợ máy chủ Web
- Database: MSSQL, MySQL, HSQLDB là các ứng dụng chứa dữ liệu phục vụ các máy chủ Web
Nội dung của các bài thực hành của ATLAB được viết bằng ngôn ngữ PHP với các bài thực hành chạy trên máy chủ Web Apache và cơ sở dữ liệu MySQL Ngoài ra còn có IIS với cơ sở dữ liệu MSSQL được cài đặt sẵn trong máy chủ, sẵn sàng cho các ví dụ lỗi đặc trưng của môi trường Microsoft
Trang 3131
Hình 1-1: Sơ đồ logic của ATLAB
Trang 3232
Hình 1-2: Sơ đồ vật lý của ATLAB
Dữ liệu của ATLAB được chia thành hai khối dữ liệu Đó là khối bài giảng lý thuyết cùng hướng dẫn thực hành và khối chứa hệ thống ứng dụng bị lỗi
Người sử dụng ATLAB sẽ truy cập qua mạng vào máy chủ chứa bài giảng lý thuyết tại cổng 80 Khi người sử dụng làm thực hành theo hướng dẫn thực hành của ATLAB, người
sử dụng sẽ kết nối đến hệ thống ứng dụng có lỗi được triển khai trên cổng 80 và dữ liệu nằm trong các thư mục con Toàn bộ nội dung đề tài ATLAB được triển khai trong một máy ảo Windows Server 2008 R2 và máy ảo này đặt trên máy chủ của công ty ISePRO Thư mục chứa mã nguồn của các LAB kể trên:
Trang 33Bảng 1-1: Thư mục chứa mã nguồn của các LAB trong ATLAB
Các loại tài khoản người dùng và vai trò/quyền của các tài khoản đến từng thành phần kể trên
truy cập đến máy chủ Web Người dùng
Tester@store.com Tài khoản người dùng của 16
Trang 3434
Web forum.com
trang Web explorer.com Người dùng
Bảng 1-2: Danh sách tài khoản trong đề tài ATLAB
Với kiến trúc ATLAB kể trên, ta có thể dễ mở rộng nội dung thực hành với các ứng dụng Web bổ sung vào danh sách trên Ví dụ, ta có thể nâng cấp các bộ lọc của các ứng dụng Web đã có và qua đó tạo ra các bài thực hành mới, đòi hỏi những kỹ thuật khác để có thể vượt qua các bộ lọc và tấn công vào ứng dụng Web
Mặt khác, các lỗ hổng hiện nay trên ứng dụng Web xây dựng bằng PHP có thể được mở rộng ra ngôn ngữ ASPX và cơ sở dữ liệu MSSQL
Các ứng dụng Web trên được đặt trong một máy chủ Web Với việc sử dụng công nghệ
ảo hóa của VMware để tạo ra một máy ảo chứa máy chủ Web, chúng ta có thể dễ dàng di chuyển máy chủ, chuyển giao kết quả và mở rộng đề tài
Ngoài nội dung chính là tấn công Web, đề tài ATLAB có bổ sung thêm các bài giảng được đề cập trong khoá học CEH và bài giảng về tấn công Advanced Persistence Threat (APT) Các bài giảng này trích rút từ nội dung luận văn thạc sĩ “Xây dựng môi trường học tấn công và pentest cho ứng dụng” của anh Ngô Đức Duy
Kiến trúc của các bài giảng APT bao gồm các thành phần sau:
- Client: Web browser (Firefox)
- Web Server: Apache
- OS: KaliLinux, CentOS, Windows Server 2003, Windows XP
Các thành phần trên được triển khai trên 6 máy ảo Hiện nay, để thực hiện bài thực hành APT, người học cần tải các máy ảo về máy tính cá nhân, khởi động các máy ảo và thực hành trên máy của mình Tương tác giữa các thành phần được mô tả như hình bên dưới
Trang 3535
Hình 1-3: Sơ đồ logic trong giảng APT
Trang 3636
Hình 1-4: Sơ đồ vật lý trong bài giảng APT
Với mục tiêu hướng dẫn người học về các kỹ thuật tấn công vào Cơ sở dữ liệu, ATLAB được bổ sung một bài giảng tấn công cơ sở dữ liệu MSSQL, bài giảng này là một phần trong nội dung luận văn thạc sĩ của anh Trần Hải Văn Kiến trúc của bài giảng này bao gồm các thành phần sau:
Trang 3737
- Client: Metasploit
- Database: MSSQL
- OS: KaliLinux, Windows Server 2008 R2
Tương tác giữa các thành phần được mô tả như hình bên dưới
Hình 1-5: Sơ đồ logic trong bài giảng MSSQL
Hình 1-6: Sơ đồ vật lý trong bài giảng MSSQL
về các lỗ hổng, xây dựng lab thực hành theo yêu cầu, xây dựng bài giảng lý thuyết
Các thành viên nghiên cứu ngoài ISeLAB chủ yếu là các học viên cao học của Trung tâm đào tạo PUF và các thực tập sinh của trường Đại học Công nghệ thông tin, Đại học Quốc
tế Các vấn đề nghiên cứu của các học viên đều liên quan tới các vấn đề trong đề tài, kể
Trang 3838
cả những vấn đề dự kiến sẽ phát triển sau đề tài Báo cáo này có sử dụng một số thông tin, nội dung, hình ảnh từ một số luận văn của các thành viên trên
Nhóm đề tài xin chân thành cảm ơn ĐHQG-HCM và Khu CNPM ĐHQG-HCM đã đầu tư
và hỗ trợ nhóm đề tài trong suốt quá trình đề xuất và thực hiện đề tài Cảm ơn các cá nhân nghiên cứu ngoài ISeLAB đã đồng hành cùng nhóm nghiên cứu trong thời gian qua
và đồng ý cho nhóm đề tài sử dụng các kết quả nghiên cứu chung của mình và ISeLAB trong báo cáo
2 Xây dựng bài giảng lý thuyết và
lab thực hành cho lỗ hổng
Cross-Site Scripting
6 bài giảng Hoàn thành Hiện có 18 bài giảng
trong mục Cross-Site Scripting
3 Xây dựng bài giảng lý thuyết và
lab thực hành cho lỗ hổng
Authentication
4 Xây dựng bài giảng lý thuyết và
lab thực hành cho lỗ hổng
Insecure Direct Object Reference
5 Xây dựng bài giảng lý thuyết và
lab thực hành cho lỗ hổng
Cross-Site Request Forgery
Bảng 1-3: Nội dung công việc và kết quả của đề tài ATLAB
Kết quả đào tạo Các luận văn thạc sĩ sau đây được thực hiện theo hướng nghiên cứu của
Trang 3939
1.4 Nội dung trình bày
Phần còn lại của báo cáo sẽ bao gồm 9 chương Để dễ theo dõi, chúng tôi dành mỗi chương trong báo cáo này cho một dạng lỗ hổng cùng các kỹ thuật khai thác chúng Các chương này đều có cách thức trình bày tương đồng, bao gồm nêu mục tiêu, tổng quan lý thuyết, liệt kê trang thiết bị thực hành, mô tả tình huống và hướng dẫn từng bước thực hiện khai thác cho một lỗ hổng Chương 10 bình luận về hướng phát triển của đề tài Những chi tiết kỹ thuật, mã nguồn của các sản phẩm phần mềm được trình bày trong các phụ lục Cụ thể là:
Trang 4040
CHƯƠNG 2: Lỗ hổng Injection
Các bài giảng về lỗ hổng Injection đề cập đến lỗi SQL Injection[17], trong đó có các bài từ SQL Injection
1 đến SQL Injection 15 được thiết kế nâng dần độ khó của bài thực hành thông qua nâng cấp bộ lọc của ứng dụng Web, các chi tiết như Mục tiêu, Tổng quan lý thuyết, Trang thiết bị thực hành được thể hiện giống nhau Cụ thể như sau:
Mục tiêu: Các bài giảng về lỗ hổng Injection tập trung vào việc kiểm tra khả năng kiểm tra/phê duyệt dữ
liệu nhận được từ người dùng của ứng dụng Web, từ đó tìm cách vượt qua chức năng đăng nhập của ứng dụng Web và đăng nhập vào tài khoản quản trị viên
Tổng quan lý thuyết:SQL injection là một kỹ thuật cho phép người tấn công lợi dụng lỗ hổng của việc
kiểm tra dữ liệu đầu vào trong các ứng dụng Web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về
để inject (tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp SQL injection có thể cho phép những kẻ tấn công thực hiện các thao tác delete, insert, update,… trên cơ sỡ dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy, lỗi này thường xãy ra trên các ứng dụng Web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase
Lỗi SQL Injection xảy ra khi ứng dụng Web không kiểm tra dữ liệu đầu vào Người tấn công có thể lợi dụng nhập vào dữ liệu ‘đặc biệt’ dẫn đến làm thay đổi câu truy vấn và kết quả là thực hiện câu truy vấn theo ý của người tấn công
Trang thiết bị thực hành:
Để thực hiện các bài thực hành này, cần chuẩn bị:
- Trình duyệt Web bất kỳ
- Tập tin image VMware có ứng dụng Web bị lỗi Injection
Để triển khai môi trường thực hành cho bài giảng này, thực hiện theo các bước sau:
1 Triển khai image VMware lên VMware Workstation hay VMware Player
2 Chạy máy ảo này và nhận được ứng dụng Web có lỗi Injection
Mục Tình huống và Thực hiện của mỗi bài thực hành SQL Injection 1 đến SQL Injection 15 được trình bày chi tiết bên dưới
2.1 SQL Injection 1
2.1.1 Tình huống
Ta có mô hình kết nối [Web Client] <-> [Web Server] <-> [Web Application] <-> [Database]
Người dùng sử dụng trình duyệt Web truy cập vào máy chủ Web, truy cập này được gửi đến ứng dụng Web xử lý Trong ứng dụng Web này có một trang dùng để đăng nhập vào giao diện quản lý, chỉ quản trị viên có tài khoản và mật khẩu hợp lệ mới có thể truy cập vào đây Khi người dùng gửi thông tin đăng nhập, thông tin này sẽ được ứng dụng Web xử lý, từ thông tin này, ứng dụng Web tạo ra câu truy vấn để kiểm tra sự hợp lệ của người dùng, câu truy vấn này tiếp tục được gửi đến cơ sở dữ liệu xử lý và sau đó ứng dụng Web phản hồi về cho người dùng