1. Trang chủ
  2. » Công Nghệ Thông Tin

Đồ án nghiên cứu và phát triển thử nghiệm kỹ thuật phát hiện SQL injection

63 28 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

Thông tin cơ bản

Định dạng
Số trang 63
Dung lượng 3,91 MB
File đính kèm 47_TranDacTot.rar (10 MB)

Nội dung

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP.HCM KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN CHỈ Nghiên cứu phát triển thử nghiệm kỹ thuật phát SQL injection Sinh viên : Nguyễn Trung Kiên Lớp : 09DHBM3 Mã số sinh viên :2033181116 Sinh viên : Trương Hữu Phúc Lớp : 09DHBM3 Mã số sinh viên :2033181058 GIÁO VIÊN HƯỚNG DẪN Trần Đắc Tốt LỜI CẢM ƠN Chúng em xin gửi lời cảm ơn chân thành tới quý thầy cô khoa Công Nghệ Thông Tin trường Đại Học Cơng Nghiệp Thực Phẩm Thành phố Hồ Chí Minh hướng dẫn bảo, truyền đạt kiến thức kinh nghiệm cho chúng em Đặc biệt chúng em xin gửi lời cảm ơn sâu sắc đến thầy Trần Đắc Tốt , giáo viên hướng dẫn trực tiếp ,đã tạo hội cho chúng em phát triển ý tưởng đến mức cao nhất, dẫn dắt chúng em hoàn thành đồ án cách tốt Chúng em nỗ lực cho đồ án khơng thể tránh khỏi sai sót.Mong có thơng cảm ý kiến thầy đồ án hoàn thiện Sau cùng, em xin kính chúc q thầy giáo sức khoẻ, thành công công việc đời sống Chúng em xin chân thành cảm ơn TÓM TẮT Những năm trước website thường xuất dạng tĩnh, cho phép người dùng vào xem nội dung, tương tác nhiều với website, ứng dụng web ngày phát triển, người lập trình viên thường phát triển với website động tương tác với liệu, nhằm tối đa hoá việc giao tiếp với người dùng.Bên cạnh việc sử dụng website động dễ dẫn đến nguy bị công đến sở liệu ,lấy cắp thông tin khách hàng, chiếm quyền điều khiển trang web.Theo OWASP (Open Web Application Security Project) , mười lỗ hổng bảo mật ứng dụng web nguy hiểm , SQL injection đứng hàng A1 mối đe doạ số ứng dụng web Đồ án chúng em thực giải việc phát việc trang web bị công SQL injection cách sử dụng signature đặc biệt để kiểm tra đầu vào việc phát website có lỗ hổng sql injection cách thay thực thủ cơng việc kiểm định SQL injection cho tự động thực trả kết Đồ án trình bày theo bố cục sau: Chương 1: Tổng Quan SQL-injection Chương tổng quan công SQL-injection, thức công phân loại SQL-injection Chương 2: Khai Thác SQL-injection.Chương vào vấn đề khai thác lỗ hổng , phương thức công phân loại SQL-injection, Sử dụng số tính nâng cao DBMS để công SQL-injection Chương 3:Phòng Chống SQL-injection.Chương nghiên cứu cách phòng chống giảm thiểu tác động SQL-injection ứng dụng web, cách sử dụng IDS số phương pháp tránh SQL-injection MỤC LỤC DANH MỤC CÁC TỪ VIẾT TẮT TỪ VIẾT TẮT DBMS SQL WAF PDO CSDL TỪ ĐẦY ĐỦ Database Management System Structured Query Language Web application firewall PHP Data Object Cơ sở liệu NGHĨA Hệ quản trị sở liệu Ngôn ngữ truy vấn có cấu trúc Tường lửa ứng dụng web Lớp truy xuất liệu php Nơi tập hợp sở liệu MỤC LỤC BẢNG MỤC LỤC HÌNH CHƯƠNG I: TỔNG QUAN VỀ SQL-INJECTION 1.1 TỔNG QUAN VỀ ỨNG DỤNG WEB Ngày , ứng dụng web trở nên khơng thể thiếu , hữu mặt sống , từ nông nghiệp đến mua sắm, giải trí, tin tức , Và điều cách ứng dụng web không giống năm trước sử dụng kiểu web tĩnh mà sử dụng loại website động để tương tác với người dùng Để làm điều website phải có sở liệu đáp ứng cung cấp thông tin cụ thể mà phía người dùng u cầu.Để website tương tác với sở liệu cần có hệ quản trị sở liệu để quản lý website truy xuất liệu 1.1.1 SQL ? truy vấn động SQL ? SQL ( Structured Query Language) ngơn ngữ truy vấn có cấu trúc sử dụng để quản lý truy vấn thông tin từ sở liệu nhanh, giúp bảo trì thơng tin dễ dàng Truy vấn động SQL câu query tạo thời điểm chạy Ví dụ : người dùng nhập tham số tìm kiếm truy vấn chạy với giá trị Truy vấn SQL hữu ích việc tìm kiếm mục mà khơng biết rõ tên giá trị cần tìm kiếm.Thơng thường phần lớn trang web có mục tìm kiếm filter , từ việc tác động người dùng sở liệu trở nên gần 1.2 TỔNG QUAN VỀ SQL-INJECTION 1.2.1 KHÁI NIỆM SQL injection lỗ hổng ứng dụng web nằm bảng A1:Injection top 10 OWASP, lỗ hổng có khả cho phép công khai thác việc sử dụng truy vấn SQL để ‘tiêm’ thông qua liệu đầu vào ứng dụng web từ máy khách.Nếu khai thác thành công đọc liệu nhạy cảm , thực thao tác thay đổi thông tin database 1.2.2 NGUYÊN NHÂN Hầu hết liệu đầu kí tự đặc biệt có thực thay đổi liệu phía server, biến môi trường tham số dịch vụ hay chức hệ điều hành từ phía người dùng nhập vào,hiển nhiên nguyên nhân bất cẩn người lập trình viên, khơng có thực lọc liệu ràng buộc kỹ liệu đầu vào cho input đầu ứng dụng Khơng giới hạn quyền kiểm sốt database user Database Management System DBMS đa số thường dùng user mặc định có tồn quyền kiểm sốt database 1.2.3 HẬU QUẢ - Tấn cơng SQL injection cho phép kẻ cơng giả mạo danh tính, xáo trộn liệu có nghiêm trọng xoá hết tất liệu ứng dụng - SQL injection thường dẫn đến việc deface trang web cách dễ dàng , gây ảnh hưởng tới uy tín cơng ty tổ chức - Có tiết lộ liệu bên không cho phép SQL injection có mức độ tác động nghiêm trọng Kẻ cơng xa khơng dừng lại viêc thay đổi database mà thể đọc file system, thực chạy lệnh hệ điều hành,tạo webshell Có thể thực Remote Desktop Protocol (RDP) từ xa Dẫn đến hậu mức cao Remote Code Execution(RCE) Tổ chức OWASP thống kê rủi ro 10 lỗ hổng an ninh trong nhiều năm SQL injection nằm top CHƯƠNG II: KHAI THÁC SQL-INJECTION 2.1 CÁC KIỂU TẤN CƠNG SQL-INJECTION Hình :Các kiểu công SQL- injection SQL Injection chia thành loại chính: In-band SQLi : Đây dạng cơng đơn giản phổ biến để khai thác lỗ hổng SQL injection Dạng chia thành dạng nhỏ Error-based Union-based Với dạng Error-based :Việc công dựa vào thông báo lỗi trả người dùng cố tình truy vấn sai ,dựa vào thông báo lỗi, kẻ công biết thuộc tính database thơng qua lỗi xuất hình Với dạng Union-based: Là kỹ thuật sử dụng tính tốn tử UNION ngôn ngữ SQL cho phép kết hợp truy vấn nhiều câu truy vấn SQL trả kết truy vấn kết Blind SQLi: Đây kiểu công SQL injection sử dụng mệnh đề để đốn có nghĩa dạng công không lỗi ,việc cơng phải lần mị bước để thực hiện, Có dạng : Blind-boolean-base: Kỹ thuật dựa vào việc gửi truy vấn tới sở liệu buộc trả kết khác phụ thuộc vào câu truy vấn true hay false,cơ việc so sánh sai để tìm ký tự thơng tin tên database, tên bảng , Do ký tự trải dài với giá trị bao gồm, chữ thường chữ hoa, số số ký tự đặc biệt nên việc khai thác Blind-boolean-base tay nhiều thời gian Blind-Time-base: Kỹ thuật giống boolean khác cách suy diễn, kỹ thuật dựa vào thời gian mà ứng dụng xử lý kết trả Từ xác định câu truy vấn cho kết true false Hình 2: Hình Thức Tấn Cơng SQL-Injection Thơng thường Out-of-band SQL injection Đây dạng khai thác lọc liệu từ sở liệu thông qua kênh gửi giao thức DNS, HTTP Sử dụng số dịch vụ chạy server để trích xuất liệu từ máy chủ.Việc lợi dụng số dịch vụ server phụ thuộc vào công nghệ sử dụng backend Nguyên nhân - Thiếu xác thực đầu vào web Môi trường mạng phép máy chủ sở liệu Có đủ quyền để gửi requests Kết việc công bắt proxy máy chủ lắng nghe 2.2 Những parameter thường bị tiêm sqli Một số parameter thường gặp: Id,cat,page,view,data,typeboard,prodID,uid,product_id,pr,tid,fid,userID, EventID, idCategory, section, HTTP HEADER Form (HTTP POST) Một cách dễ hiểu chèn truy vấn vào nội dung gói tin, ví dụ hình sau: Mã hố lưu lượng mạng ngăn khơng cho người khác xem liệu từ gói tin Hình 9: Snort’s Packet-Sniffing 3.2.3.2 Preprocessor( module tiền xử lý) Đây thành phần hay plugin sử dụng với Snort để xem xét , xếp thay đổi gói liệu trước giao gói cho detection engine Một vài preprocessor cịn thực tìm dấu hiệu bất thường tiêu đề gói sinh cảnh báo Module gồm nhiệm vụ : Kết hợp lại gói tin : Khi liệu lớn gửi , thông tin khơng đóng gói vào tồn vào gói tin mà thực phân mảnh , chia thành nhiều gói tin gửi Khi snort nhận gói tin này, phải thực kết nối lại để có gói tin ban đầu.Module tiền xử lý giúp snort hiểu phiên làm việc khác Giải mã chuẩn hố giao thức (decode/normalize): cơng việc phát xâm nhập dựa dấu hiệu nhận dạng nhiều thất bại kiểm tra giao thức có liệu biểu diễn nhiều dạng khác Hình 10: Snort’s Preprocessor Phát xâm nhập bất thường ( nonrule/ anormal) : plugin dạng thường để xử lý với xâm nhập khó phát luật thơng thường - Các preprocessor : Frag2 Stream4 HTTP Inspect RPC_Decode Telnet_Decode ARPSpoof ASN1_Decode Flow SFPortscan Performance Monitor 3.2.3.3 Detection engine Là thành phần quan trọng cấu trúc snort Nó chịu trách nhiệm phát hành vi bất thường gói tin dựa rule snort Nếu gói tin khớp với rule , hành động định sẵn rule thực thi Bản thân quy tắc bao gồm hai phần : - Rule header: Chứa thông tin hành động mà luật thực phát có xâm nhập nằm gói tin chứa tiêu chuẩn để áp dụng luật với gói tin loại gói tin mạng (TCP,UDP,ICMP,etc ) , nguồn địa IP đích cổng Cấu trúc header : Action | Protocol | Address | Port | Direction | Address | Port o o o o o Action : Hành động phát dấu hiệu bất thường Protocol : Giao thức mạng Address : Địa nguồn địa đích Port : Port nguồn port đích Direction : Chỉ đâu nguồn đâu đích ( ->) VD : Alert ICMP any any -> any any - Rule Option: Chứa nội dung thông điệp cảnh báo thơng tin có thêm số option đính kèm Một option có thành phần : từ khoá đối số Các đối số phân biệt với từ khoá dấu hai chấm o Msg : thông điệp hiển thị phát bất thường o Ack : Trường sequence number người gửi mong đợi Trường có ý nghĩa cờ flag trường TCP thiết lập o Content : Một đặc tính quan trọng Snort khả tìm thấy mẫu liệu gói tin Mẫu tồn dạng chuỗi ASCII kí tự thập lục phân Giống virut, kẻ xâm nhập có dấu hiệu từ khóa content để tìm dấu hiệu gói tin o Offset : Từ khóa offset sử dụng kết hợp với từ khóa content Sử dụng từ khóa này, bạn bắt đầu tìm kiếm từ vị trí xác định so với vị trí bắt đầu gói tin Sử dụng số đối số từ khóa o Dsize : Từ khóa dsize sử dụng để tìm chiều dài phần liệu gói tin Nhiều cách cơng sử dụng lổ hổng tràn đệm cách gửi gói tin có kích thước lớn Sử dụng từ khóa này, bạn tìm thấy gói tin có chiều dài liệu lớn nhỏ số xác định o Sid : Sử dụng SID, công cụ ACID biểu diễn luật thật tạo cảnh báo cụ thể o Rev : Từ khóa rev thêm vào option luật Snort để số revision luật Nếu bạn cập nhật luật, bạn sử dụng từ khóa để phân biệt phiên Các module output sử dụng số để nhận dạng số revision o Priority : Từ khóa priority gán độ ưu tiên cho luật o Và số loại khác Hình 11: Snort’s Detect-engine Khả xử lý module phát phụ thuộc vào nhiều yếu tố : số lượng ,tốc độ hệ thống, băng thông mạng Module detect engine có khả tách phần gói tin áp dụng luật lên phần gói tin: - IP header Header lớp transport (TCP,UDP) Header lớp Application ( DNS header, FTP header, HTTP header ) Phần tải gói tin (packet payload) Do luật snort đánh số thứ tự ưu tiên nên gói tin bị phát nhiều luật khác , cảnh báo đưa dựa theo luận có mức ưu tiên cao 3.2.3.4 Alerting /Logging Component Nếu gói tin phù hợp với rule detect engine, cảnh báo phát sinh Cảnh báo gửi tới tập tin log thông qua kết nối mạng.Unix socket hay Windows Popup hay SNMP Traps Các cảnh báo lưu CSDL SQL hay Mysql Postgres Hình 12: Snort’s Alert Log 3.2.4 Sử dụng snort để phát sql injection Phần sử dụng số quy tắt lấy từ [14] thực phát công sql injection mơ hình 3.2.4.1 Các rules sử dụng Trong Phần sử dụng payload • ' or 1=1 • " OR = • union select * from Sử dụng rules + rules 1: (msg: "Error Based SQL Injection Detected"; content: "%27" ; sid:100000011; ) Thử nghiệm : Lần 1: tiêm câu lệnh ' or 1=1 - Kết quả: Snort phân tích cơng sql Lần 2: tiêm câu lệnh " or 1=1 - Kết phát dấu hiệu công sql injection Lần tiêm câu lệnh union select * from Kết : Với lần tiêm cuối, việc snort không đưa cảnh báo cấu trúc rule rule cảnh báo phát ký tự ' %27 Phân tích rule : - Với rule phát dấu ' đưa cảnh báo Đơi việc phân tích q sớm thường xuyên đưa thông báo giả Double encode url bypass rule + rules 2: alert tcp any any -> any 80 (msg:"UNION SQL Injection – UNION SELECT - SQL"; flow:established,to_server; pcre:"/((\?)[^\n]*(\=)[^\n]*((\%55)|(u)|(\%75))((\%4e)|(n)|(\ %6e))((\%69)|(i)|(\%49))((\%6f)|(o)|(\%4f))((\%4e)|(n)|(\%6e)))/i" ; classtype: Webapplication-attack; sid:1000005; rev:1;) Thử nghiệm : Lần 1: tiêm câu lệnh ' or 1=1 - Kết Mặc dù payload chèn thành công trả thông tin film mà snort không trả cảnh báo Lần 2: tiêm câu lệnh ''or 1=1 - Kết : Lần 3: tiêm câu lệnh union select * from Kết quả: Sau lần thử nghiệm với payload với rules thứ phát payload thứ , lý cấu trúc rule đưa thông báo lỗi với từ union ,và phát từ union url encode qua lần phát Phân tích rule: Rule phát sql injection từ union ,mặc dù độ xác thơng báo đưa lớn bỏ qua số trường hợp chèn vào payload thứ Mắc dù payload phát url encode qua lần url encode từ lần thứ trở rule khơng phát DANH MỤC TÀI LIỆU THAM KHẢO [1] Web Application Penetration Testing ,Module SQL injection [2] https://github.com/rapid7/metasploit-framework/tree/master/data/exploits/mysql [3] https://www.w3resource.com/sql/sql-injection/sql-injection.php [4] https://www.junookyo.com/2012/06/sqli-bypass-waf-web-application.html [5] https://securityforall.wordpress.com/category/hack/hack-sql-injection/ [13] Snort IDS and IPS Toolkit (Jay Beale's Open Source Security) by Brian Caswell (Author), Jay Beale (Author), Andrew Baker (Author) [14] Detecting SQL injection attacks using SNORT IDS [15]https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_She et.html [16]Bypassing Web Application Firewalls- Pavol Lupták [17] https://github.com/payloadbox/sql-injection-payload-list ... PHẦN MỀM PHÁT HIỆN LỖ HỔNG SQL- INJECTION 2.8.1 Giới thiệu phần mềm phát lỗ hổng SQLI Phần mềm quét phát lỗ hổng SQLi phần mềm phát đánh giá lỗ hổng SQLi hệ thống ứng dụng web.Lỗ hổng SQLi thường... tiến hành thử nghiệm giải pháp WAF.Sử dụng công nghệ SQL injection Cross-site Script , nhóm nghiên cứu thử nghiệm thành công phương thức Bypass qua WAF , trích dẫn SQL injection SQL Injection. .. nhiều năm SQL injection nằm top CHƯƠNG II: KHAI THÁC SQL- INJECTION 2.1 CÁC KIỂU TẤN CÔNG SQL- INJECTION Hình :Các kiểu cơng SQL- injection SQL Injection chia thành loại chính: In-band SQLi : Đây

Ngày đăng: 22/12/2021, 21:26

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w