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

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

264 14 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 264
Dung lượng 6,39 MB

Nội dung

• 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 1

BÁO CÁO TỔNG KẾT

DỤNG WEB PHỤC VỤ CÔNG TÁC GIẢNG DẠY

Trang 2

2

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 3

3

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 4

4

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 5

5

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 6

6

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 7

7

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 8

8

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 9

9

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 10

10

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 11

11

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 12

12

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 13

13

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 14

14

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 15

15

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 16

16

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 17

17

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 18

18

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 19

19

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 20

20

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 21

21

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 22

22

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 23

23

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 24

Bả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 26

26

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 27

27

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 28

28

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 29

OpenCart[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 31

31

Hình 1-1: Sơ đồ logic của ATLAB

Trang 32

32

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 33

Bả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 34

34

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 35

35

Hình 1-3: Sơ đồ logic trong giảng APT

Trang 36

36

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 37

37

- 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 38

38

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 39

39

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 40

40

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

Ngày đăng: 22/01/2021, 20:38

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w