Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 34 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
34
Dung lượng
6,67 MB
Nội dung
NHĨM 13: VŨ THỊ THÙY LINH- AT150429 NGUYỄN ĐÌNH LÂM - AT150230 PHAN TRỌNG KHIÊM - AT150329 Nội dung 01 CƠ SỞ LÝ THUYẾT 02 03 TẤN CÔNG SQL INJECTION THỰC NGHIỆM TẤN CƠNG VÀ CÁCH PHỊNG CHỐNG SQL INJECTION CƠ 01LÝ SỞ THUY Website ? Website tập hợp trang web (web pages) bao gồm văn , hình ảnh, video, flash… thường nằm tên miền (domain name) tên miền phụ (subdomain) World Wide Web Internet Ứng dụng web hướng sở liệu gồm tầng: Tầng trình diễn Tầng logic Tầng liệu Tầm quan trọng SQL với hệ thống Web: có vai trị quan trọng, SQL sử dụng chất keo kết dính CSDL trang Web Phương thức yêu cầu HTTP POST HTTP Request thông báo báo yêu cầu HTTP Đây thông tin từ client gửi đến server, u cầu server làm việc 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 HTTP POST REQUEST phương thức giúp gửi, cung cấp thông tin đến máy chủ, ví dụ gửi thơng tin đăng nhập, thơng tin đăng kí form Tổng quan công SQL Injection KHÁI NIỆM 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 hệ quan trị sở liệu để “chèn vào” (inject) thi hành câu lệnh SQL bất hợp pháp (không người phát triển ứng dụng lường trước) HẬU QUẢ Vì cho phép kẻ cơng thực thao tác xóa, hiệu chỉnh ,… Có tồn quyền sở liệu ứng dụng, server có ứng dụng chạy Thường xảy ứng dụng web có dư liệu quản lí hệ quản trị sở liệu SQL Server, MySQL, Oracle, DB2, Subase Cách thức hoạt động lỗ hổng SQL Injection Bước Bước Tìm kiếm trang web cho phép submit liệu trình tìm hiêm mạng Bước Thơng qua yêu cầu người dùng cho phép bới website, hacker gửi lệnh SQL Nhận thông tin quan trọng từ thông báo lỗi máy chủ SQL đẻ xác nhận tên table đọc hại đến máy chủ sở liệu Bước Thử gửi field tên đăng nhập , mật field id hi’ or 1=1- để kiểm tra chỗ yếu trang web Bước Sử dụng sp_makewebtask để nhận ghi output SQL Query file HTML Cách thức hoạt động lỗ hổng SQL Injection Bước Bước Xác định khai thác tên cột có table Thêm kí tự alphabet numeric String để gây thất bại cho trình chuyển đổi từ text sang số máy chủ Bước Bước Sau xác định tên column table, hacker Sử dụng statement update insert để tiến hành sửa dễ dàng thu thập thơng tin quan trọng đổi tạo record table từ Tháng năm 2006 Năm 2007 Nguy từ lỗ hổng SQL Theo số liệu thống kê hãng bảo mật SecureWorks cho biết phát tới CVE liệt kê danh sách 1754 lỗ hổng SQL 8.000 vụ công lên injection sở liệu số có 944 lỗ sở liệu ngày hổng năm 2006 SQL injection chiếm 13,6% tất lỗ hổng mà CVE năm 2006, đứng số hay thống kêcácchi Hacker dễ dàng truy nhập vào Một phần tồn liệu có hệ thơng gây Tháng năm 2011 sau lỗ hổng cross-sitescripting đứng trước lỗ hổng tràn thiệt hại lớn đến mức khổng lồ cho ứng dụng web diệu database bị lộ tiết Công ty bảo mật web Armorize thông báo phát kiểu công cách thức SQL Injection hàng loạt Kiểu công lợi dụng hình thức đơn giản mạng mang hàng (peer-to-peer) để làm cho mạng bị tổn hại khó gỡ xuống 02 Tấn công SQL Injection biện pháp phòng chống UTL_INADDR.GET_HOST_ADDRESS((SELECT sys.stragg (distinct username||chr(32)) FROM all_users)) System Stored Procedure Sử dụng liệu đầu vào độc hại để thực thi câu lệnh SQL độc hại thông qua thủ tục lưu trữ (Stored Procedure) Xảy ứng dụng web không lọc liệu đầu vào dùng để xây dựng đoạn code SQL cho thủ tục lưu trữ CREATE PROCEDURE login @user_varchar(20), Input: @password varchar(20) AS DECLARE @query varchar(250) SET @query = ‘ SELECT 1 FROM usertable WHERE username = ‘ + @user_name + ‘ AND password = ‘ + @password EXEC(@query)go anyusername or 1=1’ anypassword Illegal/Logically Incorrect Query Biết thêm thông tin sở liệu tiêm yêu cầu khơng hợp lệ/khơng hợp lí mặt logic tham số tiêm vào được, kiểu liệu, tên bảng, Ví dụ, để tìm tên cột, người cơng nhập vào với liệu đầu vào là: Username:’An” SELECT * FROM Users WHERE UserName = ‘An”’ AND password = * Thông báo lỗi: “Incorrect Syntax near ‘An’ Unclosed quotation mark after the character string “ AND password=’xxx”.” Time-based Còn gọi Time Delay SQL injection đánh giá thời gian chờ xảy phản hồi câu truy vấn true or false (Đúng/Sai) gửi đến sở liệu Dựa phản hồi, người công thu thập liệu thời gian kết nối tới sở liệu IF EXIST(SELECT * FROM shop) WAITFOR DELAY ‘0:0:5’ – 5s Yes We are unable to process your request Kiểm tra DB Please try back later No Ngay Boolean-based Xác định xem cơng SQL injection có khả thi hay không cách thực thi hàng loạt request để hỏi đến sở liệu so sánh kết trả lại từ trang phản hồi http://www.shop.com/item.aspx?id=21 SELECT Name, Price, Description FROM ITEM_DATA WHERE ITEM_ID =21 http://www.shop.com/item.aspx?id=21 and 1=2 http://www.shop.com/item.aspx?id=21 1=1 SELECT Name, Price, Description FROMand ITEM_DATA WHERE ITEM_ID =21 AND = SELECT Name, Price, Description FROM ITEM_DATA WHERE ITEM_ID =21 AND = Nếu kết câu truy vấn sai khơng có items hiển thị Nếu kết truy vấn chi tiết item có id = 21 hiển thị Out-of-band Kiểu cơng khó để thực Người công dùng kênh liên lạc khác tính sở liệu email, viết file,… để thực cơng Ví dụ: Microsoft SQL Server Sử dụng xp_dirtree gửi DNS request tới server điều khiển người công Oracle: Sử dụng gói tin UTL_HTTP để gửi yêu cầu HTTP từ SQL hay PL/SQL tới server điều kiển người cơng Phương pháp phịng chống Xác thực liệu đầu vào người dùng nhập Thực câu lệnh chuẩn bị tham số hóa Sử dụng Thủ tục lưu trữ (Stored Procedure) sở liệu Liên tục cập nhật vá bảo mật Dùng tường lửa WAF Giảm mục tiêu công Thiết lập quyền hạn hợp lí khả truy cập nghiêm ngặt Mã hóa Khơng tiết lộ nhiều cần thiết thông báo lỗi 10 Không sử dụng chung sở liệu tài khoản người dùng 11 Thường xuyên giám sát câu lệnh SQL, tiến hành kiểm thử định kì Xác thực liệu đầu vào người dùng nhập Xác định câu lệnh thiết yếu thiết lập danh sách cho tất câu lệnh SQL hợp lệ (whitelist), bỏ qua câu lệnh chưa xác thực câu truy vấn Lọc liệu đầu vào Lọc liệu, liệu chưa xác thực không cho phép nối chuỗi Loại bỏ kí tự nguy hiểm dấu ngoặc đơn (‘) không truyền vào câu truy vấn SQL Tùy chỉnh liệu nhập vào người dùng tới hàm MySQL’s mysql_real_escape_string() Thực câu lệnh chuẩn bị tham số hóa Sử dụng câu lệnh chuẩn bị sẵn với câu truy vấn tham số hóa hay cịn gán biến, để viết tất câu truy vấn sở liệu Bằng cách định nghĩa tất code SQL liên quan đến truy vấn, hay tham số hóa, ta phân biệt liệu đầu vào người dùng nhập code Sử dụng Thủ tục lưu trữ (Stored Procedure) sở liệu Bằng cách viết câu truy vấn từ trước đánh dấu vị trí tham số truyền vào, thủ tục lưu trữ giúp ta phân biệt thành phần câu truy vấn với liệu vào rõ ràng, coi tham số hoàn toàn liệu phân biệt với câu lệnh SQL Phương pháp tương tự tham số hóa Liên tục cập nhật vá bảo mật Phải cập nhật thông tin thường xuyên cập nhật vá để ngăn chặn lỗ hổng bị khai thác sớm tốt Dùng tường lửa WAF Sử dụng tường lửa WAF (Web Application Firewall) dành cho phần mềm ứng dụng web để giúp lọc liệu độc hại Tường lửa ngày bao gồm NGFW FwaaS có luật đầy đủ chuyên sâu thay đổi cần Một số WAF : Fortinet WAF, Imperva WAF, F5 WAF, … Giảm thiểu mục tiêu cơng Bỏ tính sở liệu mà ta không cần không cần phải bảo vệ Thiết lập quyền hạn hợp lí khả truy cập nghiêm ngặt Phải thiết lập sách truy cập với luật lệ nghiêm ngặt để kiểm sốt luồng thơng tin giám sát người dùng sở liệu Mã hóa Mã hóa tất thông tin nhạy cảm mật khẩu, thông tin tối mật điều cần thiết 10 Không tiết lộ nhiều cần thiết thông báo lỗi Người cơng có học nhiều thông tin sở liệu thông qua thông báo lỗi, ta cần đảm bảo thông báo lỗi hiển thị tối thiểu thơng tin 11 Khơng sử dụng chung sở liệu tài khoản người dùng Việc chia sẻ sở liệu nhiều website ứng dụng cung cấp linh hoạt việc quản lí đồng thời tạo nguy tiềm tàng không cần thiết 12 Thường xuyên giám sát câu lệnh SQL, tiến hành kiểm thử định kì Bằng cách có giám sát thường xuyên câu lệnh SQL, sở liệu kết nối với ứng dụng bao gồm tài khoản sở liệu, thủ tục, … người quản trị biết xảy hệ thống đưa giải pháp để đảm bảo khơng có bất thường xảy THỰC 03 NGHI XIN CẢM ƠN CÔ Và CÁC BẠN Đã LẮNG NGHE! ... chiếm 13, 6% tất lỗ hổng mà CVE năm 2006, đứng số hay thống kêcácchi Hacker dễ dàng truy nhập vào Một phần tồn liệu có hệ thơng gây Tháng năm 2011 sau lỗ hổng cross-sitescripting đứng trước lỗ hổng. .. Nguy từ lỗ hổng SQL Theo số liệu thống kê hãng bảo mật SecureWorks cho biết phát tới CVE liệt kê danh sách 1754 lỗ hổng SQL 8.000 vụ công lên injection sở liệu số có 944 lỗ sở liệu ngày hổng năm... Injection KHÁI NIỆM 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 hệ quan trị sở liệu để “chèn vào” (inject) thi hành câu lệnh SQL