TTTN đàm quang vinh k16d

39 157 2
TTTN đàm quang vinh k16d

Đ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

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THƠNG ĐÀM QUANG VINH NGHIÊN CỨU TÌM HIỂU TẤN CÔNG SQL INJECTION ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN THÁI NGUYÊN, NĂM 2019 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Chuyên ngành Công nghệ thông tin Đề tài: NGHIÊN CỨU TÌM HIỂU TẤN CƠNG SQL INJECTION Sinh viên thực hiện: Đàm Quang Vinh Lớp ĐH-K16D, hệ qui Giáo viên hướng dẫn: ThS VŨ VIỆT DŨNG Thái Nguyên, năm 2019 MỤC LỤC LỜI CẢM ƠN Em xin gửi lời cảm ơn sâu sắc đến thầy cô trường Đại học Công Nghệ Thông Tin Truyền Thông Thái Nguyên hết lòng truyền đạt cho em kiến thức bổ ích suốt thời gian qua, tạo điều kiện cho em phát huy ý tưởng Đặc biệt, em xin gửi lời cảm ơn chân thành đến thầy Ths.Vũ Việt Dũng tận tình hướng dẫn, truyền đạt kiến thức bảo cho em suốt thơi gian thực đề tài Mặc dù em cố gắng, xong chắn báo cáo nhiều thiếu sót, em mong nhận hướng dẫn thêm quý Thầy Cô, Anh Chị Bạn Thái Nguyên, ngày tháng năm 2019 DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU DANH MỤC NHỮNG TỪ VIẾT TẮT STT Chữ viết tắt Nội dung viết tắt Structured Query Language ( Ngơn ngữ truy vấn có cấu trúc ) 01 SQL 02 Structured Query Language injection SQLi 03 Whitehat security Whitehatsec 04 Positive technologies security Ptsecurity 05 Cơ sở liệu Database Database Management System ( Hệ quản trị Cơ sở liệu ) 06 DBMS Web Application Friewall ( Tường lửa cho ứng dụng Web ) 07 WAF LỜI MỞ ĐẦU Lý chọn đề tài Ngày với phát triển vượt bậc công nghệ web đem lại nhiều thuận lợi cho người sử dụng nhà phát triển Như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 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 cậ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ờ đây, 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 Theo báo cáo an ninh mạng gần đây, Whitehatsec tổ chức có uy tín việc nghiên cứu hỗ trợ vấn đề an ninh mạng, Ptsecurity tổ chức chuyên nghiên cứu đưa giải pháp an ninh hay trang Verizon Business, Sans Institute cho thấy mức độ phát triển nhanh chóng, tính nghiêm trọng lỗ hổng bảo mật quan tâm chưa mức tổ chức tới vấn đề SQL Injection vấn đề an ninh ứng dụng web nhấn mạnh báo cáo 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 Â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 nhiều 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, em chọn đề tài “ Nghiên cứu tìm hiểu công SQL Injection ” làm đề tài nghiên cứu Mục đích nghiên cứu - Giúp hiểu ứng dụng web, 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 - Hiểu rõ khái niệm SQL Injection, phương thức hoạt động hacker thông qua lỗ hổng để xâm nhập vào sở liệu mối nguy hiểm thường trực an ninh ứng dụng web tổ chức - Hiểu rõ lỗi bảo mật SQL Injection ứng dụng web, nguyên nhân dẫn đến lỗi, dạng công, cách thức phương pháp cơng từ rút biện pháp để phòng chống Ý nghĩa khoa học thực tiễn đề tài Theo báo cáo an ninh mạng gần đây, Whitehatsec, Ptsecurity cho thấy mức độ phổ biến kiểu công SQL Injection cao đứng đầu danh dách lỗi bảo mật nghiêm trọng nhất, đơn giản để thực hiện, lỗi bảo mật phổ biến nhất, xác suất gặp lỗi bảo mật cao tác động SQL Injection tới hệ thống nguy hiểm Đây thật lỗ hổng bảo mật đáng quan tâm đến Dựa vào lỗi SQL Injection, hacker làm việc sau: - Có thể lấy nhiều thông tin quan trọng sở liệu hệ thống web account password admin web site, hay thông tin quan trọng thẻ tín dụng khách hàng ngân hàng đó… - Có thể thêm, xóa, sửa sở liệu đối tượng bị công theo ý muốn - Có thể tạo backdoor cho lần cơng sau - Có thể đánh sập hồn tồn hệ thống - Có thể dùng phương pháp công DoS Các công SQL Injection thường nhắm đến sở liệu mang tính thương mại, website thành phố chí website phủ, hầu hết website bị công thuộc loại đáng tin cậy, hợp pháp an toàn tuyệt đối mắt người dùng Xuất phát từ thực tế việc nghiên cứu đề tài hoàn toàn cấp thiết Đối tượng 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 quan Phương pháp nghiên cứu - Tiếp cận ứng dụng sử dụng sở liệu, ngơn ngữ truy vấn có cấu trúc SQL lỗ hổng bảo mật SQL Injection - Tìm hiểu dạng lỗi SQL Injection - Tìm hiểu dạng cơng SQL Injection phổ biến - Tìm hiểu cách thức phương pháp công - Từ kiến thức tìm hiểu đưa giải pháp phòng chống cơng SQL Injection có hiệu Cấu trúc đề tài Đề tài gồm chương: - Chương 1: Tổng quan SQL Injection - Chương 2: Các dạng lỗi SQL Injection thường gặp - Chương 3: Các dạng công SQL Injection phổ biến - Chương 4: Cách thức phương pháp công - Chương 5: Cách phòng chống cơng SQL Injection 10 3.2 Dạng công Sử dụng câu lệnh SELECT Dạng công phức tạp Để thực kiểu cơng này, kẻ cơng phải có khả hiểu lợi dụng sơ hở thơng báo lỗi từ hệ thống để dò tìm điểm yếu khởi đầu cho việc công Xét ví dụ thường gặp website tin tức Thơng thường, có trang nhận ID tin cần hiển thị sau truy vấn nội dung tin có ID Ví dụ: https://site.com/shownews.php?ID=1024 Mã nguồn cho chức thường viết đơn giản theo dạng: private function Get_News(){ $NewsID = $_GET['ID']; $sql = "SELECT * FROM `BQ_NEWS` WHERE `NEWSID` = $NewsID"; $result = mysqli_query($this->conn, $sql); } } Trong tình thông thường, đoạn mã hiển thị nội dung tin có ID trùng với ID định khơng thấy có lỗi Tuy nhiên, giống ví dụ đăng nhập trước, đoạn mã để lộ sơ hở cho lỗi SQL Injection khác Kẻ cơng thay ID hợp lệ cách gán ID cho giá trị khác, từ đó, khởi đầu cho cơng bất hợp pháp Ví dụ: Kẻ cơng thay URL với giá trị khác như: https://site.com/shownews.php?ID=0 OR 1=1 Câu truy vấn SQL lúc trả tất article từ bảng liệu thực câu lệnh: SELECT * FROM `BQ_NEWS` WHERE `NEWSID` = OR 1=1 Một trường hợp khác, ví dụ trang tìm kiếm Các trang cho phép người dùng nhập vào thơng tin tìm kiếm Họ, Tên, v.v Đoạn mã thường gặp là: 25 private function Find_Authors(){ if(isset($_GET['Find'])){ $Author_Name = $_GET['Author-Name']; $sql = "SELECT * FROM `BQ_AUTHOR` WHERE `AUTHOR_NAME` = '$Author_Name'"; $result = mysqli_query($this->conn, $sql); } } Tương tự trên, tin tặc lợi dụng sơ hở câu truy vấn SQL để nhập vào trường tên tác giả chuỗi giá trị: 'UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' (*) Lúc câu truy vấn đầu khơng thành cơng, chương trình thực thêm lệnh sau từ khóa UNION Tất nhiên ví dụ nói trên,dường khơng có nguy hiểm,nhưng thử tương tự kẻ cơng xóa toàn sở liệu cách chèn vào đoạn lệnh nguy hiểm lệnh DROP TABLE Ví dụ như: 'DROP TABLE BQ_AUTHOR Câu truy vấn thực việc xóa bảng 3.3 Dạng cơng Sử dụng câu lệnh INSERT Thông thường ứng dụng web cho phép người dùng đăng ký tài khoản để tham gia Chức thiếu sau đăng ký thành cơng, người dùng 26 xem hiệu chỉnh thơng tin SQL Injection dùng hệ thống khơng kiểm tra tính hợp lệ thơng tin nhập vào Ví dụ, câu lệnh INSERT 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: private function User_Registration(){ if(isset($_GET['Register'])){ $Firstname = $_POST['Firstname']; $Lastname = $_POST['Lastname']; $Username = $_POST['Username']; $Password = $_POST['Password']; $Emailaddress = $_POST['Emailaddress']; $Birthday = $_POST['Birthday']; $sql = "INSERT INTO `users` (`first_name`, `last_name`, `user_name`, `user_password`, `Email_address`, `birthday`) VALUES ('$Firstname', '$Lastname', '$Username', '$Password', '$Emailaddress', '$Birthday')" $result = mysqli_query($this->conn, $sql); } } Thì chắn bị lỗi SQLi, ta nhập vào trường thứ ví dụ như: ' + (SELECT `FieldName` FROM `TableName`) + ' Và trường lại ta nhập tùy ý Ví dụ: Khoai 27 Lương Văn Khoai 13aefe46aa73b2ce836e34932eb09ac6 luongvankhoai@gmail.com 2019-06-25 Lúc câu truy vấn là: INSERT INTO `users` (`first_name`, `last_name`, `user_name`, `user_password`, `Email_address`, `birthday`) VALUES ('' + (SELECT `FieldName` FROM `TableName`) + '', 'Khoai', 'Lương Văn Khoai', ' 13aefe46aa73b2ce836e34932eb09ac6', 'luongvankhoai@gmail.com', '2019-06-25') Khi đó, lúc thực lệnh xem thông tin, xem bạn yêu cầu thực thêm lệnh là: SELECT `FieldName` FROM `TableName` 3.4 Dạng công Sử dụng stored-procedures Việc công stored-procedures gây tác hại lớn ứng dụng thực thi với quyền quản trị hệ thống 'sa' Ví dụ, ta thay đoạn mã tiêm vào dạng: 28 '; EXEC xp_cmdshell ‘cmdd.exe dir C: ' Lúc hệ thống thực lệnh liệt kê thư mục ổ đĩa C:\ cài đặt server Việc phá hoại kiểu tuỳ thuộc vào câu lệnh đằng sau cmd.exe 3.5 Dạng công sử dụng Blind SQL Injection Một số ứng dụng web thiết kế xử lý lỗi tốt kẻ công thấy thông báo lỗi chứa thông tin nhạy cảm Do việc cơng cách sử dụng từ khóa UNION hay công dựa vào thông báo lỗi thực Trong trường hợp kẻ cơng sử dụng kỹ thuật Blind SQL Injection Kỹ thuật Blind SQL Injection gần giống với kỹ thuật trước, khác biệt cách liệu lấy từ sở liệu Khi sở liệu không xuất liệu trang web, kẻ công buộc phải ăn cắp liệu cách yêu cầu sở liệu loạt câu hỏi sai Điều làm cho khai thác lỗ hổng SQL Injection khó khăn hơn, khơng phải Đối với loại công này, hacker cố gắng xác minh xem sở liệu bị cơng SQL Injection cách so sánh kết truy vấn khác trả TRUE FALSE Có hai dạng Blind SQL Injection: - Normal Blind: Dạng không thấy phản hồi từ trang web kẻ cơng thấy kết thông qua mã trang thái HTTP kết câu truy vấn Cách 29 công Normal Blind thường thực cách sử dụng câu điều kiện If công vào mệnh đề Where - Totally Blind: Dạng hồn tồn khơng thấy phản hồi từ trang web Khi kẻ cơng sử dụng số hàm hệ thống phân tích trả lời từ trang web để tìm lỗ hổng Ví dụ: kẻ công sử dụng câu truy vấn sau: Product_ID = 1; waifor delay ‘0:0:10’ Nếu thời gian phản hồi từ tràn web trể bình thường 10 giây có nghĩa trang web có lỗ hổng Mặc dù SQL chuẩn ANSI ISO đưa ra, nhiên, có nhiều phiên khác ngơn ngữ SQL Và phần lớn chương trình sở liệu có phần mở rộng thêm vào riêng họ, so với chuẩn SQL Do công sở liệu khác website viết ngơn ngữ lập trình khác nhau, phải sử dụng nhiều phương pháp công khác Tuy nhiên, câu lệnh chương trình sở liệu phần lớn phải tuân theo chuẩn đưa Chính dạng cơng Hacker sử dụng phổ biến hiệu hầu hết cở sở liệu 30 CHƯƠNG CÁCH THỨC VÀ PHƯƠNG PHÁP TẤN CÔNG 4.1 Các đường khai thác  Qua User Input: User intput điển hình thường đến từ form nhập liệu, form login, form search hay link, v.v Những liệu web browser gửi đến sever thông qua phương thức HTTP GET hay HTTP POST trở thành tham số cho ứng dụng web truy cập tới sở liệu  Qua Cookies: Cookies tệp tin lưu trữ thông tin trạng thái người dung truy cập ứng dụng web Những thơng tin người lập trình định, tạo sever lưu lại client Khi người dùng truy cập lại ứng dụng web, cookies browser gửi lên sever giúp phục hồi lại trạng thái người dùng lần truy cập trước Do lưu trữ client nên người dùng chỉnh sửa tùy ý, ứng dụng web sử dụng thông tin lưu trữ cookies để xây dựng câu truy vấn tới sở liệu Hacker hồn tồn chèn vào cookies Script SQL để thực công SQL Injection  Qua biến sever: Biến sever khái niệm tương đối lạ lẫm khơng Một số ví dụ biến sever Http header, Network header, v.v không phổ biến giá trị lưu biến sever ứng dụng web sử dụng việc logging truy cập hay thống kê truy cập theo user agent công việc có tương tác với sở liệu nên Hacker hồn tồn sử dụng biến sever việc khai thác SQL Injection 4.2 Kỹ thuật khai thác 4.2.1 Boolean Based Time Based Blind SQL Injection  Boolean based: Cơ sở kỹ thuật việc so sánh sai để tìm ký tự thông tin tên bảng, tên cột, v.v Do đó, với dải giá trị chữ số, chữ (bao gồm hoa, thường) số ký tự đặc biệt, việc so khớp trở lên khó khăn đòi hỏi nhiều thời gian, việc khai thác lỗi chủ yếu sử dụng tools Ví dụ: http://url.com/node?id = and ascii(substring((query), position, 1)) [3] OWASP (2016) SQL Injection [online], viewed 29 January 2017, from:< https://www.owasp.org/index.php/SQL_Injection > [4] Whitehatsec (2017) 2017 Application security statistics report [online], viewed 30 January 2017, from: [5] Ptsecurity (2017) Web application attack statistics Q3 2017 [online], viewed 30 January 2017, from:< https://www.ptsecurity.com/upload/corporate/wwen/analytics/WebApp-Vulnerabilities-2017-Q3-eng.pdf > [6] Verizon Business (2017) Verizon Business SQL Injection [online], viewed 31 January 2017, from:< http://www.verizonenterprise.com/ > [7] Sans Institute (2017) Sans Institute SQL Injection [online], viewed 31 January 2017, from:< https://www.sans.org/ > 38 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Thái Nguyên, ngày tháng năm 2019 GIÁO VIÊN HƯỚNG DẪN Vũ Việt Dũng 39 ... nghệ thông tin Đề tài: NGHIÊN CỨU TÌM HIỂU TẤN CƠNG SQL INJECTION Sinh viên thực hiện: Đàm Quang Vinh Lớp ĐH -K16D, hệ qui Giáo viên hướng dẫn: ThS VŨ VIỆT DŨNG Thái Nguyên, năm 2019 MỤC LỤC LỜI

Ngày đăng: 04/08/2019, 14:45

Từ khóa liên quan

Mục lục

  • ĐẠI HỌC THÁI NGUYÊN

  • ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

    • ĐỒ ÁN

    • TỐT NGHIỆP ĐẠI HỌC

      • NGHIÊN CỨU TÌM HIỂU TẤN CÔNG

      • SQL INJECTION

      • MỤC LỤC

      • LỜI CẢM ƠN

      • DANH MỤC HÌNH ẢNH

      • DANH MỤC BẢNG BIỂU

      • DANH MỤC NHỮNG TỪ VIẾT TẮT

      • LỜI MỞ ĐẦU

      • CHƯƠNG 1

      • TỔNG QUAN VỀ SQL INJECTION

        • 1.1. Đặc trưng của ứng dụng sử dụng cơ sở dữ liệu

        • 1.2. Tầm quan trọng của các câu lệnh SQL đối với một hệ thống web

        • 1.3. Sql injection và tính nghiêm trọng của vấn đề an ninh cơ sở dữ liệu

          • 1.3.1. Sql Injection là gì?

          • 1.3.2. Hậu quả của tấn công SQL Injection

          • 1.3.3. SQL Injection và vấn đề an ninh cơ sở dữ liệu

          • CHƯƠNG 2

          • CÁC DẠNG LỖI SQL INJECTION THƯỜNG GẶP

            • 2.1. Không kiểm tra ký tự thoát truy vấn

            • 2.2. Xử lý không đúng kiểu

            • 2.3. Lỗi bảo mật bên trong máy chủ cơ sở dữ liệu

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan