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

Tấn công và phòng thủ, ứng dụng web database

81 1,4K 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 81
Dung lượng 748,5 KB

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

Nội dung

Tấn công và phòng thủ, ứng dụng web database

Trang 1

Mục lục

Mục lục 1

Mục lục hình vẽ 6

Nhận xét giáo viên 7

7

7

7

7

7

7

7

7

7

7

7

7

7

7

7

7

7

Giới thiệu 8

PHẦN THỨ NHẤT 10

CƠ SỞ LÝ THUYẾT 10

Chương 1: 11

GIỚI THIỆU ỨNG DỤNG WEB & DATABASE 11

I Khái niệm ứng dụng Web 11

II.Mô tả hoạt động của một ứng dụng Web 14

Trang 2

CÁC KHÁI NIỆM THUẬT NGỮ LIÊN QUAN 15

I:Hacker 15

II: HTTP Header 15

III: SESSION 15

IV: COOKIE 16

V: PROXY 16

Chương 3: 17

GIỚI THIỆU SƠ LƯỢC VỀ CÁC KỸ THUẬT TẤN CÔNG ỨNG DỤNG WEB 17

I: KIỂM SOÁT TRUY NHẬP WEB (WEB ACCESS CONTROL) 17

I.1 Thâm nhập qua cửa sau (BACK DOOR) 17

II: CHIẾM HỮU PHIÊN LÀM VIỆC (SESSION MANGEMENT) 17

II.1 Ấn định phiên làm việc (SESSION FIXATION) 17

II.2 Đánh cắp phiên làm việc (SESSION HIJACKING) 17

III: Lợi dụng lỗi trong việc kiểm tra nhập dữ liệu (INPUT VALIDATION) 17

III.1 Kiểm tra hợp lệ phía trình duyệt (CLIENT-SIDE VALIDATION) 17

III.2 Tràn bộ đệm ( BUFFER OVERFLOW) 17

III.3 Mã hóa URL (URL ENCODING) 18

III.4 Ký tự META( META CHARACTERS) 18

III.5 Vượt qua đường dẫn (PATH TRAVERSAL) 18

III.6 Chèn mã lệnh thực thi trình duyệt nạn nhân (CROSS-SITE SCRIPING) 18

III.7 Thêm câu lệnh hệ thống (OS COMMAND INJECTION) 18

III.8 Chèn câu truy vấn SQL (SQL INJECTION) 19

III.9 Ngôn ngữ phía máy chủ (SEVER SIDE INCLUDES) 19

III.10 Kí tự rỗng (NULL CHARACTERS) 19

III.11 Thao tác trên tham số truyền (PRAMETER MANIPULATION) 19

IV.Để lộ thông tin (INFORMATIONAL) 20

V Từ chối dịch vụ (DENIAL OF SERVICE (DOS)) 20

PHẦN THỨ HAI 21

CÁC KĨ THUẬT TẤN CÔNG VÀ 21

BẢO MẬT ỨNG DỤNG WEB &DATABASE 21

Chương 4: 22

THAO TÁC TRÊN THAM SỐ TRUYỀN 22

I THAO TÁC TRÊN URL 22

Trang 3

I.1 Khái niệm: 22

I.2 Một số biện pháp khắc phục 23

II THAO TÁC TRÊN BIẾN ẨN FORM 23

II.1 Khái niệm 23

II.2 Một số biện pháp khắc phục 23

III THAO TÁC TRÊN COOKIE 24

III.1 Khái niệm 24

III.2 Một số biện pháp khắc phục 24

IV THAO TÁC TRONG HTTP HEADER 25

IV.1 Khái niệm 25

IV.2 Một số biện pháp khắc phục 26

Chương 5 27

CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT NẠN NHÂN 27

I KĨ THUẬT TẤN CÔNG CROSS SITE SCRIPTING (XSS) 28

II PHƯƠNG PHÁP TẤN CÔNG XSS TRUYỀN THỐNG 28

III TẤN CÔNG XSS BẰNG FLASH 29

V CÁCH PHÒNG CHỐNG 30

Chương 6 32

CHÈN CÂU TRUY VẤN SQL 32

I KHÁI NIỆM SQL INJECTION 33

II GIỚI THIỆU MÔ HÌNH CƠ SỞ DỮ LIỆU 33

III CÁC CÁCH TẤN CÔNG 34

III.1 Kĩ thuật tấn công SQL Injection 34

I.THAO TÁC TRÊN URL 35

I.1 KHÁI NIỆM 35

I.2 MỘT SỐ BIỆN PHÁP KHẮC PHỤC 36

II THAO TÁC TRÊN BIẾN ẨN FORM 36

II.1 KHÁI NIỆM 36

II.2 MỘT SỐ BIỆN PHÁP KHẮC PHỤC 37

III THAO TÁC TRÊN COOKIE 38

III.1 KHÁI NIỆM 38

III.2 MỘT SỐ BIỆN PHÁP KHẮC PHỤC 39

IV THAO TÁC TRONG HTTP HEADER 39

IV.1 KHÁI NIỆM 39

Trang 4

Chương 5: 41

CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT NẠN NHÂN 41

I.KỸ THUẬT TẤN CÔNG CROSS SITE SCRIPTING (XSS) 41

II.PHƯƠNG PHÁP TẤN CÔNG XSS TRUYỀN THỐNG 44

III.MỘT SỐ WEBSITE TÌM THẤY LỖ HỔNG XSS 47

IV.TẤN CÔNG XSS BẰNG FLASH 48

V Cách phòng chống 50

Chương 6: 51

CHÈN CÂU TRUY VẤN SQL 51

I.KHÁI NIỆM SQL INJECTION 51

II GIỚI THIỆU MÔ HÌNH CƠ SỞ DỮ LIỆU 52

III.CÁC CÁCH TẤN CÔNG 52

IV.CÁCH PHÒNG CHỐNG 60

Chương 7: Tràn bộ đệm 61

I Khái niệm 61

II Cách phòng chống 65

Chương 8 :Từ chối dịch vụ (Dos) 66

I.Khái niệm 66

II.Những khả năng bị tấn công bằng DOS 66

III.Các kỹ thuật tấn công 67

IV.Biện pháp phòng chống 68

Chương 9 :một số kỹ thuật tấn công khác 69

I.Mã hóa URL (URL Encoding) 69

I.1 Khái niệm 69

I.2 Biện pháp phòng chống 70

II.Kiểu tấn công vượt đường dẫn 70

II.1 Khái niệm 70

II.2 Một số biện pháp phòng chống 71

III.Tấn công dựa vào kí tự rỗng 71

III.1 Khái niệm 71

III.2 Một số biện pháp phòng chống 71

Chương 10: Tổng kết quá trình tấn công của Hacker 72

I Thu thập thông tin ở mức hạ tầng của mục tiêu 72

Chương 11: Tổng kết các biện pháp phòng chống 74

Trang 5

I.Với những nhà quản trị mạng 75

II Với người sử dụng ứng dụng WEB 78

Kết luận 78

Tài liệu tham khảo 81

Trang 6

Mục lục hình vẽ

Hình 1 : Kiến trúc ứng dụng Web và Database Trang 11Hình 2 : Mô hình hoạt động của một ứng dụng Web Trang 12Hình 3:Quá trình thực hiện XSS Trang 44Hình 4: Cách viết Action Scipt trong Flash Trang 49

Trang 7

Nhận xét giáo viên

Trang 8

Giới thiệu

Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều có nhu cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên giao dịch trực tuyến Vấn đề nảy sinh là khi phạm vi ứng dụng của các ứng dụng Web ngày càng mở rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao, trở thành đối tượng cho nhiều người tấn công với nhiều 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 của thế giới mạng ,các dịch vụ thương mại điện tử ngày càng phát triển Số lượng các cuộc tấn công trên Internet cũng tăng dần theo cấp số nhân Trong khi đài báo ,các phương tiện thông tin đại chúng ngày càng nhắc nhiều tới khả năng truy nhập thông tin trên Internet , sự quan trọng của thông tin người dùng khi tham gia vào thế giới mạng như : ngày sinh,thẻ tíndụng, tài khoản ngân hàng ,Email … Như thời gian gần đây dịp cuối tháng 12 /

2010 báo điện tử Vietnamnet bị Hacker tấn công ,thay đổi trang chủ ,đưa thôngtin nhạy cảm của báo lên mạng ,bị tấn công DDOS Đó là điều cảnh báo nói riêng cũng như nói chung với sự nguy hiểm của sự mất An toàn thông tin

Và trên thế giới những vụ tấn công bất hợp pháp nhằm vào các máy tính trên Internet ,các máy tính của tất cả các công ty lớn như AT&T ,IBM ,các trường đại học các cơ quan nhà nước ,các tổ chức quan sự ,nhà băng …Một số các 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 các cuộc tấn công này chỉ là phần nổi của tảng băng Phần lớn các cuộc tấn công không được thông báo ,vì nhiều lý do trong đó có thể kể tới nỗi lo

bị mất uy tín Người quản trị hệ thống không hề hay biết hệ thống của mình đang bị tin tặc tấn công

Điển hình là vào tháng 3/2011 phần mềm thương mại của IBM đã bị Hacker phát hiện ra lỗ hổng nghiêm trọng Với bất kỳ ai cùng với trình duyệt Web cũng có thể có được những thông tin nhạy cảm (người dùng,tài khoản

Trang 9

Admin …)

Công nghệ thông tin ngày càng phát triển ,kéo theo nó thì các cuộc tấn công vào ứng dụng Web và Database ngày càng tinh vi và có tổ chức hơn Mặt khác đòi hỏi các nhà quản trị mạng cần phải cập nhập thường xuyên các nguy

cơ có thể xảy ra đến hệ thống của mình ,kiến thức và kinh nghiệm cần được vậndụng triệt để nhằm tránh những tổn thất không đáng có có thể xảy ra

Đề tài thực tập đi sâu vào các vấn đề : “Tấn công và phòng thủ ứng dụng Web và Database “ Nhằm mục đích tìm hiểu các phương pháp tấn công mới nhất ,và đề ra cách thức phòng thủ Giảm thiểu được những rủi ro xấu nhất ảnhhưởng tới vấn đề An toàn thông tin của hệ thống Đồng thời giới thiệu một số công cụ quét lỗ hổng dành cho các Coder ,admin phát hiện nhanh nhất các mối nguy hiểm của hệ thống Database ,Website của mình

Trang 10

PHẦN THỨ NHẤT

CƠ SỞ LÝ THUYẾT

Trang 11

Chương 1:

GIỚI THIỆU ỨNG DỤNG WEB & DATABASE

Luận văn được thực hiện nhằm tìm hiểu về các kĩ thuật tấn công trang Web & Database và đề ra cách phòng chống Do đó, trong chương đầu tiên luận văn sẽ giới thiệu sơ lược một số khái niệm cơ bản và đây chính là nền tảng để xây dựng nội dung cho những phần sau

I Khái niệm ứng dụng Web

Ứng dụng Web là một ứng dụng chủ/khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác Trình khách dành cho người sử dụng thường là một trình duyệt Web như Internet Explorer hay Firefox 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ấtnhanh Trước đây những ứng dụng Web thường được xây dựng bằng CGI

(Common Gateway Interface) được chạy trên các trình chủ Web và có thể kết nối vào các cơ sở dữ liệu đơn giản trên cùng máy chủ Ngày nay ứng dụng Web thường được viết bằng Java (hay các ngôn ngữ tương tự) và chạy trên máy chủ phân tán, kết nối đến nhiều nguồn dữ liệu

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

Trang 12

Hình 1 : Kiến trúc ứng dụng Web và Database

• Lớp trình bày: Lớp này có nhiệm vụ hiển thị dữ liệu cho người dùng, ngoài ra còn có thể có thêm các ứng dụng tạo bố cục cho trang web

• Lớp ứng dụng: là nơi xử lý của ứng dụng Web Nó sẽ xử lý thông tin người dùng yêu cầu, đưa ra quyết định, gửi kết quả đến “lớp trình bày” Lớp này thường được cài đặt bằng các kỹ thuật lập trình như CGI, Java, NET , PHP hay ColdFusion, được triển khai trên các trình chủ như IBM WebSphere,

WebLogic, Apache, IIS…

• Lớp dữ liệu: thường là các hệ quản trị dữ liệu (DBMS) chịu trách nhiệm quản

lý các file dữ liệu và quyền sử dụng

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

Trang 13

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

• Trình khách ( hay còn gọi là trình duyệt): Internet Explorer, Netscap

Navigator,Firefox

• Trình chủ: Apache, IIS, …

• Hệ quản trị cơ sở dữ liệu: SQL Server, MySQL, DB2, Access…

Bên cạnh đó, một giải pháp dùng để bảo vệ một hệ thống mạng thường được sử dụng là bức tường lửa, nó có vai trò như là lớp rào chắn bên ngoài một hệ thốngmạng, vì chức năng chính của firewall là kiểm soát luồng thông tin giữa các máy tính Có thể xem firewall như một bộ lọc thông tin, nó xác định và cho phép một máy tính này có được truy xuất đến một máy tính khác hay không, hay một mạng này có được truy xuất đến mạng kia hay không

Người ta thường dùng firewall vào mục đích:

• Cho phép hoặc cấm những dịch vụ truy xuất ra ngoài

• Cho phép hoặc cấm những dịch vụ từ bên ngoài truy nhập vào trong

• Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập

Firewall hoạt động dựa trên gói IP do đó kiểm soát việc truy nhập của máy người sử dụng

Trang 14

II.Mô tả hoạt động của một ứng dụng Web

Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web thông qua các lệnh cơ bản GET, POST… của giao thức HTTP, trình chủ lúc này

có thể cho thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C++… hoặc trình chủ yêu cầu bộ diễn dịch thực thi các trang ASP, JSP… theo yêu cầu của trình khách Tùy theo các tác vụ của chương trình đượccài đặt mà nó xử lý, tính toán, kết nối đến cơ sở dữ liệu, lưu các thông tin do trình khách gửi đến…và từ đó trả về cho trình khách 1 luồng dữ liệu có định dạng theo giao thức HTTP, nó gồm 2 phần:

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

• Body là phần nội dung dữ liệu mà Server gửi về Client, nó có thể là mộtfile HTML, một hình ảnh, một đoạn phim hay một văn bản bất kì

Theo mô hình ở hình 2, với firewall, luồng thông tin giữa trình chủ và trình khách là luồng thông tin hợp lệ Vì thế, nếu hacker tìm thấy vài lỗ hổng trong ứng dụng Web thì firewall không còn hữu dụng trong việc ngăn chặn hacker này Do đó, các kĩ thuật tấn công vào một hệ thống mạng ngày nay đang dần tập trung vào những sơ suất (hay lỗ hổng) trong quá trình tạo ứng dụng của những nhà phát triển Web hơn là tấn công trực tiếp vào hệ thống mạng, hệ điều hành Tuy nhiên, hacker cũng có thể

lợi dụng các lỗ hổng Web để mở rộng sự tấn công của mình vào các hệ thống không liên quan khác

Trang 15

Chương 2 : CÁC KHÁI NIỆM THUẬT NGỮ LIÊN QUAN

III: SESSION

HTTP là giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa làHTTP không lưu trữ trạng thái làm việc giữa trình duyệt với trình chủ Sự thiếusót này gây khó khăn cho một số ứng dụng Web, bởi vì trình chủ không biếtđược trước đó trình duyệt đã có những trạng thái nào Vì thế, để giải quyết vấn

đề này, ứng dụng Web đưa ra một khái niệm phiên làm việc (Session) CònSessionID là một chuỗi để chứng thực phiên làm việc Một số trình chủ sẽ cungcấp một SessionID cho người dùng khi họ xem trang web trên trình chủ

Để duy trì phiên làm việc thì sessionID thường được lưu vào :

Biến trên URL

Biến ẩn form

Trang 16

Phiên làm việc chỉ tồn tại trong một khoảng thời gian cho phép, thời gian này được cấu hình qui định tại trình chủ hoặc bởi ứng dụng thực thi Trình chủ sẽ tựđộng giải phóng phiên làm việc để khôi phục lại tài nguyên của hệ thống.

IV: COOKIE

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

và trình duyệt của người dùng Các cookie được lưu trữ dưới những file dữ liệu nhỏ dạng text, được ứng dụng tạo ra để lưu trữ/truy tìm/nhận biết các thông tin

về người dùng đã ghé thăm trang Web và những vùng mà họ đi qua trong trang Những thông tin này có thể bao gồm tên/định danh người dùng, mật khẩu, sở thích, thói quen

V: PROXY

Proxy cung cấp cho người sử dụng truy xuất Internet những thực thi trên dual_homed host hoặc basion host Những chương trình client của người sử dụng sẽ qua trung gian proxy server thay thế cho server thật sự mà người sử dụng cần giao tiếp

Trang 17

Chương 3:

GIỚI THIỆU SƠ LƯỢC VỀ CÁC KỸ THUẬT TẤN CÔNG

ỨNG DỤNG WEB

I: KIỂM SOÁT TRUY NHẬP WEB (WEB ACCESS CONTROL)

I.1 Thâm nhập qua cửa sau (BACK DOOR)

Trong quá trình thiết kế ứng dụng, những người phát triển ứng dụng có thể cài một “cửa sau” (back door) để sau này có thể thâm nhập vào hệ thống một cách

dễ dàng

II: CHIẾM HỮU PHIÊN LÀM VIỆC (SESSION MANGEMENT)

II.1 Ấn định phiên làm việc (SESSION FIXATION)

Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ bằng cách gửi một session ID hợp lệ đến người dùng, sau khi người dùng đăng nhập vào hệ thống thành công, hacker sẽ dùng lại session ID đó và nghiễm nhiên trở thành người dùng hợp lệ

II.2 Đánh cắp phiên làm việc (SESSION HIJACKING)

Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ sau khi nạn nhân đã đăng nhập vào hệ thống bằng cách giải mã session ID của họ được lưu trữ trong cookie hay tham số URL, biến ẩn của form

III: Lợi dụng lỗi trong việc kiểm tra nhập dữ liệu (INPUT VALIDATION)

III.1 Kiểm tra hợp lệ phía trình duyệt (CLIENT-SIDE VALIDATION)

Do ngôn ngữ phía trình duyệt ( JavaScript, VBScript ) đuợc thực thi trên trình duyệt nên hacker có thể sửa đổi mã nguồn để có thể vô hiệu hóa sự kiểm tra

III.2 Tràn bộ đệm ( BUFFER OVERFLOW)

Một khối lượng dữ liệu được gửi cho ứng dụng vượt quá lượng dữ liệu được cấp phát khiến cho ứng dụng không thực thi được câu lệnh dự định kế tiếp

Trang 18

Nghiêm trọng hơn nếu ứng dụng được cấu hình để thực thi với quyền root trên

hệ thống

III.3 Mã hóa URL (URL ENCODING)

Lợi dụng chuẩn mã hóa những kí tự đặc biệt trên URL mà hacker sẽ mã hoá tự động những kí tự bất hợp lệ- những kí tự bị kiểm tra bằng ngôn ngữ kịch bản-để vượt qua vòng kiểm soát này

III.4 Ký tự META( META CHARACTERS)

Sử dụng những kí tự đặc biệt ( nói rõ hơn trong phần phụ lục) hacker có thể chèn thêm vào dữ liệu gửi những kí tự trong chuỗi câu lệnh như <script> trong kĩ thuật XSS, ‘ trong SQL….để thực thi câu lệnh

III.5 Vượt qua đường dẫn (PATH TRAVERSAL)

Là phương pháp lợi dụng đường dẫn truy xuất một tập tin trên URL để trảkết quả về cho trình duyệt mà hacker có thể lấy được nội dung tập tin bất kì trên

Site scripting cũng là một kiểu tấn công “session hijacking”

III.7 Thêm câu lệnh hệ thống (OS COMMAND INJECTION)

Khả năng thực thi được những câu lệnh hệ thống hay những đoạn mã được thêm vào trong những tham số mà không có sự kiểm tra chặt chẽ như tham số của form, cookies, yêu cầu HTTP Header, và những dữ liệu nguy hiểm

Trang 19

trong những tập tin được đưa lên trình chủ.

Thành công trong kĩ thuật này giúp hacker có thể thực thi được những câu lệnh

hệ thống với cùng quyền của trình chủ

III.8 Chèn câu truy vấn SQL (SQL INJECTION)

Trong lập trình với cơ sở dữ liệu, người lập trình đã sai sót trong vấn đề kiểm tra giá trị nhập vào để từ đó hacker lợi dụng thêm vào những câu truy vấn hay những giá trị không hợp lệ để dễ dàng đăng nhập vào hệ thống

III.9 Ngôn ngữ phía máy chủ (SEVER SIDE INCLUDES)

Là khả năng thêm vào những câu lệnh thuộc hệ thống như nhúng file (include file), truy xuất cơ sở dữ liệu (jdbc)…khiến cho hacker có cơ hội truy xuất đến file, cơ sở dữ liệu…mà bình thường không thể xem được trên Web site

III.10 Kí tự rỗng (NULL CHARACTERS)

Lợi dụng chuỗi kí tự thường kết thúc bằng \0 mà hacker thường thêm vào

để đánh lừa ứng dụng vì với những ứng dụng sử dụng chương trình cgi như C++ thì C++ cho rằng \0 là dấu kết thúc chuỗi

Ví dụ:

Hacker thêm chuỗi sau:

Ô nhập: đề tài thứ nhất\0<script> alert(document.cookie)</script>

nếu ứng dụng sử dụng chương trình C++ để kiểm tra tính đúng đắn của chuỗi thì chuỗi trên hợp lệ do C++ sẽ nhân biết “\0” là kết thúc chuỗi nên không kiểm tra đoạn sau

III.11 Thao tác trên tham số truyền (PRAMETER MANIPULATION)

Những thông tin trao đổi giữa trình chủ và trình duyệt được lưu trữ trong những biến như biến trên URL, biến ẩn form, cookie…Bởi vì việc kiểm soát

Trang 20

biến để đánh cắp phiên làm việc của người dùng hay thay đổi giá trị một món hàng….

IV.Để lộ thông tin (INFORMATIONAL)

Những tập tin và ứng dụng trên hệ thống chứa những thông tin quan trọng như mã nguồn một trang Web hay tập tin chứa mật khẩu của người dùng trên hệ thống luôn là mục tiêu của hacker Ngoài ra những lời chú thích trong

mã nguốn cũng là nguồn thông tin hữu ích cho hacker

Hacker sử dụng trả lời HTTP từ hệ thống để xác định một tập tin hay ứng dụng

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

Ví dụ 1.IV-1:

• HTTP 200 : tập tin tồn tại

• HTTP 404: tập tin không tồn tại

V Từ chối dịch vụ (DENIAL OF SERVICE (DOS))

Một khối lượng lớn yêu cầu được gửi cho ứng dụng trong một khoảng thời gian nhất định khiến hệ thống không đáp ứng kịp yêu cầu dẫn đến hệ thống

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

• Chèn mã lệnh thực thi trên trình duyệt

Trang 22

Chương 4:

THAO TÁC TRÊN THAM SỐ TRUYỀN

Thao tác trên tham số truyền là kĩ thuật thay đổi thông tin quan trọng trêncookie, URL hay biến ẩn của form Kĩ thuật Cross-Site Scripting, SessionID,SQL Injection, Buffer Overflow…cũng cần dùng đến các tham số này để hoànthiện các bước tấn công của hacker Có thể nói các tham số truyền là đầu mốicho mọi hoạt động của hacker trong quá trình tấn công ứng dụng

Vì thế đây là nội dung chương đầu tiên được đề cập trong phần thứ hai, mụcđích cũng là để hỗ trợ tốt hơn phần trình bày các chương kế tiếp

I THAO TÁC TRÊN URL

I.1 Khái niệm:

Khi nhập một form HTML thì kết quả sẽ được gửi đi theo hai cách: GEThay 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ệntrong chuỗi URL

Ví dụ 4.I.1-1: Có một trang web ứng dụng cho phép thành viên đã được thay đổimật khẩu

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

Với:

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

+ newpass là mật khẩu mới cho username

Tuy nhiên, bằng cách thay đổi tham số như sau:

http://www.nganhang.com/example?user=admin&newpass=111111

Trang 23

Hacker đã có thể thay đổi mật khẩu của admin bằng một mật khẩu mới bất kì, trong ví dụ này là ‘1111111’

- Ngoài ra với những thông tin có giá trị cần được mã hóa trước khitin này được khi được hiển thị trên trình duyệt để tránh hacker có thể sửa đổitùy ý

II THAO TÁC TRÊN BIẾN ẨN FORM

II.1 Khái niệm

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

Trang 24

Dùng biến HTTP_REFERER để kiểm tra nguồn gốc của yêu cầu gửi đến,

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

liệu

III THAO TÁC TRÊN COOKIE

III.1 Khái niệm

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

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

III.2 Một số biện pháp khắc phục

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

Trang 25

ứng dụng cần kiểm tra thông tin của một người dùng, ứng dụng sẽ dùngsessionID của người dùng để chỉ đến thông tin của người dùng đó trong cachehay 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ảntrị” được được thiết lập là đúng trong cookie, nhưng giá trị của số thứ tự ngườidùng trong cookie lại không giống như giá trị số thứ tự của “người quản trị”được lưu trữ trên server

Phương pháp cuối cùng là mã hoá cookie Có một số phương pháp mã hoá

như symmetric (dùng 1 khóa duy nhất cho cả mã hóa và giải mã) hayasymmetric (mã hóa dùng 2 khóa riêng biệt, một khóa dùng chung cho mã hóa

và một khóa riêng để giải mã)

IV THAO TÁC TRONG HTTP HEADER

URL, biến ẩn form, cookie đều là những thành phần lưu trữ thông tin màngười dùng thông thường có thể xem và thay đổi Tuy nhiên, những thành phần

đó đều được chuyển đi thông qua HTTP Header Vì thế, mặc dù HTTP Headerkhông phải là tham số truyền của một ứng dụng nhưng mọi thông tin đều đượclưu trữ vào nó trước khi chuyển đi nên trong phần này sẽ đề cập đến việc thayđổi một HTTP Header

IV.1 Khái niệm

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

Trang 26

IV.2 Một số biện pháp khắc phục

Đơn giản là không tin tưởng vào HTTP header nếu chưa có các biện pháp

an toàn Với các header gửi từ trình chủ, chẳng hạn như cookie thì có thể được

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

Nhận xét:

Mọi thông tin quan trọng trao đổi giữa trình duyệt và trình chủ không nên lưutrữ dưới dạng chuỗi thông thường mà cần được mã hóa, ngoài ra những thôngtin này nên được kiểm tra, đối chiếu với dữ liệu trong cơ sở dữ liệu hay trongcache của trình chủ, phòng tránh trường hợp nội dung thông tin bị sai lệch Bêncạnh đó, việc kiểm tra dữ liệu đúng đắn là cần thiết vì hầu như các kĩ thuật tấncông đều dựa vào dữ liệu nhập trên URL, biến ẩn form hay cookie như kiểu tấncông Cross-Site Scripting trong chương kế tiếp hay SQL Injection trong chương6…

Trang 27

Chương 5 CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT NẠN

Trang 28

I KĨ THUẬT TẤN CÔNG CROSS SITE SCRIPTING (XSS)

Phương pháp Cross Site Scripting (được viết tắt là XSS) là phương pháptấ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ếtlập được những thông tin quan trọng như cookies, mật khẩu,… vào mã nguồnứng dụng web để từ đó chúng được chạy như là một phần của ứng dụng Web và

có chức năng cung cấp hoặc thực hiện những những điều hacker muốn

Phương pháp này không nhằm vào máy chủ hệ thống mà chủ yếu tấncông trên chính máy người sử dụng Hacker sẽ lợi dụng sự kiểm tra lỏng lẻo từứng dụng và hiểu biết hạn chế của người dùng cũng như biết đánh vào sự tò mòcủa họ dẫn đến người dùng bị mất thông tin một cách dễ dàng Thông thườnghacker lợi dụng địa chỉ URL để đưa ra những liên kết là tác nhân kích hoạtnhững đoạn chương trình được viết bằng ngôn ngữ máy khách như VBScript,JavaScript…được thực thi trên chính trình duyệt của nạn nhân

đoạn mã được thêm vào với mục đích đánh cắp cookies của nạn nhân

II PHƯƠNG PHÁP TẤN CÔNG XSS TRUYỀN THỐNG

Ứng dụng Web thường lưu trữ thông tin quan trọng ở cookie Cookie làmẩu thông tin mà ứng dụng lưu trên đĩa cứng của người sử dụng Nhưng chỉứng dụng thiết lập ra cookie thì mới có thể đọc nó Do đó chỉ khi người dùng

Trang 29

đang trong phiên làm việc của ứng dụng thì hacker mới có cơ hội đánh cắpcookie Công việc đầu tiên của hacker là tìm trang đích để dụ người dùng đăngnhập sau khi đã tìm ra lỗ hổng trên ứng dụng đó.

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

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

III TẤN CÔNG XSS BẰNG FLASH

Ngoài những cách đưa một đoạn mã nguy hiểm thì hacker còn có thể lợidụng những tập tin flash để đánh cắp thông tin Macromedia Flash cho phép lậptrình bằng một ngôn ngữ kịch bản đã được xây dụng sẵn trong Flash làActionScript ActionScript có cú pháp đơn giản và tương tự như JavaScript, C

Trang 30

thường là một URL chẳng hạn như “http://www.yahoo.com”.

rõ hơn về cách tấn công này là”

Đây là đoạn lệnh trong tập tin flash và sẽ được thi hành khi tập tin flash đượcđọc:

Trang 31

o Lọc dấu nháy đơn hay kép.

o Lọc kí tự Null ( vì khả năng thêm một đoạn mã bất kì sau kí tự Null khiến cho ứng dụng dù đã lọc bỏ Script vẫn không nhận ra do ứng dụng nghĩ rằng chuôĩ đã kết thức từ kí tư Null này

• Đối với người dùng, cần cấu hình lại trình duyệt để nhắc nhở người dùng

có cho thưc thi ngôn ngữ kịch bản trên máy của họ hay không? Tùy vào mức độ thực thi ngồn tin mà người dùng sẽ quyết định

Nhận xét:

Kĩ thuật XSS khá phổ biến và dễ dàng áp dụng, tuy nhiên mức độ thiệt hại chỉ dừng lại ở mức độ tấn công trên máy nạn nhân thông qua những liên kết hay form lừa đảo mà hacker đưa đến cho nạn nhân

Vì thế, ngoài việc ứng dụng kiểm tra tính đúng đắn của dữ liệu trước khi

sử dụng thì việc cần nhất là người dùng nên cảnh giác trước khi bước vào một trang Web mới Có thể nói, nhờ vào sự cảnh giác của người dùng thì đã phần nào đạt được sự bảo mật trong kĩ thuật này

Trang 32

Chương 6 CHÈN CÂU TRUY VẤN SQL

Nội dung:

I: Khái niệm SQL Injection

II : Giới thiệu mô hình cơ sở dữ liệu.

III: Các cách tấn công.

IV: Các cách phòng chống

Trang 33

I KHÁI NIỆM SQL INJECTION

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

Khi hacker gửi những dữ liệu (thông qua các form), ứng dụng Web sẽthực hiện và trả về cho trình duyệt kết quả câu truy vấn hay những thông báo lỗi

có liên quan đến cơ sở dữ liệu Và nhờ những thông tin này mà hacker biết đượcnội dung cơ sở dữ liệu và từ đó có thể điều khiển toàn bộ hệ thống ứng dụng

II GIỚI THIỆU MÔ HÌNH CƠ SỞ DỮ LIỆU

Để trình bày tốt hơn nội dung kĩ thuật này, luận văn sử dụng bảng User để minhhọa kĩ thuật tấn công

Bảng User:

STT Tên

Trường

Cài đặt vật lý

Kiểu trường

Kích thước

Trang 34

III CÁC CÁCH TẤN CÔNG

III.1 Kĩ thuật tấn công SQL Injection

SQL Injection là phương thức khai thác dựa vào quá trình trao đổi dữ liệugiữa người dùng và Web Application Việc ứng dụng không kiểm tra các giá trị đầu vào đẫn đến attacker có thể cho thực thi các SQL query không mong muốn can thiệp vào database làm thay đổi, thêm, xem hay xóa các dữ liệu Hacker thường khai thác bằng các gửi các giá trị đầu vào để server sinh các thông tin lỗi

để từ đó tùy biến theo câu truy vấn gốc của người thiết kế

Ví dụ 6.III.1-1: giả sử ứng dụng web có đoạn mã sau:

SQLQuery= “SELECT tkUsername FROM User WHERE tkUsername= ‘” & strUsername & “’ AND Password= ‘” & tkPassword & “’”

flag= GetQueryResult (SQLQuery)

Câu lệnh SQL lúc này như sau:

SELECT tkUsername FROM User WHERE tkUsername= ‘’ OR ‘’=’‘

Trang 35

Password= ‘’ OR ‘’=’’

Câu lệnh so sánh trên luôn luôn đúng (vì ‘’ luôn bằng ‘’) Do đó câu điều kiệntrong mệnh đề WHERE luôn đúng Giá trị tên người sử dụng của dòng đầu tiêntrong bảng sẽ được chọn Kết hợp với kí tự đặc biệt của SQL :

• kí tự “ ; ” : đánh dấu kết thúc 1 câu truy vấn

• kí tự “ ” : ẩn chuỗi kí tự phía sau nó trên cùng 1 dòng

I.THAO TÁC TRÊN URL

I.1 KHÁI NIỆM

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

Ví dụ 4.I.1-1: Có một trang web ứng dụng cho phép thành viên đã được thay đổimật khẩu

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

Với:

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

+ newpass là mật khẩu mới cho username

Tuy nhiên, bằng cách thay đổi tham số như sau:

http://www.nganhang.com/example?user=admin&newpass=111111

Hacker đã có thể thay đổi mật khẩu của admin bằng một mật khẩu mới bất kì,

Trang 36

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

II THAO TÁC TRÊN BIẾN ẨN FORM

II.1 KHÁI NIỆM

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

Ví dụ 4.II.1-1: Form gốc có nội dung như sau:

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

<input type="hidden" name="giaca" value="99.99">

</form>

Trang 37

Nếu không có sự thay đổi nào thì yêu cầu đến trình chủ có nội dung :

POST /cuahang.pl HTTP/1.0

giaca=99.99

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

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

• Ghép tên và giá trị của biến ẩn thành một chuỗi đơn Sử dụng thuật toán mãhoá MD5 hoặc một kiểu hash một chiều khác để tổng hợp chuỗi đó và lưu nóvào một hidden field gọi là “Chuỗi mẫu”

Trang 38

cùng một khoá mà ta định trước Sau đó đem so sánh với “Chuỗi mẫu”, nếuchúng không khớp nhau thì chứng tỏ giá trị trong biểu mẫu đã bị thay đổi.

• Dùng một sessionID để tham chiếu đến thông tin được lưu trữ trên cơ sở dữliệu

III THAO TÁC TRÊN COOKIE

III.1 KHÁI NIỆM

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

Với những công cụ miễn phí như Winhex thì non-persistent cookie có thể

bị thay đổi nội dung Còn SSL chỉ có thể bảo vệ cookie trong quá trình truyền

Ví dụ 4.III.1-1: về cookie dùng để lưu trữ thông tin cho ứng dụng web thông tin

du lịch:

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

Cookie xác định người dùng này không phải là Admin (ADMIN=no), nhưngnếu hacker thay đổi trường này điều gì sẽ xảy ra? Hacker có thể thay đổi lạithành như sau:

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

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

Trang 39

III.2 MỘT SỐ BIỆN PHÁP KHẮC PHỤC

• Sử dụng đối tượng session lưu trữ thông tin quan trọng trên trình chủ Khi ứngdụng cần kiểm tra thông tin của một người dùng, ứng dụng sẽ dùng sessionIDcủ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ảntrị” được được thiết lập là đúng trong cookie, nhưng giá trị của số thứ tự ngườidùng trong cookie lại không giống như giá trị số thứ tự của “người quản trị”được lưu trữ trên server

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

IV THAO TÁC TRONG HTTP HEADER

URL, biến ẩn form, cookie đều là những thành phần lưu trữ thông tin mà ngườidùng thông thường có thể xem và thay đổi Tuy nhiên, những thành phần đó đềuđược chuyển đi thông qua HTTP Header Vì thế, mặc dù HTTP Header khôngphải là tham số truyền của một ứng dụng nhưng mọi thông tin đều được lưu trữvào nó trước khi chuyển đi nên trong phần này sẽ đề cập đến việc thay đổi mộtHTTP Header

IV.1 KHÁI NIỆM

Thông thường chỉ có trình duyệt và trình chủ là trao đổi HTTP Header( xem chi tiết trong phần thứ nhất, chương 2, mục II), còn hầu hết các ứng dụngweb thì không Tuy nhiên, hacker có thể tự viết một chương trình để điều khiểnHTTP header (như xem nội dung, tạo mới) hay sử dụng các proxy miễn phí cho

Trang 40

nó giống như được gửi từ trang web hợp lệ.

Referer: www.redhat.com/login.asp

IV.2 MỘT SỐ BIỆN PHÁP KHẮC PHỤC

Đơn giản là không tin tưởng vào HTTP header nếu chưa có các biện pháp an toàn Với các header gửi từ trình chủ, chẳng hạn như cookie thì có thể được mã

Ngày đăng: 05/03/2016, 15:16

HÌNH ẢNH LIÊN QUAN

Hình 1 : Kiến trúc ứng dụng Web và Database - Tấn công và phòng thủ, ứng dụng web database
Hình 1 Kiến trúc ứng dụng Web và Database (Trang 12)
Hình 2 : Mô hình hoạt động của một ứng dụng Web Trong đó: - Tấn công và phòng thủ, ứng dụng web database
Hình 2 Mô hình hoạt động của một ứng dụng Web Trong đó: (Trang 13)
Bảng User: - Tấn công và phòng thủ, ứng dụng web database
ng User: (Trang 33)
Hình 3. Quá trình thực hiện XSS - Tấn công và phòng thủ, ứng dụng web database
Hình 3. Quá trình thực hiện XSS (Trang 44)
Hình 4: Cách viết Action Scipt trong Flash DeviantArt là một trang web nổi tiếng, cho phép thành viên của nó gửi các tập tin flash lên cho mọi thành viên cùng xem - Tấn công và phòng thủ, ứng dụng web database
Hình 4 Cách viết Action Scipt trong Flash DeviantArt là một trang web nổi tiếng, cho phép thành viên của nó gửi các tập tin flash lên cho mọi thành viên cùng xem (Trang 49)
Bảng User: - Tấn công và phòng thủ, ứng dụng web database
ng User: (Trang 52)

TỪ KHÓA LIÊN QUAN

w