Đề tài: Tấn công SQL Injection Báo cáo đồ án

27 3.9K 39
Đề tài: Tấn công SQL Injection  Báo cáo đồ án

Đ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

Báo cáo đề tài tấn công SQL Injection môn Bảo mật interrnet. Tổng quan về đề tài Tổng quan về ứng dụng web và các lỗ hổng ứng dụng web Khái niệm về SQL Injection. Các dạng tấn công SQL Injection và các ngăn chặn

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN Khoa Mạng Máy Tính Và Truyền Thông - - MÔN HỌC: BẢO MẬT INTERNET ĐỀ TÀI: TẤN CÔNG SQL INJECTION GIÁO VIÊN HƯỚNG DẪN: Ths Tô Nguyễn Nhật Quang NHÓM SINH VIÊN THỰC HIỆN: 17 Lê Hữu Bình – 12520027 Châu Quốc Tiến – 12520740 Bùi Nguyễn Thanh Duy – 12520094 Tiếu Hoài Nam – 12520644 Phạm Tấn Thiện - 12520917 TPHCM, Ngày 06/12/2016 LỜI MỞ ĐẦU Với bùng nổ internet kèm theo phát triển World Wide Web năm gần Các doanh nghiệp, cá nhân, phủ phát trang web hay ứng dụng web cung cấp đầy đủ giải pháp hiệu quả, đáng tin cậy giải thách thức giao tiếp tiến hành thương mại hóa kỷ XX Tuy nhiên, an toàn trang web hay ứng dụng web trở nên ngày quan trọng thập kỷ qua Ngày nay, trang web giáo dục, y tế, tài hay liệu nhạy cảm phải đối mặt với nhiều nguy bị công từ hacker Tại Việt Nam năm vừa qua có nhiều công nhắm vào tổ chức lớn gây thiệt hại nhiều cho doanh nghiệp, tổ chức Nổi bật công vào trang chủ VietnamAirlines nhóm hacker có tên 1937CN từ Trung Quốc gây ý nhiều dư luận Nhiều lỗ hổng trang web không kiểm tra kỹ để điều khiển ứng dụng trang web nguyên nhân để hacker dựa vào để công SQL Injection dạng công phổ biến sử dụng Ngoài có số dạng công khác như: Shell Injection, Script language injection, file inclusion, XML injection, XPATH injection SQL Injection dạng công nghệ công vào sở liệu trang web Với việc lợi dụng lỗ hỗng câu lệnh truy vấn, hacker thêm vào số câu lệnh truy vấn SQL để lấy liệu chiếm quyền truy cập để thay đổi liệu LỜI CẢM ƠN Chúng 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 hết lòng truyền đạt cho chúng em kiến thức bổ ích suốt thời gian qua, tạo điều kiện cho chúng em phát huy ý tưởng Đặc biệt, chúng em xin gửi lời cảm ơn chân thành đến cô Ths Tô Nguyễn Nhật Quang tận tình hướng dẫn, truyền đạt kiến thức bảo cho chúng em suốt thời gian thực đề tài Mặc dù chúng em cố gắng, song chắn báo cáo nhiều thiếu sót, chúng em mong nhận hướng dẫn thêm quý Thầy Cô, Anh Chị Bạn TPHCM, ngày 06 tháng 12 năm 2016 NHẬN XÉT (Của Giảng Viên Hướng Dẫn) Tp.HCM , Ngày 06 tháng 12 năm 2016 Ký tên Giảng viên: Ths Tô Nguyễn Nhật Quang MỤC LỤC CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI LÝ DO CHỌN ĐỀ TÀI 1.1 Ngày nhiều trang web hay ứng dụng web cho phép người dùng truy cập xem thông tin từ sở liệu thông qua internet Các sở liệu hầu hết không bảo vệ thích hợp dễ bị khai thác trước công kiểu SQL Injection Câu lệnh SQL loại ngôn ngữ truy vấn dung để truy câp thay đổi thông tin sở liệu website Một số câu lệnh phổ biến thêm, chèn, xóa sửa Nếu trang web không bảo vệ thích hợp xác, người dùng truy cập vào trang web lợi dụng để viết lại số câu lệnh SQL làm liệu hay phá hủy sở liệu trang web Với mục đích tìm hiểu nghiên cứu để hiểu rõ cách mà hacker công vào trang web chứa lỗi bảo mật sở liệu đồng thời đưa giải pháp để ngăn chặn công 1.2 PHẠM VI NGHIÊN CỨU Trong đề tài nhóm tập trung nghiên cứu phần sau: - Nghiên cứu tổng quan môi trường web, công SQL Injection lỗ hổng để khai - thác công SQL Injection Nghiên cứu trình công trang web kiểu công SQL Injection - Nghiên cứu cách ngăn chặn công vào sở liệu trang web Đưa các giải pháp hiệu để đối phó với công vào trang web CHƯƠNG 2: TỔNG QUAN VỀ SQL INJECTION 2.1 TỔNG QUAN VỀ ỨNG DỤNG WEB 2.1.1 Tổng quan trình hoạt động ứng dụng web Một ứng dụng web chương trình phần mềm cho phép người dùng truy cập thông qua trình duyệt web Các ứng dụng web truy cập thông qua trình duyệt web (IE, Firefox, Chrome, ) Người dùng truy cập ứng dụng từ máy tính mạng Thời gian đáp ứng phản hồi phụ thuộc vào tốc độ kết nối Bước 1: Người dùng gửi yêu cầu truy cập thông qua trình duyệt web từ Internet đến máy chủ web Bước 2: Máy chủ web chấp nhận yêu cầu chuyển tiếp yêu cầu người dùng áp dụng yêu cầu cho ứng dụng Bước 3: Máy chủ web thực nhiệm vụ yêu cầu Bước 4: Các ứng dụng web kết nối đến sở liệu có sẵn trả kết cho web server Bước 5: Máy chủ web trả kết cho người dùng trình hoàn tất Bước 6: Cuối thông tin mà người dùng yêu cầu xuất hình người dùng Các ứng dụng web truy cập hình thức GET POST từ URL Cookie, thông qua logic lập trình viên thông tin cần lấy gửi đến sở liệu trả kết theo yêu cầu người dùng Không may có số yêu cầu không hợp lệ vấn trả kết lấy từ sở liệu từ làm cho trang web dễ bị công dạng SQL Injection Những kẻ công lợi dụng lỗ hổng để lấy thông tin cần thiết sở liệu, lấy tài liệu nhạy cảm, xóa bỏ hay phá hủy liệu quan trọng, hay thực công DoS làm giới hạn số người sử dụng 2.1.2 Các vần đề liên quan đến ứng dụng web Có số yếu tố làm cho ứng dụng web không bảo vệ an toàn Thứ nhất, nhiều ứng dụng viết thời điểm mà yếu tố bảo mật chưa đặt lên hàng đầu Điều làm cho công SQL Injection diễn dễ dàng Trong thời điểm thảo luận lỗ hổng SQL Injection diễn với tần suất thấp hầu hết nhà phát triển không nhận thức mối nguy hiểm Ngoài ra, hầu hết ứng dụng web viết tương tác trực tiếp với sở liệu web mà không cần thông qua biện pháp mã hóa hay xác thực Một dự án nghiên cứu X-Force IBM gần phát 47% lỗ hổng bảo mật website liên quan đến ứng dụng web Cross-Site Scripting & SQL Injection tiếp tục thống trị công số lựa chọn khác.Vấn đề thực lớn nhiều, theo Neira Jones, người đứng đầu toán an ninh cho ngân hàng Barclays, 97% vi phạm liệu toàn giới SQL thêm vào câu lệnh lúc gửi yêu cầu đến máy chủ Một số nguyên nhân dẫn đến đa dạng lỗ hổng bảo mật web nay: - Người lập trình tự phát triển ứng dụng Web (Sử dụng ngôn ngữ kịch để tạo ứng dụng, phát triển rộng rãi mà quan tâm đến trình phát triển ứng dụng an toàn Thiếu đội ngũ lập trình với kỹ nhận biết phát triển ứng dụng tránh lỗi bảo mật) - Sử dụng ứng dụng Web từ mã nguồn mở (Thường không theo dõi cập nhật vá lỗi bảo mật) - Phát triển ứng dụng Web từ ứng dụng mở khác (Trường hợp thường không kiểm tra lỗi bảo mật ứng dụng củ trước phát triển tiếp, nên tồn lỗi bảo mật) 2.2 TỔNG QUAN VỀ SQL INJECTION 2.2.1 Khái niệm SQL Injection SQL Injection loại lỗ hổng ứng dụng web mà kẻ công thao tác thực lệnh truy vấn SQL để lấy thông tin từ sở liệu Đây loại công chủ yếu ứng dụng web cho phép người dùng sử dụng truy cập sử dụng liệu mà không xét quyền truy cập hay mã hóa liệu Lỗ hổng dẫn đến việc lộ thông tin nhạy cảm, số thẻ tín dụng, liệu tài khác cho phêp kẻ công thêm, xóa, sửa, cập nhật, thay đổi liệu lưu sở liệu Đây lỗ hổng ứng dụng web, lỗi sở liệu hay vấn đề máy chủ Hầu hết lập trình viên không nhận thức mối đe dọa 2.2.2 Các mối đe dọa từ SQL Injection Các mối đe dọa SQL Injection: - Snoofing identity (Mạo danh): Những kẻ công mạo danh email - trang web tổ chức để đánh lừa người dùng Changing prices (Thay đổi giá): Một số vấn đề SQL Injection thay đổi liệu Ở đây, kẻ công thay đổi giá trang mua sắm trực - tuyến để mua sản phẩm với giá rẻ Tamper with database records (Xáo trộn hồ sơ sở liệu): Cơ sở liệu hoàn toàn bị hư hại; chí có khả bị thay hoàn toàn chí - bị xóa hết liệu Escalation of privileges (Leo thang đặc quyền): Một hệ thống bị công, kẻ công tìm kiếm đặc quyền truy cập cao thành viên quản trị để chiếm - quyền truy cập vào hệ thống vào mạng nội Denial-of-service on the server (Từ chối dịch vụ từ máy chủ): Từ chối dịch vụ từ máy chủ dạng công mà người dùng truy cập vào hệ thống Ngày nhiều yêu cầu gửi đến máy chủ mà sử lý Điều dẫn đến tạm - ngưng dịch vụ máy chủ Complete disclosure of all the data on the system (Lộ tất thông tin liệu hệ thống): Một hệ thống bị công liệu quan trọng bí mật như: số thẻ tín - dụng, chi tiết nhân viên hồ sơ tài chính,…v.v bị tiết lộ Destruction of data (Phá hủy liệu): Những kẻ công sau chiếm hoàn toàn - quyền hệ thống phá hủy hoàn toàn liệu, kết làm tổn thất lớn cho công ty Voiding system's critical transaction (Tránh giao dịch quan trọng hệ thống): - Những kẻ công vận hành hệ thống tránh tất giao dịch Modifying the records (Thay đổi hồ sơ): Kẻ công sửa đổi liệu sở liệu công ty, gây trở ngại lớn cho hệ thống quản lý sở liệu công ty 2.3 MỘT SỐ THUẬT NGỮ LIÊN QUAN 2.3.1 Hacker Hacker thuật ngữ dùng để chuyên gia máy tính Hacker không tạo kẻ hở cho hệ thống, hacker lại người am hiểu hệ điều hành, hệ quản trị liệu, ngôn ngữ lập trình… Họ sử dụng kiến thức việc tìm tòi khai thác lỗ hổng hệ thống mạng Một số hacker dừng lại việc phát thông báo lổi tìm cho nhà bảo mật hay người phát triển chương trình, họ xem WhiteHat (Hacker mũ trắng) Một số Hacker dựa vào lỗ hổng thực việc khai thác trái phép nhằm mục đích phá hoại hay mưu lợi riêng, người bị xem BlackHat (Hacker mũ đen) 2.3.2 Giao thức HTTP HTTPS HTTP chữ viết tắt từ HyperText Transfer Protocol (giao thức truyền tải siêu văn bản) Nó giao thức mà World Wide Web sử dụng HTTP xác định cách thông điệp (các file văn bản, hình ảnh đồ hoạ, âm thanh, video,…) định dạng truyền tải sao, hành động mà Web server trình duyệt Web phải làm để đáp ứng lệnh Khi gõ địa Web URL vào trình duyệt Web, lệnh HTTP gửi tới Web server để lệnh hướng dẫn tìm trang Web yêu cầu kéo mở trình duyệt Web Tóm lại, HTTP giao thức truyền tải file từ Web server vào trình duyệt Web để người dùng xem trang Web diện Internet HTTP giao thức ứng dụng giao thức TCP/IP (các giao thức tảng cho Internet) HTTP header phần đầu (header) thông tin mà trình khách trình chủ gữi cho Những thông tin trình khách gữi cho trình chủ gọi HTTP requests (yêu cầu) trình chủ gữi cho trình HTTP responses (trả lời) Thông thường HTTP header gồm nhiều dòng, 10 Web tên tuổi, địa chỉ, số thẻ tín dụng,… Nhưng địa trang Web bắt đầu “https:// ” điều có nghĩa liên lạc an toàn với server trang Web người ta nghe trộm thông tin gửi 2.3.2 Session HTTP giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa HTTP không lưu trạng thái làm việc trình duyệt với trình chủ Sự thiếu sót gây khó khăn cho số ứng dụng Web, trình chủ trước trình duyệt có trạng thái Vì để giải vấn đề này, ứng dụng web đưa khái niệm phiên làm việc(Session) Còn SessionID chuỗi để chứng thực phiên làm việc Một số trình chủ cung cấp SessionID cho người dùng họ xem trang web trình chủ Để trì phiên làm việc SesionID thường lưu vào: • Biến URL • Biến ẩn form • Cookie Phiên làm việc tồn khoảng thời gian cho phép, thời gian cấu hình quy định trình chủ hay với ứng dụng thực thi Trình chủ tự động giải phóng phiên làm việc để khôi phục lại tài nguyên hệ thống 2.3.4 Cookie Cookie phần liệu nhỏ có cấu trúc chia sẻ trình chủ trình duyệt người dùng Các Cookie lưu trữ dạng file liệu nhỏ dạng text, ứng dụng tạo để lưu trữ, truy tìm, nhận biết thông tin người dùng ghé thăm trang web vùng họ 13 qua trang Những thông tin bao gồm tên, định dạng người dùng, mật khẩu, sở thích, thói quen cookie trình duyệt người dùng chấp nhận lưu đĩa cứng máy mình, nhiên lúc trình duyệt hỗ trợ cookie, mà tùy thuộc vào người dùng có chấp nhận chuyện lưu trữ hay không Ở lần truy cập sau đến trang web đó, ứng dụng dùng lại thông tin cookie (như thông tin liên quan đến việc đăng nhập vào Yahoo Messenger ) mà người dùng làm lại thao tác đăng nhập hay phải cung cấp lại thông tin khác • Persistent Secure • Persistent Non-Secure • Non-Persistent Secure • Non-Persistent Non-Secure Persistent cookie lưu trữ dạng tập tin.txt (ví dụ trình duyệt Nestcape Navigator lưu cookie thành tập tin cookie.txt Internet Explorer lưu thành nhiều tập tin *.txt tập tin cookie) máy khách khoảng thời gian xác định Non-persistent cookie lưu trữ nhớ RAM máy khách bị hủy đóng trang Web hay nhận lệnh từ trang web Secure cookie gửi thông tin qua HTTPS (SSL) Non-Secure cookie gữi hai giao thức HTTPS hay HTTP Thực chất đố với sercure cookie trình chủ sẻ cung cấp chế độ truyền bảo mật Các thành phần cookie gồm : 14 Domain Flag Path Secure Expiration Name Value 64.3.40.151.16 www.redhat.com FALSE FALSE 1154029490 Apache 018996349247 409 • Domain: Tên miền trang web tạo cookie (ví dụ www.redhat.com) • Flag: Mang giá trị TRUE/FALSE-Xác định máy khác với tên miền có truy xuất đến cookie hay không • Path: Phạm vị địa truy xuất cookie Ví dụ : Nếu path là”/tracuu”thì địa thư mục /tracuu tất thư mục /tracuu/baomat truy xuất đến cookie Còn giá trị “/” cookie truy xuất đến tất địa thuộc miền trang web tạo cookie • Secure: Mang giá trị TRUE/FALSE Xác định secure cookie hay không nghĩa kết nối có sử dụng SSL hay không • Expiration: Thời gian hết hạn cookie, đực tính giây kể từ 00:00:00 GMT ngày 01/01/1970 Nếu giá trị không thiết lập trình duyệ hiểu nonpersistent cookie lưu nhớ RAM xóa trình duyệt bị đóng • Name: Tên biến (trong trường hợp Apache) • Value: Với cookie tạo giá trị Apache 64.3.40.151 16018996349247480 ngày hết hạn 27/07/2006, tên miền http://www.redhat.com 15 Máy trạm lưu tối đa 300 cookies Kích thước tối đa cookie 4kb Số cookie tối đa cho tên miền 20 cookie Các máy chủ không mong máy trạm vượt giới hạn Khi giới hạn 300 cookie 20 cookie tên miền máy chủ bị vượt quá, máy trạm xoá cookie sử dụng 2.3.5 Proxy Proxy cung cấp cho người sử dụng truy xuất Internet nghi thức đặc biệt tập nghi thức thực thi dual_homed host basion host Những chương trình client người sử dụng qua trung gian proxy server thay cho server thật mà người sử dụng cần giao tiếp Proxy server cần xác định yêu cầu từ client định đáp ứng hay không đáp ứng, yêu cầu đáp ứng, proxy server kết nối với server thật thay cho client tiếp tục chuyển tiếp yêu cầu từ client đến server, trả lời server đến client Vì proxy server giống cầu nối trung gian server client 2.3.6 Firewall Một giải pháp dùng để bảo vệ hệ thống mạng thường sử dụng tường lửa Firewall (hoạt động dựa gói IP kiểm soát việc truy nhập máy người sử dụng) Nó có vai trò lớp rào chắn bên hệ thống mạng, chức firewall kiểm soát luồng thông tin máy tính Có thể xem firewall lọc thông tin, xác định cho phép máy tính có truy xuất đến máy tính khác hay không, hay mạng có truy xuất đến mạng hay không Người ta thường dùng firewall vào mục đích: • Cho phép cấm dịch vụ truy xuất 16 • Cho phép cấm dịch vụ từ bên truy nhập vào • Kiểm soát địa truy nhập, cấm địa truy nhập CHƯƠNG 3: CÁC DẠNG TẤN CÔNG VÀ BIỆN PHÁP NGĂN CHẶN SQL INJECTION 3.1 CÁC DẠNG TẤN CÔNG SQL INJECTION 3.1.1 System Stored Procedure (Hệ thống thủ tục lưu trữ) Những kẻ công cố gắng khai thác thủ tục lưu trữ liệu hệ thống Sau xác định loại sở liệu sử dụng kiến thức để xác định thủ tục lưu trữ tồn Tấn công vào 17 thủ tục lưu trữ kẻ công tạo lỗi tràn đệm, leo thang đặc quyền chiếm quyền truy cập vào hệ điều hành 3.1.2 Illegal/Logically Incorrect Query (Lệnh truy vấn bất hợp pháp hay không logic) Trong loại công này, kẻ công cố gắng thu thập đầy đủ thông tin cấu trúc back-end sở liệu trang web Những kẻ công gửi câu lệnh truy vấn SQL không hợp lệ không logic đến sở liệu trang web, số máy chủ trả thông báo lỗi mặc định kẻ công lợi dụng điểm yếu Từ việc khai thác thông báo lỗi mặc định kẻ công khai thác số bảng, số cột, sở liệu Có nhiều cách để gửi lệnh truy vấn không hợp lệ hay bất hợp pháp như: thêm kí tự (‘) vào cuối câu lệnh truy vấn, sử dụng toán tử AND để thực câu lệnh sai logic, sử dụng order by hay mệnh đề having để máy chủ trả thông báo lỗi 3.1.3 Tautology (Tấn công mệnh đề đúng) Các công hoạt động cách thêm vào mệnh đề WHERE câu lệnh truy vấn tuyên bố Với dạng công tin tặc dễ dàng vượt qua trang đăng nhập nhờ vào lỗi dùng câu lệnh SQL thao tác sở liệu ứng dụng web Thông thường phép người dùng truy cập vào trang web 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 tên đăng nhập mật Sau người dùng nhập thông tin vào, hệ thống kiểm tra tên đăng nhập mật có hợp lệ hay không để định cho phép hay từ chối thực tiếp Xét đoạn code php sau: $uname=$_POST['uname']; 18 $passwrd=$_POST['passwrd']; $query="select username,pass from users where username='$uname' and password='$passwrd'"; $result=mysql_query($query); Thử tài khoản đăng nhập mật bằng: 'or ''=', cầu truy vấn thành câu sau: select username,pass from users where username='' or ''='' and password='' or ''='' Do mệnh đề nên dễ dàng đăng nhập tài khoản 3.1.4 Union Query Cuộc công dạng thực cách thêm vào tham số hình thức có dạng: ‘UNION SELECT ’ Lúc này, 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 Những kẻ công xóa toàn sở liệu cách chèn vào đoạn lệnh nguy hiểm DROP TABLE Ví dụ :’DROP TABLE_AUTHORS-’ Để biết ứng dụng web bị lỗi dạng nhập vào chuỗi (*) sau: ‘UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE’’=’ (*) Nếu hệ thống báo lỗi cú pháp dạng : Invalid object name” OtherTable”; ta biết hệ thống thực câu SELECT sau từ khóa UNION, trả lỗi mà ta cố tình tạo câu lệnh SELECT 19 Trong SQL Server, có hai đối tượng sysobjects syscolumns cho phép liệt kê tất tên bảng cột có hệ thống Để biết tên bảng liệu mà thực thao tác phá hoại ứng dụng web bị lỗi SQL injection Ta cần chỉnh lại câu lệnh SELECT: ‘UNION SELECT name FROM sysobjects WHERE xtype=’U’ liệt kê tất bảng liệu 3.1.5 Blind SQL Injection Blind SQL Injection sử dụng ứng dụng web không dễ bị công SQL Injection Trong nhiều khía cạnh, SQL Injection blind Injection giống nhau, có khác biệt nhỏ SQL Injection phụ thuộc vào thông báo lỗi blind injection không Không phải ứng dụng web dễ bị công SQL Injection, lúc ta sử dụng blind SQL Injection để truy cập vào liệu nhạy cảm phá hủy liệu Những kẻ công đánh cắp liệu cách thực loạt câu hỏi True False thông qua câu lệnh SQL 3.2 CÁC BIỆN PHÁP NGĂN CHẶN SQL INJECTION Trong hầu hết trình duyệt, kí tự nên mã hóa địa URL trước sử dụng Việc công theo SQL Injection dựa vào câu thông báo lỗi việc phòng chống hay không cho hiển thị thông điệp lỗi cho người dùng cách thay lỗi thông báo trang người phát triển thiết kế lỗi xảy ứng dụng Kiểm tra kĩ liệu nhập vào thay kí tự : • Đối với giá trị numeric, chuyển sang Interger trước thực câu truy • vấn SQL, dùng ISNUMERIC để chắn Interger Dùng thuật toán mã hóa liệu 20 • • Lọc bỏ ký tự từ khóa nguy hiểm như: , select , where , drop, shutdown … Như vậy, thấy lỗi SQL injection khai thác bất cẩn lập trình viên phát triển ứng dụng web xữ lí 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 cách cấu hình hệ thống Nếu ứng dụng sử dụng quyền dbo(quyền người sở hữu sỡ liệu - owner) thao tác liệu, xóa toàn bảng liệu, tạo bảng liệu mới,…Nếu ứng dụng sử dụng quyền sa(quyền quản trị hệ thống), điều khiển toàn hệ quản trị sỡ liệu với quyền hạn rộng lớn tạo tài khoản người dùng bất hợp pháp để điều khiển hệ thống bạn Để phòng tránh, ta thực hai mức 3.2.1 Đối với website (dành cho lập trình viên): Cần kiểm tra tính đắn tất liệu đầu vào Dữ liệu đầu vào không tham số, mà bao gồm cookie, user agent, referer … Việc kiểm tra tính đắn liệu dựa phương pháp sau: - Kiểm tra dựa vào kiểu liệu (số, ngày tháng …) - Kiểm tra, giới hạn độ dài đầu vào - -Loại bỏ ký tự đặc biệt như: ‘ % ” ? # @ & … - -Loại bỏ từ đặc biệt: select, drop, delete, information_schemal, insert, union, xp_ … 3.2.2 Đối với web server (dành cho quản trị mạng): Hầu hết máy chủ web (web server) có module hỗ trợ việc phòng chống SQL Injection, ví dụ: 21 Apache có modsecurity, IIS có URLScan Bạn cần bật tính cấu hình cho phù hợp Nếu website bạn dạng trang tin tức phù hợp để triển khai Trong số trường hợp khác, module chặn nhầm, dẫn tới website hoạt động không xác 3.2.3 Đối với database server (dành cho quản trị mạng): Bạn cần thực việc cấu hình phân quyền chặt chẽ tài khoản Khi đó, dù tồn lỗi SQL Injection, thiệt hại hạn chế Ngoài ra, bạn cần loại bỏ bảng, thành phần tài khoản không cần thiết hệ thống 3.2.4 Hạn chế bị phát lỗi Attacker dựa vào lỗi lập trình ứng dụng để công cụ thể attacker dựa vào dấu hiệu để phát ứng dụng bị lỗi Vậy việc làm cho dấu hiệu bị che đi, trở nên khó hiểu hơn, biến mất…được hầu hết chuyên gia bảo mật sử dụng Lưu ý kĩ thuật dùng để dấu lỗi, lỗi ứng dụng đó, để chống lại phát dễ dàng lỗi để kẻ xấu khai thác Nhưng attacker khôn khéo nhìn thấu kiểu phòng chống Nó tránh công đơn giản thêm dấu ‘(dấu nháy) vào cuối đường dẫn Vì phương pháp tìm kiếm ứng dụng bị lỗi công dựa vào dấu hiệu trả ứng dụng trực tiếp từ database Ta đưa thông báo chung chung định hướng trở lại trang ban đầu(redirect) Trong trường hợp này, công việc tìm kiếm lỗi xác định mục tiêu trở nên cực khó attacker Tuy nhiên attacker tạo công nghệ tìm kiếm lỗi tinh vi hơn, tốt hơn, để gián tiếp xác định dấu hiệu trả Tấn công kiểu gọi “Blind SQL Injection” 22 3.2.5 Phòng chống từ bên Giải pháp dùng tường lửa đặc biệt để bảo vệ bạn khỏi ứng dụng dùng việc truy cập database với mục đích xấu Chúng ta cần lưu ý attacker tương tác với ứng dụng web thông qua trình duyệt với kết nối từ xa Sau đó, ứng dụng gởi yêu cầu đến database Như ngăn chặn công attacker với ứng dụng, ứng dụng với database thân database Những lọc, quét điểu khiển truy cập sở liệu làm cho ứng dụng web khó bị công 3.2.6 Cải thiện liệu nhập vào Cách phòng chống thực để chống lại SQL Injection kiểm tra làm câu truy vấn Như đề cập, lỗi ứng dụng không kiểm tra liệu nhập vào người dùng Do người dùng thay đổi, chỉnh sửa, tham số thêm thực thể truy vấn vào câu lệnh Vì liệu nhập người dùng cần theo dõi có ràng buộc định Thứ nhất, ứng dụng cần phân loại kiểu liệu nhập vào Ví dụ, ứng dụng yêu cầu liệu nhập vào kiểu số ứng dụng nhận liệu nhập vào không nên chấp nhận kiểu khác ngoại trừ kiểu số Một số hàm kiểm tra PHP: is_numeric($str) : kiểm tra $str có phải kiểu số hay không is_int($str) :kiểm tra kiểu interger is_float($str) :kiểm tra kiểu số thực … 23 Thứ 2, liệu nhập vào không rõ kiểu phải xác định kiểu không phép gọi Trong trường hợp phải lọc dấu nháy, lệnh, kí tự đặc biệt Một vài việc lọc liệu thực toàn ứng dụng( không lưu liệu có dấu ‘ vào sở liệu) vài kiểu liệu nhập vào( dấu “,” địa mail).VD: Trong viết sở liệu hướng ứng dụng, hay triển khai ứng dụng mã nguồn mở cần ý đến vấn đề thiết kế để xác minh đầu vào Biện pháp giúp bảo vệ bạn từ công SQL Injection không trở thành mồi ngon cho attacker Hiểu biết cách phòng chống quan trọng bạn triển khai ứng dụng thương mại Chỉ cần nhớ nhà phát triển có khả vướng lỗi lập trình bạn phải thực bước để sửa lỗi Và cần làm điều chưa có lỗ hổng công khai cho ứng dụng 3.2.7 Một số công cụ quét kiểm tra lỗi SQL Injection hiệu Acunetix Web Vulnerability Scanner:Một phiên thương mại chương trình tìm kiếm lỗ hổng bảo mật ứng dụng Web Acunetix WVS tự động kiểm tra ứng dụng Web để tìm kiếm lỗ hổng bảo mật SQL Injection, hay Cross-Site Scripting, tìm kiếm sách mật đăng nhập phương thức xác thực vào Web Site Với giao diện đồ họa thân thiện, Report đầy đủ cho phép bạn kiểm tra vấn đề máy chủ ứng dụng Web Để tìm hiểu rỏ bạn truy cập vào: http:// www.acunetix.com/vulnerability-scanner/ N-Stealth: Là phiên thương mại, ứng dụng cho việc tìm kiếm lỗ hổng bảo mật máy chủ Web Phần mềm tự động update thường xuyên phần mềm miễn phí 24 Whisker/libwhisker hay Nikto, nhiều lỗi Web không phát kịp thời nhanh chóng Phần mềm bao gồm 30.000 lỗ hổng Scan khai thác trực tiếp, với hàng tá cập nhật hàng ngày Dễ dàng triển khai kết hợp với Scan lỗ hổng bảo mật như: SQL Injection, Nessus, ISS Internet Scanner, Retina, SAINT Sara, bao gồm tính khác N-sealth phiên dành riêng cho Windows download Source Trang chủ: http://www.nstalker.com/products/ 25 CHƯƠNG : KẾT LUẬN An ninh mạng phương pháp công Internet phát triển nhanh chóng, ngày hoạt động phức tạp quy mô , làm tổn hại tạo nhìn “không tích cực” cho ứng dụng mạnh mẽ Internet , gây tổn thất nghiêm trọng ứng dụng hoạt động Internet Đối với SQL Injection, phương pháp công phổ biến nay, Hackers sử dụng nhiều để công trang website Đồ án nêu hình thức công phổ biến SQL Injection Đưa vấn đề thực tế phương pháp phòng chống hiệu Tuy nhiên, qua thời gian nghiên cứu đề tài kết hợp với kiến thức học nhà trường giúp em tìm hiểu khía cạnh vấn đề Song thời gian trình độ có hạn nên chắn báo cáo nhóm em không tránh khỏi thiếu sót Rất mong nhận quan tâm đóng góp ý kiến bảo thầy Xin chân thành cảm ơn thầy! 26 TÀI LIỆU THAM KHẢO [1] E H a Countermeasures, CEHv8 Module 14 SQL Injection, Copyright © by EC-C0UnCil [2] C S O S I ATTACKS [Online] Available: https://zenodo.org/record/56935/files/23.pdf [3] "Detecting SQL Injection Attacks - DB Networks," DB Networks, [Online] Available: http://www.dbnetworks.com/pdf/sql-injection-detection-web-environment.pdf [4] T WORLD, "Barclays: 97 percent of data breaches still due to SQL injection," [Online] Available: http://www.techworld.com/news/security/barclays-97-percent-of-data-breachesstill-due-sql-injection-3331283/ 27 [...]... Injection Blind SQL Injection được sử dụng khi một ứng dụng web không dễ bị tấn công bởi SQL Injection Trong nhiều khía cạnh, SQL Injection và blind Injection là giống nhau, nhưng vẫn có một sự khác biệt nhỏ SQL Injection phụ thuộc vào các thông báo lỗi nhưng blind injection thì không Không phải bất kỳ ứng dụng web nào cũng dễ bị tấn công SQL Injection, lúc này ta sử dụng blind SQL Injection để có... với SQL Injection, là phương pháp tấn công phổ biến nhất hiện nay, được các Hackers sử dụng khá nhiều để tấn công các trang website Đồ án đã nêu được các hình thức tấn công phổ biến của SQL Injection Đưa ra các vấn đề thực tế và phương pháp phòng chống được hiệu quả Tuy nhiên, qua thời gian nghiên cứu đề tài kết hợp với các kiến thức đã học ở nhà trường đã giúp em tìm hiểu các khía cạnh của vấn đề Song... truy nhập CHƯƠNG 3: CÁC DẠNG TẤN CÔNG VÀ BIỆN PHÁP NGĂN CHẶN SQL INJECTION 3.1 CÁC DẠNG TẤN CÔNG SQL INJECTION 3.1.1 System Stored Procedure (Hệ thống thủ tục lưu trữ) Những kẻ tấn công cố gắng khai thác các thủ tục lưu trữ dữ liệu của hệ thống Sau đó xác định loại cơ sở dữ liệu và sử dụng kiến thức để xác định các thủ tục lưu trữ tồn tại Tấn công vào 17 thủ tục lưu trữ kẻ tấn công có thể tạo ra lỗi tràn... dữ liệu nhạy cảm hoặc phá hủy dữ liệu Những kẻ tấn công có thể đánh cắp dữ liệu bằng cách thực hiện một loạt các câu hỏi True hoặc False thông qua các câu lệnh SQL 3.2 CÁC BIỆN PHÁP NGĂN CHẶN SQL INJECTION Trong hầu hết trình duyệt, những kí tự nên được mã hóa trên địa chỉ URL trước khi sử dụng Việc tấn công theo SQL Injection dựa vào những câu thông báo lỗi do đó việc phòng chống hay nhất là không... Trong loại tấn công này, những kẻ tấn công sẽ cố gắng thu thập đầy đủ các thông tin về cấu trúc back-end của cơ sở dữ liệu một trang web Những kẻ tấn công sẽ gửi một câu lệnh truy vấn SQL không hợp lệ hoặc không đúng logic đến cơ sở dữ liệu của trang web, một số máy chủ sẽ trả về những thông báo lỗi mặc định và những kẻ tấn công có thể lợi dụng các điểm yếu này Từ việc khai thác các thông báo lỗi mặc... mặc định những kẻ tấn công có thể khai thác được số bảng, số cột, của cơ sở dữ liệu Có nhiều cách để gửi một lệnh truy vấn không hợp lệ hay bất hợp pháp như: thêm kí tự (‘) vào cuối câu lệnh truy vấn, sử dụng toán tử AND để thực hiện một câu lệnh sai logic, sử dụng order by hay mệnh đề having để máy chủ trả về một thông báo lỗi 3.1.3 Tautology (Tấn công mệnh đề luôn đúng) Các cuộc tấn công này hoạt động... có thể ngăn chặn các tấn công giữa attacker với ứng dụng, giữa ứng dụng với database và ngay cả trên chính bản thân database đó Những bộ lọc, bộ quét và những điểu khiển truy cập cơ sở dữ liệu sẽ làm cho ứng dụng web khó bị tấn công hơn 3.2.6 Cải thiện dữ liệu nhập vào Cách phòng chống thực sự để chống lại SQL Injection là kiểm tra và làm đúng các câu truy vấn Như chúng ta đã đề cập, lỗi này là do... phòng chống như thế này Nó có thể tránh được những tấn công đơn giản như là thêm dấu ‘(dấu nháy) vào cuối đường dẫn Vì phương pháp tìm kiếm ứng dụng bị lỗi của những tấn công như thế dựa vào những dấu hiệu trả về của ứng dụng hoặc trực tiếp từ database Ta có thể chỉ đưa ra những thông báo chung chung hoặc định hướng trở lại trang ban đầu(redirect) Trong trường hợp này, công việc tìm kiếm lỗi và xác định... hạn nên chắc chắn bài báo cáo của nhóm em không tránh khỏi những thiếu sót Rất mong nhận được sự quan tâm đóng góp ý kiến và chỉ bảo của thầy Xin chân thành cảm ơn thầy! 26 TÀI LIỆU THAM KHẢO [1] E H a Countermeasures, CEHv8 Module 14 SQL Injection, Copyright © by EC-C0UnCil [2] C S O S I ATTACKS [Online] Available: https://zenodo.org/record/56935/files/23.pdf [3] "Detecting SQL Injection Attacks - DB... Trong trường hợp này, công việc tìm kiếm lỗi và xác định mục tiêu trở nên cực khó đối với attacker Tuy nhiên attacker luôn tạo ra những công nghệ tìm kiếm lỗi tinh vi hơn, tốt hơn, để gián tiếp xác định dấu hiệu trả về Tấn công kiểu này còn được gọi là “Blind SQL Injection 22 3.2.5 Phòng chống từ bên ngoài Giải pháp này sẽ dùng tường lửa đặc biệt để bảo vệ bạn khỏi những ứng dụng dùng việc truy cập ... lỗi bảo mật) - Sử dụng ứng dụng Web từ mã nguồn mở (Thường không theo dõi cập nhật vá lỗi bảo mật) - Phát triển ứng dụng Web từ ứng dụng mở khác (Trường hợp thường không kiểm tra lỗi bảo mật. .. trình tìm kiếm lỗ hổng bảo mật ứng dụng Web Acunetix WVS tự động kiểm tra ứng dụng Web để tìm kiếm lỗ hổng bảo mật SQL Injection, hay Cross-Site Scripting, tìm kiếm sách mật đăng nhập phương thức... trang web 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 tên đăng nhập mật Sau người dùng nhập thông tin vào, hệ thống kiểm tra tên đăng nhập mật có hợp

Ngày đăng: 08/12/2016, 21:54

Từ khóa liên quan

Mục lục

  • LỜI MỞ ĐẦU

  • LỜI CẢM ƠN

  • NHẬN XÉT

  • CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI

    • 1.1 LÝ DO CHỌN ĐỀ TÀI

    • 1.2 PHẠM VI NGHIÊN CỨU

    • CHƯƠNG 2: TỔNG QUAN VỀ SQL INJECTION

      • 2.1 TỔNG QUAN VỀ ỨNG DỤNG WEB .

        • 2.1.1 Tổng quan và quá trình hoạt động của một ứng dụng web

        • 2.1.2 Các vần đề liên quan đến ứng dụng web

        • 2.2 TỔNG QUAN VỀ SQL INJECTION

          • 2.2.1 Khái niệm về SQL Injection

          • 2.2.2 Các mối đe dọa chính từ SQL Injection

          • 2.3 MỘT SỐ THUẬT NGỮ LIÊN QUAN

          • CHƯƠNG 3: CÁC DẠNG TẤN CÔNG VÀ BIỆN PHÁP NGĂN CHẶN SQL INJECTION

            • 3.1 CÁC DẠNG TẤN CÔNG SQL INJECTION

              • 3.1.1 System Stored Procedure (Hệ thống thủ tục lưu trữ)

              • 3.1.2 Illegal/Logically Incorrect Query (Lệnh truy vấn bất hợp pháp hay không đúng logic)

              • 3.1.3 Tautology (Tấn công mệnh đề luôn đúng)

              • 3.1.4 Union Query

              • 3.1.5 Blind SQL Injection

              • 3.2 CÁC BIỆN PHÁP NGĂN CHẶN SQL INJECTION

              • TÀI LIỆU THAM KHẢO

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

Tài liệu liên quan