Luận văn Tìm hiểu các cơ chế để bảo mật hệ thống thương mại điện tử - Web security

MỤC LỤC

TỔCHỨC LUẬN VĂN. 8

CHƯƠNG 1: TÌM HIỂU ỨNG DỤNG WEB. 9

1.1. Kiến trúc cơbản của ứng dụng web. 9

1.2. Hoạt động của ứng dụng web. 10

1.3. Kết nối với các cơsởdữliệu. 12

CHƯƠNG 2 : TÌM HIỂU QUÁ TRÌNH TẤN CÔNG CỦA HACKER. 14

2.1. Các quy trình :. 14

2.2. Kết luận. 19

CHƯƠNG 3 : TÌM HIỂU TẤN CÔNG CHÈN THAM SỐ. 20

3.1. HTML Form Field Manipulation – thao tác trên biến ẩn form. 21

3.1.1 Khái niệm. 21

3.1.2. Kĩthuật phòng chống. 22

3.2. URL Manipulation – thao tác trên URL :. 23

3.2.1 Khái niệm. 23

3.2.2. Kĩthuật phòng chống. 24

3.3. HTTP Header Manipulation – thao tác trên HTTP header:. 25

3.3.1 Khái niệm :. 25

3.3.2. Kĩthuật phòng chống. 29

3.4. Hidden Manipulation - Thao tác vùng ẩn. 29

3.4.1. Khái niệm. 29

3.4.2. Cách phòng chống. 29

CHƯƠNG 4 : TẤN CÔNG TRÀN BỘ ĐỆM BUFFER OVERFLOW ATTACKS31

4.1. Buffer Overflow Attacks. 31

4.2. Cách phòng chống. 32

CHƯƠNG 5 : CHÈN MÃ THỰC THI TRÊN TRÌNH DUYỆT

CROSS SITE SCRIPTING. 33

5.1. Khái niệm XSS. 33

5.2. Phương thức hoạt động XSS. 33

5.3. Truy tìm lổhổng XSS của ứng dụng web. 36

5.4. Các bước thực hiện tấn công XSS :. 37

5.5. Cách phòng chống. 38

CHƯƠNG 6 : TẤN CÔNG PHIÊN LÀM VIÊC. 40

6.1. Sựra đời và khái niệm. 40

6.1.1. Sựra đời của session. 40

6.1.2. Khái niệm :. 40

6.2. Cơchếtấn công phiên làm việc. 41

6.2.1. Ấn định phiên làm việc( session fixation). 41

6.2.2. Đánh cắp phiên làm việc( session hijacking). 43

6.3. Cách phòng chống :. 46

CHƯƠNG 7: CHÈN CÂU TRUY VẤN - SQL INJECTION. 48

7.1. Khái niệm SQL injection. 48

7.2 Các cách tấn công. 48

7.2.1. Dạng tấn công vượt qua kiểm tra đăng nhập. 48

7.2.2. Tấn công dưa vào câu lệnh SELECT. 52

7.2.3. Tấn công dựa vào câu lệnh kết hợp UNION. 53

7.2.4. Dạng tấn công sửdụng câu lệnh INSERT. 54

7.2.5. Dạng tấn công sửdụng stored-procedures. 55

7.3. Cách phòng tránh. 56

7.3.1. Kiểm soát chặt chẽdữliệu nhập vào. 56

7.3.2. Thiết lập cấu hình an toàn cho hệquản trịcơsởdữliệu. 58

CHƯƠNG 8 : TẤN CÔNG TỪCHỐI DỊCH VỤ- DENY of SERVICES. 59

8.1. Khái niệm vềTcp bắt tay ba chiều:. 59

8.2. Tấn công kiểu SYN flood. 60

8.3. Kiểu tấn công Land Attack. 62

8.4. Kiểu tấn công UDP flood. 62

8.5. Flood Attack. 62

8.6. Tấn công kiểu DDoS (Distributed Denial of Service). 63

8.7. Tấn công DRDoS (Distributed Reflection Denial of Service) – Tấn công từ

chối dịch vụphản xạnhiều vùng. 65

8.8. Tấn công các nguồn tài nguyên khác. 67

8.9. Các cách phòng chống. 68

CHƯƠNG 9 : NHỮNG KẾT LUẬN TRONG QUÁ TRÌNH PHÒNG CHỐNG. 70

9.1. Nhiệm vụnhà quản trịmạng. 70

9.2 .Nhiệm vụngười thiết kế ứng dụng web. 71

9.3. Nhiệm vụngười sửdụng ứng dụng web. 72

CHƯƠNG 10: GIỚI THIỆU CÁC GIẢI PHÁP BẢO MẬT HỆTHỐNG MẠNG.73

10.1. Firewall (Bức tường lửa). 73

10.1.1. Giới thiệu vềfirewall. 73

10.1.2. Phân loại Firewall. 73

10.1.3. Sản phầm của Firewall. 74

10.1.4.Chức năng chính của Firewall. 76

10.1.5 Các kỹthuật dùng trong Firewall. 77

10.2 Intrusion detection system (Hệthống phát hiện xâm nhập). 83

10.2.1 Khái niệm:. 83

10.2.2. Mô hình hoạt động. 84

10.2.2.1 Chi tiết vềIDS. 85

10.2.2.2 Đánh giá vềmức độan toàn của hệthống:. 86

10.2.2.3 Khảnăng phát triển trong tương lai:. 86

10.3. Intrusion Prevension System ( Hệthống ngăn chặn xâm nhập). 87

10.3.1 Khái niệm:. 87

10.3.1.1 Chức năng:. 87

10.3.1.2. Mô hình lý luận:. 88

10.3.2 Mô hình hoạt động:. 88

10.3.3. Các thành phần của IPS:. 89

10.3.3.1. Phân tích sựhoạt động liên thành phần:. 89

10.3.3.2. Đánh giá vềmức độan toàn của hệthống:. 90

10.3.3.3 Khảnăng phát triển trong tương lai:. 90

CHƯƠNG 11: DEMO THỰC TẾCÀI ĐẶT VÀ CẤU HÌNH TƯỜNG LỬA

“IPCOP”. 91

11.1. Giới thiệu. 91

11.2.Triển khai IPCOP firewall/ IDS. 94

11.3. Quản trịIPCOP firewall/IDS. 103

KẾT LUẬN. 113

TÀI LIỆU THAM KHẢO. 114

pdf114 trang | Chia sẻ: netpro | Lượt xem: 2538 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Luận văn Tìm hiểu các cơ chế để bảo mật hệ thống thương mại điện tử - Web security, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
g hoặc mã hóa(endcoding) và lọc các giá trị xuất cho người dùng. *Lọc dử liệu Luôn luôn lọc các dữ liệu nhập từ phía người dùng bằng cách lọc các kí tự meta (kí tự đặc biệt) kí tự NULL, các thẻ được định nghĩa trong đặc tả của HTML. Mỗi trường nhập liệu bao gồm cả tham số liên kết sẽ được kiểm tra để phát hiện các thẻ script. * Mã hóa dữ liệu Lỗi XSS có thể tránh được khi máy chủ Web đảm bảo những trang phát sinh được mã hóa (encoding) thích hợp để ngăn chạy chạy các script không mong muốn. Mã hóa phía máy chủ là một tiến trình mà tất cả nội dung phát sinh động sẽ đi qua một hàm mã hóa nơi mà các thẻ script sẽ được thay thể bởi mã của nó. Nói chung, việc mã hóa(encoding) là phương pháp tối ưu vì nó không yêu cầu ta phải đưa ra quyết định những kí tự nào là hợp lệ hoặc không hợp lệ.Tuy nhiên việc mã hóa tất cả dữ liệu không đáng tin cậy có thể tốn tài nguyên và ảnh hưởng đến khả năng thực thi của một số máy chủ Đối với người dùng, cần cấu hình lại trình duyệt để nhắc nhở người dùng có cho thực thi ngôn ngữ kịch bản trên máy của họ hay không. Tùy vào mức độ tin cậy mà người dùng sẽ quyết định Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 39  Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 40  CHƯƠNG 6 : TẤN CÔNG PHIÊN LÀM VIÊC 6.1. Sự ra đời và khái niệm 6.1.1. Sự ra đời của session Khi ta vào 1 website nào đó, khi đã đăng nhập thành công nhưng mổi lần trả lời câu hỏi nào đó hoặc theo một liên kết khác cùng một trang web, ta phải đăng nhập lại, điều này thật bất tiện và session ID ra đời để khắc phục sự bất tiện đó. Với 1 session ID tạo riêng ra cho 1 user khi kết nối thành công tới một website nào đó, webserver dựa vào session ID để nhận ra user và chấp nhận cho user này thực hiện các hành động mà user được quyền và không phải xác nhận qua lần này đến lần khác. Session ID được xem như một mật khẩu tĩnh tạm thời cho những lần yêu cầu tiếp theo. Điều này đă khiến cho Session ID là mục tiêu lớn cho những hacker. Trong nhiều trường hợp, hacker giành được session ID hợp lệ của người dùng để từ đó đột nhập vào phiên làm việc của họ. 6.1.2. Khái niệm : Tấn công phiên làm việc là sử dụng session ID của một người dùng nào đó và tạo ra được kết nối hợp lệ bằng một phương thức không hợp lệ. XSS cũng là một cách tấn công có thể chiếm được session ID lưu trữ trong cookie Ví dụ : - Một admin của một website đăng nhập vào hệ thống quản lí website - Một cookie được tạo ra kèm theo Session ID của user Admin ngay lúc đó. - Vì một lí do nào đó, admin này không dùng computer nữa, nhưng không logout khỏi trình điều khiển, nghĩa là cookies và Session ID này vẫn còn hiệu lực - Bằng cách nào đó, hacker đoán được session ID này, nghiễm nhiên hacker có quyền truy cập vào hệ thống quản lí của website với quyền hạn của Admin đó Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 41  6.2. Cơ chế tấn công phiên làm việc Có hai kiểu tấn công session phổ biến nhất đó là session cố định(session fixation) và cướp session ( session hijacking) 6.2.1. Ấn định phiên làm việc( session fixation) Trong kiểu tấn công này, hacker ấn định sẵn session ID cho nạn nhân trước khi họ đăng nhập vào hệ thống. Sau đó, hacker sẽ sử dụng session ID này để buớc vào phiên làm việc của nạn nhân đó. Có ít nhất là 3 cách để mạo danh phiên làm việc hợp lệ được tạo ra bởi hacker : - Dự đoán phiên làm việc (Prediction) - Chiếm đoạt phiên làm việc (Capture ) - Ấn định phiên làm việc (Fixation) Dự đoán phiên làm việc(Prediction) chỉ là một dự đoán định danh phiên làm việc hợp lệ, sự dự đoán từ một phạm vi rộng đến một phạm vi hẹp phụ thuộc vào khả năng của hacker. Capturing một định danh phiên làm việc thì phổ biến hơn và có nhiều cách để tiếp cận kỷ thuật tấn công này. Khi cookie được sử dụng để lưu trữ định danh phiên làm việc. Lổ hổng của trình duyệt có thể được khai thác để lấy được định danh session hợp lệ. Khi một biến URL được sử dụng ,session ID sẽ dể bị lộ hơn và có nhiều khả năng bị đánh cắp. Ấn định phiên làm việc (fixation) là phương pháp lừa nạn nhân sử dụng một định Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 42  danh được tạo ra sẵn bởi hacker. Nếu thành công thì đây là phương pháp đơn giản nhất để có một phiên làm việc hợp lệ đang tồn tại. Trong trương hợp đơn giản, tấn công phiên làm việc có thể được sử dụng một liên kết sau : Click here Hoặc : <?php header('Location: ?> Đây là bước đầu tiên của của một tấn công cơ bản được tạo thành một chu trình khép kín thoe minh họa trong hình dưới đây. Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Hình 6-1 : tấn công ấn định phiên làm việc tiêu biểu Nếu thành công, hacker có thể vượt qua hành động chiếm đoạt (capturing) hay dự đoán (predicting) một session ID hợp lệ. Và về sau có thể xảy ra các thực hiến bổ sung và các hình thức tấn công nguy hiểm hơn. . Đánh cắp phiên làm việc( session hijacking) 6.2.2 Tấn công session hijacking bao gồm việc khai thác các máy điều khiển web session. Nó thông thường được quản lý bới mã thông báo session. Bởi vì truyền thông HTTP sử dụng nhiều kết nối TCP khác nhau. Một máy chủ web cần một phương pháp để đoạn nhận các kết nối của người sử dụng. Phương pháp Trang 43  Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 44  hữu ích nhất là dựa vào mã thông báo mà web server gởi cho trình duyệt sau khi chứng thực máy khách thành công. Một mã thông báo session thường được bao gồm các chuổi biến và được sử dụng trong các phương pháp khác nhau, như trong URL , header của http là cookie Tấn công session hijacking chiếm được session ID bằng cách đánh cắp hoặc dự đoán phiên làm việc hợp lệ để được phép truy cập vào web server. Session Sniffing: Kể tấn công sử dụng các cung cụ sniffer để đánh cắp một phiên làm việc hợp lệ gọi là session ID sau đó sử dụng ID đó để vượt qua sự chứng thực và truy cập vào web server. Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Hình : session sniffing Tấn công session hijacking dựa vào lổi XSS : Hacker có thể tạo ra mã thông báo session bằng cách sử dụng các chương trình hay các mã độc chạy ở phía client-side. Hacker gởi nạn nhân một liên kết, và khi nạn nhân click vào liên kết đó,đoạn mã kịch bản sẽ được thực thi và sẽ thực hiện các yêu cầu của người tạo ra nó . Ví dụ dưới đây sử dụng tấn công XSS để đánh cắp cookie của session hiên tại, đoạn mã Javascrip là alert(document.cookie); Trang 45  Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Hình : Đánh cắp session dựa vào XSS Cách phòng chống : 6.3. Trang 46  - Kết hợp Session ID với địa chỉ của trình duyệt để giới hạn phạm vi ứng dụng. - Kết hợp Session ID với thông tin chứng thực được mă hoá SSL của người dùng. Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 47  - Xóa bỏ session khi người dùng thoát khỏi hệ thống hay hết hiệu lực, có thể thực hiện trên trình chủ hoặc trình duyệt (cookie). - Người sử dụng phải dùng chế độ thoát khỏi hệ thống để xóa bỏ session hiện thời và có thể những session ID còn lưu lại trên hệ thống khi họ quên thoát ra ngoài những lần trước - Thiết lập thời gian hết hiệu lực cho session, tránh trường hợp hacker có thể duy trì session và sử dụng nó lâu dài. - Vì phương pháp này khá tương đồng với tấn công XSS nên cách phòng chống để đạt hiệu quả cao nhất vẩn là sự kết hợp giữa người dùng và trình chủ ứng dụng web. Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 48  CHƯƠNG 7: CHÈN CÂU TRUY VẤN - SQL INJECTION 7.1. Khái niệm SQL injection SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập 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 để "chèn vào" (inject) và thi hành các câu lệnh SQL (không được người phát triển ứng dụng lường trước) và truy xuất dử liệu một cách bất hợp pháp. Đây không chỉ là khuyết điểm của riêng SQL Server mà nó còn là vấn đề chung cho toàn bộ các cơ sở dữ liệu khác như Oracle, MS Access hay IBM DB2. Khi hacker chèn gửi những dữ liệu (thông qua các form), ứng dụng Web sẽ thực hiện và trả về cho trình duyệt kết quả câu truy vấn hay những thông báo lỗi có liên quan đến cơ sở dữ liệu. Và nhờ những thông tin này mà hacker biết được nội dung cơ sở dữ liệu và từ đó có thể điều khiển toàn bộ hệ thống ứng dụng Hậu quả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy. 7.2 Các cách tấn công 7.2.1. Dạng tấn công vượt qua kiểm tra đăng nhập Với dạng tấn công này, hacker có thể dễ dàng 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 cơ sở dữ liệu của ứng dụng web. Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 49  Xét mộ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 thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng nhập thông tin vào, 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. Ví dụ : giả sử ứng dụng web có đoạn mă sau: <% Dim vUsrName, vPassword, objRS, strSQL vUsrName = Request.Form("fUSRNAME") vPassword = Request.Form("fPASSWORD") strSQL = "SELECT * FROM T_USERS " & _ "WHERE USR_NAME=' " & vUsrName & _ " ' and USR_PASSWORD=' " & vPassword & " ' " Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." If (objRS.EOF) Then Response.Write "Invalid login." Else Response.Write " login OK " & objRS("USR_NAME") End If Set objRS = Nothing %> Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 50  Đoạn mă trên dùng để kiểm tra chuỗi nhập Username và Password. Nếu tồn tại trong bảng User thì được phép login, nếu không có sẽ trả về “ Invalid Login” Giá tri nhập vào là: Username: ’ OR ‘’=’ Password: ’ OR ‘’=’ Câu lệnh SQL lúc này như sau: SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and USR_PASSWORD= '' OR ''='' Giá trị logic sau mệnh đề WHERE lúc này là FALSE or TRUE and FALSE or TRUE Câu lệnh so sánh trên luôn luôn đúng vì giá trị luôn bằng TRUE. Do đó câu điều kiện trong mệnh đề WHERE luôn đúng, và sẽ trả về tất cả các bản ghi của T_USERS USERS và đoạn mã tiếp theo 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ệ. Kết hợp các kí tự đặc biệt của SQL : • kí tự “ ; ” : đánh dấu kết thúc 1 câu truy vấn • kí tự “--” : ẩn chuỗi kí tự phía sau nó trên cùng 1 dòng Ví dụ Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 51  Username: ; drop table User-- Password: Câu lệnh SQL lúc này như sau: SELECT * FROM T_USERS WHERE USR_NAME ='' ; drop table User— and USR_PASSWORD= '''' Với câu lệnh trên thì bảng User sẽ bị xóa hoàn toàn. Ví dụ: Một ví dụ khác sử dụng kí tự đặc biệt SQL để thâm nhập vào hệ thống như sau: Username: admin”-- Password: Câu lệnh SQL như sau: SELECT * FROM T_USERS WHERE USR_NAME ='' admin”— '' and USR_PASSWORD= '''' Câu lệnh trên cho phép đăng nhập vào hệ thống với quyền admin mà không đòi hỏi password Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 52  7.2.2. Tấn công dưa vào câu lệnh SELECT Để 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 một ví dụ rất thường gặp trong các website về tin tức. Thông thường, sẽ có một trang nhận ID của tin cần hiển thị rồi sau đó truy vấn nội dung của tin có ID này. Ví dụ : Mã nguồn cho chức năng này thường được viết khá đơn giản theo dạng <% Dim vNewsID, objRS, strSQL vNewsID = Request("ID") strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID 3 Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." Set objRS = Nothing %> Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 53  Trong các 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 đoạn mã này đã để lộ sơ hở cho một lỗi SQL injection. Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho một giá trị khác, và từ đó, khởi đầu cho một cuộc tấn công bất hợp pháp Ví dụ: Hacker sữa giá trị ID thành : “ 0 or 1 = 1” Nghĩa là: or 1=1 Câu truy vấn SQL lúc này sẽ trả về tất cả các article từ bảng dữ liệu vì nó sẽ thực hiện câu lệnh: SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1 7.2.3. Tấn công dựa vào câu lệnh kết hợp UNION Lệnh SELECT được dùng để lấy thông tin từ cơ sở dữ liệu. Thông thường vị trí có thể được chèn thêm vào một mệnh đề SELECT là sau WHERE. Để có thể trả về nhiều dòng thông tin trong bảng, thay đổi điều kiện trong mệnh đề WHERE bằng cách chèn thêm UNION SELECT. Ví dụ StrSQL=“SELECT tkUsername FROM User WHERE tkUsername like ‘% “ & tName & “’UNION SELECT tkPassword from User” Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Câu lệnh trên sẽ trả về kết quả là sự kết hợp giữa các trường tkUsername với tkPassword trong bảng User. Khi sử dụng UNION, số cột trong hai câu SELECT phải bằng nhau. Nghĩa là số lượng cột trong câu lệnh SELECT bên trái và câu lệnh SELECT bên phải UNION phải bằng nhau và cùng kiểu. Nhờ vào lỗi cú pháp trả về sau khi chèn thêm câu lệnh UNION mà có thể biết kiểu của mỗi trường. 7.2.4. Dạng tấn công sử dụng câu lệnh INSERT Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia. Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình. SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào. Ví dụ: Một câu lệnh INSERT có thể có cú pháp dạng: INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value Three'). Nếu đoạn mã xây dựng câu lệnh SQL có dạng : <% strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _ & strValueTwo & " ', ' " & strValueThree & " ') " Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." … Set objRS = Nothing %> Trang 54  Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 55  Thì chắc chắn sẽ bị lỗi SQL injection, bởi vì nếu ta nhập vào trường thứ nhất ví dụ như: ' + (SELECT TOP 1 FieldName FROM TableName) + '. Lúc này câu truy vấn sẽ là: INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def'). Khi đó, lúc thực hiện lệnh xem thông tin, xem như đã yêu cầu thực hiện thêm một lệnh nữa đó là: SELECT TOP 1 FieldName FROM TableName 7.2.5. Dạng tấn công sử dụng stored-procedures Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống 'sa'. Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ' ; EXEC xp_cmdshell ‘cmd.exe dir C: '. Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe. Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 56  7.3. Cách phòng tránh Như vậy, có thể thấy lỗi SQL injection khai thác những bất cẩn của các lập trình viên phát triển ứng dụng web khi xử lí các dữ liệu nhập vào để xây dựng câu lệnh SQL. Tác hại từ lỗi SQL injection tùy thuộc vào môi trường và cách cấu hình hệ thống. Nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu cơ sở dữ liệu - owner) khi thao tác dữ liệu, nó có thể xóa toàn bộ các bảng dữ liệu, tạo các bảng dữ liệu mới, … Nếu ứng dụng sử dụng quyền sa (quyền quản trị hệ thống), nó có thể điều khiển toàn bộ hệ quản trị cơ sở dữ liệu và với quyền hạn rộng lớn như vậy nó có thể tạo ra các tài khoản người dùng bất hợp pháp để điều khiển hệ thống. Để phòng tránh, ta có thể thực hiện ở hai mức: 7.3.1. Kiểm soát chặt chẽ dữ liệu nhập vào Để phòng tránh các nguy cơ có thể xảy ra bảo vệ các câu lệnh SQL là bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng Request (Request, Request.QueryString, Request.Form, Request.Cookies, and Request.Server Variables). Ví dụ: Có thể giới hạn chiều dài của chuỗi nhập liệu, hoặc xây dựng hàm EscapeQuotes để thay thế các dấu nháy đơn bằng 2 dấu nháy đơn như: Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 57  <% Function EscapeQuotes(sInput) sInput = replace(sInput, " ' ", " ' ' ") EscapeQuotes = sInput 5 End Function %> Trong trường hợp dữ liệu nhập vào là số, lỗi xuất phát từ việc thay thế một giá trị được tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL bất hợp pháp. Để tránh điều này, ta phải kiểm tra dữ liệu có đúng kiểu hay không bằng hàm IsNumeric(). Ngoài ra có thể xây dựng hàm loại bỏ một số kí tự và từ khóa nguy hiểm như: ;, --, select, insert, xp_, … ra khỏi chuỗi dữ liệu nhập từ phía người dùng để hạn chế các tấn công dạng này: <% Function KillChars(sInput) dim badChars dim newChars badChars = array("select", "drop", ";", "--", "insert", "delete", "xp_") newChars = strInput for i = 0 to uBound(badChars) newChars = replace(newChars, badChars(i), "") next KillChars = newChars End Function %> Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 58  7.3.2. Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài khoản người dùng mà ứng dụng web đang sử dụng. Các ứng dụng thông thường nên tránh dùng đến các quyền như dbo hay sa. Quyền càng bị hạn chế, thiệt hại càng ít. Để tránh các nguy cơ từ SQL Injection attack, loại bỏ bất kì thông tin kĩ thuật nào chứa trong thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi. Các thông báo lỗi thông thường tiết lộ các chi tiết kĩ thuật có thể cho phép kẻ tấn công biết được điểm yếu của hệ thống. Ngoài ra nên dùng các thuật toán mã hóa để bảo vệ dử liệu Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 CHƯƠNG 8 : TẤN CÔNG TỪ CHỐI DỊCH VỤ - DENY of SERVICES Tấn công từ chối dịch vụ DoS (Denial of Service) là phương pháp hướng đến 1 mục tiêu nhằm ngăn cản những người dùng hợp pháp khả năng truy cập và sử dụng vào một dịch vụ, tài nguyên nào đó của hệ thống mục tiêu . Ví dụ như làm tràn ngập mạng, mất kết nối với dịch vụ… mà mục đích cuối cùng là máy chủ (Server) không thể đáp ứng được các yêu cầu sử dụng dịch vụ từ các máy trạm (Client). DoS có thể làm ngưng hoạt động của một máy tính, một mạng nội bộ, thậm chí cả một hệ thống mạng rất lớn. Đây là phương pháp tấn công dể thực hiện đối với hacker nhưng lại rất khó phòng tránh đối với những nhà quản trị mạng cho nên đây là một loại hình tấn công khá nguy hiểm. 8.1. Khái niệm về Tcp bắt tay ba chiều: Trang 59  Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Hình 8-1: Cơ chế thiết lập kết nối trước khi truyền số liệu Buớc 1: Máy con gửi gói tin SYN yêu cầu kết nối Bước 2: Nếu máy chủ nhận được yêu cầu kết nối. Server bắt buộc phải gửi thông báo lại bởi Vì TCP là chuẩn tin cậy nên nếu máy con không nhận được thông báo thì sẽ nghĩ rằng packet đă bị lạc và gửi lại một packet mới . Khi nhận được gói tin này, server sẽ gửi lại gói tin SYN/ACK để thông báo cho client biết là nó đa nhận được yêu cầu kết nối và chuẩn bị tài nguyên cho việc yêu cầu này. Server sẽ giành một phần tài nguyên hệ thống như bộ nhớ đệm (cache) để nhận và truyền dữ liệu. Ngoài ra, các thông tin khác của client như địa chỉ IP và cổng (port) cũng được ghi nhận. Bước 3: Máy con gửi hồi đáp bằng gói tin ACK ,báo cho máy chủ biết rằng Máy con đă nhận được SYN/ACK packet và lúc này kết nối đă được thiết lập. 8.2. Tấn công kiểu SYN flood Lợi dụng điểm yếu của hoạt động của kết nối TCP/IP bắt tay ba bước , hacker bắt đầu quá trình thiết lập một kết nối TCP/IP tới mục tiêu muốn tấn công mà không gửi trả gói tin ACK, khiến cho mục tiêu luôn rơi vào trạng thái chờ (đợi gói tin ACK Trang 60  Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Hình 8-2: Tấn công kiểu SYN flood Nếu như kẻ tấn công tiếp tục gửi nhiều gói tin SYN đến server thì cuối cùng server không thể tiếp nhận thêm kết nối nào nữa, dù đó là các yêu cầu kết nối hợp lệ vì server đã trở nên quá tải, dẫn đến tình trạng crash. Trang 61  Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 62  Việc không thể phục vụ nữa cũng đồng nghĩa với việc máy chủ không tồn tại. Việc này cũng đồng nghĩa với xảy ra nhiều tổn thất do ngưng trệ hoạt động, đặc biệt là trong các giao dịch thương mại điện tử trực tuyến. Đây không phải là kiểu tấn công bằng đường truyền cao, bởi vì chỉ cần một máy tính nối internet qua ngã dial-up đơn giản cũng có thể tấn công kiểu này 8.3. Kiểu tấn công Land Attack Kiểu tấn công Land Attack cũng tương tự như SYN flood, nhưng hacker sử dụng chính IP của mục tiêu cần tấn công để dùng làm địa chỉ IP nguồn trong gói tin, đẩy mục tiêu vào một vòng lặp vô tận khi cố gắng thiết lập kết nối với chính nó. 8.4. Kiểu tấn công UDP flood Hacker gửi gói tin UDP echo với địa chỉ IP nguồn là cổng loopback của chính mục tiêu cần tấn công hoặc của một máy tính trong cùng mạng. Với mục tiêu sử dụng cổng UDP echo (port 7) để thiết lập việc gửi và nhận các gói tin echo trên 2 máy tính (hoặc giữa mục tiêu với chính nó nếu mục tiêu có cấu hình cổng loopback), khiến cho 2 máy tính này dần dần sử dụng hết băng thông của chúng, và cản trở hoạt động chia sẻ tài nguyên mạng của các máy tính khác trong mạng. 8.5. Flood Attack Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Trang 63  Một kiểu tấn công DoS nữa cũng rất hay được dùng vì tính đơn giản của nó và vì có rất nhiều công cụ sẵn có hỗ trợ đắc lực cho kẻ tấn công là Flood Attack, chủ yếu thông qua các website. Về nguyên tắc, các website đặt trên máy chủ khi chạy sẽ tiêu lượng tài nguyên máy chủ nhất định, nhất là lượng bộ nhớ (RAM) và bộ vi xử lý (CPU). Dựa vào việc tiêu hao đó, những kẻ tấn công đơn giản là dùng các phần mềm như smurf chẳng hạn để liên tục yêu cầu máy chủ phục vụ trang web đó để chiếm dụng tài nguyên. Cách tấn công này tuy không làm máy chủ ngừng cung cấp dịch vụ hoàn toàn nhưng sẽ làm cho tốc độ phục vụ của toàn bộ hệ thống giảm mạnh, người dùng sẽ cảm nhận rõ ràng việc phải chờ lâu hơn để trang web hiện ra trên màn hình. Nếu thực hiện tấn công ồ ạt và có sự phối hợp nhịp nhàng, phương thức tấn công này hoàn toàn có thể làm tê liệt máy chủ trong một thời gian dài. 8.6. Tấn công kiểu DDoS (Distributed Denial of Service) Đây là cách thức tấn công rất nguy hiểm. Hacker xâm nhập vào các hệ thống máy tính, cài đặt các chương trình điều khiển từ xa, và sẽ kích hoạt đồng thời các chương trình này vào cùng một thời điểm để đồng loạt tấn công vào một mục tiêu. Với DDoS, các hacker có thể huy động tới hàng trăm thậm chí hàng ngàn máy tính cùng tham gia tấn công cùng một thời điểm làm băng thông của mục tiêu bị tắc nghẽn không thể sử dụng được nữa Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02DHCT078 Hình 9-3 : tấn công DDoS Xuất hiện vào năm 1999, so với tấn công DoS cổ điển, sức mạnh của DDoS cao hơn Trang 64  gấp nhiều lần. Hầu hết các cuộc tấn công DDoS nhằm vào việc chiếm dụng băng thông (bandwidth) gây nghẽn mạch hệ thống dẫn đến hệ thống ngưng hoạt động. Để thực hiện thì kẻ tấn công tìm cách chiếm dụng và điều khiển nhiều máy tính/mạng máy tính trung gian (đóng vai trò zombie) từ nhiều nơi để đồng loạt gửi ào ạt các gói tin (packet) với số lượng rất lớn nhằm chiếm dụng tài nguyên và làm tràn ngập đường truyền của một mục tiêu xác định nào đó. Đề tài: “Web-security” GVHD: ThS. Huỳnh Quốc Bảo SVTH: Lê Bá Quý – MSSV: 02

Các file đính kèm theo tài liệu này:

  • pdfTìm hiểu các cơ chế để bảo mật hệ thống thương mại điện tử - web security.pdf