1. Trang chủ
  2. » Tất cả

Tìm hiểu về lỗ hổng sql injection

42 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

Nội dung

HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN MƠN HỌC CƠ SỞ AN TỒN THƠNG TIN Đề tài: TÌM HIỂU VỀ LỖ HỔNG SQL INJECTION Giảng viên hướng dẫn: VŨ THỊ VÂN Mục lục LỜI MỞ ĐẦU CHƯƠNG CƠ SỞ LÝ THUYẾT .6 1.1 Giới thiệu .6 1.1.1 Cấu trúc website 1.1.2 Tầm quan trọng SQL hệ thống web .7 1.2 Phương thức yêu cầu HTTP POST 1.3 Tổng quan công SQL Injection .11 1.4 Các nguy từ lỗ hổng SQL Injection 14 1.5 Một số công thực tế 15 CHƯƠNG TẤN CƠNG SQL INJECTION VÀ CÁCH PHỊNG CHỐNG 18 2.1 Các kiểu công SQL Injection[7] 18 2.1.1 Các kỹ thuật công 20 2.1.1.1 Union-based[4] .20 2.1.1.2 Tautology 21 2.1.1.3 In-line Comments 22 2.1.1.4 End-of-Line Comment 23 2.1.1.5 Piggybacked Query .23 2.1.1.6 Error-based 24 2.1.1.7 System Stored Procedure 24 2.1.1.8 Illegal/Logically Incorrect Query 25 2.1.1.9 Time-based 26 2.1.1.10 Boolean-based 26 2.1.1.11 Out-of-band 27 2.2 Phương pháp phòng chống[6] .27 2.2.1 Xác thực liệu đầu vào người dùng nhập .27 2.2.2 Lọc liệu đầu vào cách giới hạn kí tự đặc biệt 28 2.2.3 Thực câu lệnh chuẩn bị tham số hóa 28 2.2.4 Sử dụng Thủ tục lưu trữ (Stored Procedure) sở liệu 29 2.2.5 Liên tục cập nhật vá bảo mật 29 2.2.6 Dùng tường lửa .29 2.2.7 Giảm thiểu mục tiêu công 29 2.2.8 Thiết lập quyền hạn hợp lí khả truy cập nghiêm ngặt .30 2.2.9 Mã hóa 30 2.2.10 Không tiết lộ nhiều cần thiết thông báo lỗi 30 2.2.11 Không sử dụng chung sở liệu tài khoản người dùng .30 2.2.12 Thường xuyên giám sát câu lệnh SQL, tiến hành kiểm thử định kì 31 CHƯƠNG THỰC NGHIỆM TẤN CÔNG SQL INJECTION .31 3.1 Mô tả môi trường thực nghiệm 31 3.2 Thực nghiệm công 32 3.2.1 Mô tả kịch 32 3.2.2 Các bước thực .33 TÀI LIỆU THAM KHẢO 41 LỜI MỞ ĐẦU Lý chọn đề tài Ở nước ta , khoa học kĩ thuật nói chung cơng nghệ thơng tin nói riêng phát triển vũ bão ứng dụng rộng rãi hầu hết lĩnh vực đời sống xã hội Một vấn đề đặt làm để đáp ứng nhu cầu trao đổi thông tin , quảng bá thông tin trực tuyến Từ nhu cầu thực tiễn , dẫn đến đời ứng dụng Web Ngày , ứng dụng Web tở thành phương tiện liên lạc hữu ích cho hàng triệu tổ chức , cá nhân doanh nghiệp, đối tác, khách hàng thay giao dịch thủ công truyền thống Chẳng hạn , ngày ta ngồi nhà mà thực dịch vụ kiểm tra tài khoản ngân hàng , đặt vé máy bay, mua sắm trực tuyến … Chính Website yếu tố giúp doanh nghiệp, tổ chức, cá nhân tăng cường hình ảnh trực tuyến giới Internet, tạo trì nhiều mối quan hệ đem lại lợi nhuận lâu dài với khách hàng tiềm khách hàng tại… Cùng với phát triển ứng dụng Web trở thành mực tiêu ưu thích kẻ cơng Các hình thức tân cơng đa dạng thay đổi nội dung trang web , công từ chối dịch vụ khiến cho việc truy nhập trang web khơng thể thực khó thực hiện, chiếm quyền điều khiển trang web… Mục tiêu hacker khác nhau, cơng xuất phát từ thiện chí, nhằm tìm điểm yếu thông báo cho nhà quản trị hệ thống Nghiêm trọng công để phục vụ cho mục đích xấu tống tiền trang web, lấy cắp liệu nhạy cảm thông tin thẻ tín dụng, mua hàng thơng qua tài khoản người khác Trong hình thức cơng công cách chèn mã lệnh ( injection) phổ biến Tân công website kĩ thuật SQL injection từ lâu mối quan tâm bảo mật hàng đầu nhà phát triển web chủ sở hữu website Giờ , công ngày trở nên khó phát ngăn chặn Số lượng vụ công nhằm vào sở liệu (CSDL) web lên tới số kỉ lục SQL Injection kiểu cơng có mục tiêu cụ thể thường mục tiêu đơn lẻ cho vụ cơng Chính mà vụ công thường không gây ý rộng rãi virus hay sâu máy tính (worm) Âm thầm thiệt hại vụ công lại lớn Nếu máy chủ sở liệu bị tin tặc chiếm quyền kiểm sốt có khối lượng lớn thơng tin cá nhân tài người dùng rơi vào tay chúng Và thành cơng nói nguồn thơng tin mà tin tặc thu cịn nhiều hợn nhiều so với cơng phishing Tin tặc công giả mạo để lựa người sử dụng cung cấp thông tin cá nhân tài Tỉ lệ thành cơng vụ công SQL injection thường cao Trên thực tế phát triển mạnh mẽ giờ, ngày công nghệ thông tin kiểu công hacker ngày tinh vi , phức tạp khó ngăn chặn Xuất phát từ lý trên, chọn đề tài “ Tấn công SQL injection cách phòng chống “ Mục tiêu Mục tiêu đạt sau hoàn thành việc nghiên cứu đề tài:  Giúp hiểu ứng dụng website, mối đe dọa vấn đề an tồn thơng tin làm việc ứng dụng web hàng ngày, hiểu rõ kĩ thuật công bảo mật web  Xác định nguyên nhân , nhận diện xác đối tượng động cơ, cách thức kẻ tân công xâm nhập vào sở liệu Xác định mục tiêu, mối nguy hiêm thường trực an ninh ứng dụng web tổ chức  Hiểu rõ khái niệm SQL injection phương thức hoạt động hacker thông qua lỗ hổng này, biết sử dụng phương pháp để kiểm tra an ninh bảo mật, từ đố đưa phương pháp phòng chống hiệu Phạm vi nghiên cứu Tìm hiểu kỹ thuật công phổ biến SQL injection Cách bảo mật phịng thủ kiểu cơng cách tổng quát Bố cục Chương 1: Cơ sở lý thuyết Chương 2: Tấn công SQL injection cách phịng chống Chương 3: Thực nghiệm cơng SQL ịnjection CHƯƠNG CƠ SỞ LÝ THUYẾT 1.1 Giới thiệu 1.1.1 Cấu trúc website Ngày với phát triển không ngừng khoa học công nghệ,ứng dụng web trở thành thứ khơng thể thiếu, hữu tất thứ sống hàng ngày phần thiếu, từ công việc, mua sắm, giải trí, tin tức… Vậy website ? Website rập hợp trang web (web pages) bao gồm văn , hình ảnh, video, flash v.v… thường nằm tên miền (domain name) tên miền phụ (subdomain) World Wide Web Internet Trang web lưu trữ (web hosting) máy chủ web (web server) truy cập thơng tin qua Internet Để website hoạt động tương tác với người dụng website đăng sau sở liệu nơi đáp ứng cung cấp thông tin cụ thể cần thiết từ phía yêu cầu người dung, yêu cầu thực thi từ phóa máy chủ phụ thuộc tương tác yêu cầu khác người sử dụng Một ứng dung phổ biến ứng dụng web hướng sở liệu ứng dụng thương mại điện tử, nơi mà hàng loạt thông tin lưu trữ sơ sở liệu , chẳng hạn thông tin sản phẩn , chứng khoán, giá , giao dịch… Có lẽ quen thuộc với ứng dụng mua hàng hóa thực phẩm trực tuyến từ công ty bán lẻ trực tuyến internet Một ứng dụng web hướng sở liệu thơng thường có ba tầng: Tầng trình diễn ( trình duyệt web hay chường trình máy tính), tầng logic( ngơn ngữ lập trình C#, PHP, JSP, APPS.NET ) tầng liệu ( sở liệu SQL Server, MySQL, Oracle, ) Các trình duyệt web ( tầng trình diên, chặng hạn Internet Explorer, Safari, Firefox, Chrome,…) gửi yêu cầu đến tầng (tầng logic) mà dịch vụ yêu cầu cách truy vấn cập nhật ngược lại sở liệu Đầu tiên tầng trình diễn: Là cấp ứng dụng , lớp tiếp xúc trực tiếp người sử dụng ứng dụng, thị thơng tin liệu liên quan đến dịch vụ mà ứng dụng cung cấp ví dụ hàng hóa duyệt, hàng hịa mua thơng tin giỏ hàng truyền thơng với tầng khác việc xuất kết cho trình duyệt khách hàng tất tầng khác mạng Tầng logic: Là tầng trung gian tầng trình diên tầng liệu có nhiệm vụ điều khiển chức ứng dụng cách thực xử lý chi tiết Cuối tầng liệu: Là tầng chứa máy chủ sở liệu Ở , thông tin lưu trữ lấy Tầng giữ cho liệu độc lập với máy chủ ứng dụng tầng logic Làm cho liệu tầng cải thiện nhờ khả mở rộng tang suất 1.1.2 Tầm quan trọng SQL hệ thống web SQL công cụ quản lý liệu sử dụng phổ biến nhiều lĩnh vực Nếu bạn khơng có nhiều thời gian để nghiên cứu sâu tin học mà lại có nhiều liệu cần phải phân tích, xử lý, dùng SQL vì SQL đơn giản hiệu Hầu hết tất ngôn ngữ lập trình cấp cao có hỗ trợ SQL Có thể kể MS Visual Basic, MS Access, MS Visual Foxpro, DBase, DB2, Paradox, Oracle Đầu tiên SQL sử dụng ngôn ngữ quản lý sở liệu (CSDL) chạy máy đơn lẻ Do phát triển nhanh chóng nhu cầu xây dựng CSDL lớn theo mơ hình khách/chủ (Client/Server), nhiều phần mềm sử dụng ngôn ngữ SQL đời mà điển hình MS SQL Server, Oracle, Sybase Trong mơ hình khách/chủ, toàn CSDL tập trung lưu trữ máy chủ (Server), thao tác xử lý liệu thực máy chủ lệnh SQL Máy trạm (Client) dùng để cập nhật liệu cho máy chủ lấy thông tin từ máy chủ Trên lĩnh vực phát triển Internet, ngơn ngữ SQL lại đóng vai trị quan trọng Nó sử dụng để nhanh chóng tạo trang Web động (Dynamic Web Page) Trang Web động thường có nội dung lấy từ CSDL SQL sử dụng chất keo kết dính CSDLvà trang Web Khi người dùng yêu cầu, SQL thực việc truy cập thông tin CSDL máy chủ hiển thị kết trang Web Và SQL công cụ để cập nhật thơng tin cho CSDL Sau điểm qua số cơng dụng SQL  Chọn lọc số cột định bảng liệu: Thường ta không sử dụng tất thơng tin bảng lúc Có thể dùng SQL để tách cột cần thiết mà  Lọc ghi theo tiêu chuẩn khác nhau: tách riêng hoá đơn khách hàng đó, hay in danh sách nhân viên vài phòng ban  Sắp xếp ghi theo tiêu chuẩn khác nhau: Mỗi loại báo cáo thường có yêu cầu xếp ghi theo cột khác để tiện cho việc theo dõi Có báo cáo thống kê xếp theo khách hàng, báo cáo khác lại xếp theo mặt hàng bán, tất thông tin nằm bảng Bán hàng Ta thực xếp theo nhiều cột khác SQL Cập nhật, xoá ghi tồn bảng theo điều kiện khác nhau: ví dụ cần xố tồn hố đơn phát hành cách năm  Kết hợp hai hay nhiều bảng theo chiều ngang: Trong CSDL, bảng lưu trữ thông tin đối tượng bảng liên hệ với qua trường khoá Dùng SQL để thực việc kết hợp bảng với thơng qua trường khố ví dụ để có bảng kết theo yêu cầu  Nối hai hay nhiều bảng theo chiều dọc: liệu lớn phân tán nhiều nơi ta phải quản lý nhiều bảng theo mẫu, bảng cho quý, tháng công ty Khi cần tổng hợp liệu năm tổng công ty ta dùng SQL để nối bảng lại với  Tạo bảng mới, thay đổi cấu trúc bảng có: phục vụ cho việc lập trình  Thực phép tính tốn thống kê theo nhóm: tổng, trung bình, max, Đây chức thường xuyên sử dụng để tổng hợp thơng tin trước in báo cáo tính tổng số lượng mặt hàng, số hàng bán cho khách hàng  Kết nối với liệu máy chủ (Server): Khi kho liệu tập trung máy chủ MS SQL Server hay Oracle ta phải dùng lệnh SQL để trực tiếp thâm nhập vào sở liệu  Kết hợp trang Web với CSDL lệnh SQL Có thể phân hai loại câu lệnh SQL, loại tổng hợp liệu sang bảng (bảng tồn nhớ ghi đĩa) loại cập nhật liệu, cấu trúc bảng có Bảng tạo từ câu lệnh SQL sử dụng nơi chương trình có u cầu liệu dạng bảng, đặc biệt dùng cho báo cáo (report), danh sách (list), đối tượng lưới (grid) 1.2 Phương thức yêu cầu HTTP POST POST phương thức HTTP thiết kế để gửi liệu đến máy chủ từ máy khách HTTP Phương thức HTTP POST yêu cầu máy chủ web chấp nhận liệu bao gồm nội dung thông báo POST Phương thức HTTP POST thường sử dụng gửi biểu mẫu đăng nhập liên hệ tải tệp hình ảnh lên máy chủ HTPP giao thức truyền siêu văn (HTTP) thiết kế để hỗ trợ giao tiếp máy khách ( trình duyệt ứng dụng) máy chủ web HTTP thiết kế để gửi thông tin định dạng mà máy khách máy chủ hiểu HTTP hoạt động giao thức phản hồi yêu cầu không trạng thái máy khách máy chủ web HTTP dựa giao thức phản hồi yêu cầu không trạng thái máy khách máy chủ web HTTP dựa số phương thức yêu cầu, “ động từ “ , bao gồm phương thức yêu cầu HTTP POST VÀ HTTP GET số phương thức khác Các trình duyệt web thường sử dụng HTTP GET VÀ HTTP POST, ứng dụng di động máy tính để bàn RESTful sử dụng nhiều ứng dụng khác Gửi liệu đến máy chủ qua HTTP thực số phương thức yêu cầu HTTP Phương thức yêu cầu HTTP POST số Phương thức HTTP POST yêu cầu máy chủ web chấp nhập liệu có nội dung thư Phương thức yêu cầu HTTP POST sử dụng để làm gì? Phương thức HTTP POST sử dụng để tạo thêm tài nguyên máy chủ Thông thường , yêu cầu POST thêm tài nguyên vào máy chủ, yêu cầu PUT thay tài nguyên có máy chủ Ví dụ: phương thức yêu cầu HTTP POST trình duyệt sử dụng gửi liệu biểu mẫu HTML đến máy chủ gửi liệu yêu cầu jQuery/ AJAX Không giống yêu cầu GET HEAD, yêu cầu HTTP PĨT thay đổi trạng thái máy chủ Ngun lý hoạt động Khi gõ lên trình duyệt địa lập tức, trình duyệt dựa vào tên domain (VD: Google.com) để gửi yêu cầu truy cập đến địa IP mà domain trỏ tới Phía server phân tích yêu cầu gửi luồng xử lí đến vị trí lưu trữ mã nguồn Mã nguồn tiếp nhận yêu cầu phân tích yêu cầu trả kết cho client Gửi biểu mẫu HTML phương thức HTTP POST Các biểu mẫu HTML sử dụng để thu thập thông tin đầu vào người dùng gửi đến máy chủ web Có hai tùy chọn để gửi biểu mẫu web đến máy chủ : sử dụng Phương thức HTTP POST HTTP GET Trong ví dụ sau đây, thuộc tính biểu mẫu “ method = POST “ yêu cầu trình duyệt gửi biểu mẫu web phường thức HTTP POST thuộc tính “ action = /login” định URL đích Ví dụ : Có from đăng nhập Username: abc Password: 123 Khi ta ấn vào Submit, ta gửi HTTP POST request để yêu câu đăng nhập sử dụng thơng tin Ta hiểu phần message body HTTP request ta có câu truy vấn client đến server để xử lí việc đăng nhập: select * from Users where (username = 'abc' and password = '123'); 10 ... website Việt Nam bị cơng số lỗi SQL injection. Vậy SQL Injection ? SQL injection kĩ thuật cho phép kẻ công lợi dụng lỗ hổng việc kiểm tra liệu nhập ứng dụng web thông báo lỗi 11 hệ quan trị sở liệu... chạy tiềm ẩn lỗ hổng bảo mật lớn Một số lỗ hổng SQL injection Tại Việt Nam , qua thời kì quản trị website lo việc quét virus, cập nhật vá lỗi từ phần mềm hệ thống, việc chăm sóc lỗi ứng dụng... cơng.Đơi cần nhiều kỹ kiên nhẫn để khai thác lỗ hổng khả Cách thức hoạt động lỗ hổng SQL Injection: Bước 1: Tìm kiếm trang web cho phép submit liệu trình tìm hiêm mạng Bước 2: Thử gửi field tên đăng

Ngày đăng: 26/02/2023, 16:42

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

TÀI LIỆU LIÊN QUAN

w