Giao diện thực hiện chèn thêm truy vấn làm thay đổi dữ liệu

Một phần của tài liệu Nghiên cứu tìm hiểu một số dạng tấn công sql injection vào hệ quản trị csdl microsoft sql server (Trang 71 - 87)

3.2.3.3. Áp dụng cách tấn cơng SQL injection nhằm xóa tồn bộ dữ liệu trong bảng

Một trong những hậu quả nghiêm trong khi tấn công SQL injection thành cơng đó là khả năng kẻ tấn cơng có thể xóa tồn bộ dữ liệu trong cơ sở dữ liệu.

Trong ví dụ này user01 có thể thêm đoạn “ ''; delete from tblNguoidung;-- ” vào câu lệnh ban đầu

“ exec sp_XemNguoiDung 'user01' ” Khi đó câu lệnh sau khi đã bị thay đổi sẽ như sau

Nghiên cứu tìm hiểu một số dạng tấn cơng SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

Và kết quả là toàn bộ dữ liệu trong bảng tblNguoidung đã bị xóa.

Nghiên cứu tìm hiểu một số dạng tấn cơng SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

KẾT LUẬN

Sau khi thực hiện đề tài tốt nghiệp: “Nghiên cứu và tìm hiểu một số

dạng tấn cơng SQL Injection vào hệ quản trị cơ sở dữ liệu Microsoft SQL Server”. Em nhận thấy mình đã hiểu và nắm rõ hơn về nguy cơ, điểm yếu,

cách thức tấn công, cũng như thấy được ưu điểm của hệ quản trị cơ sở dữ liệu Microsoft SQL Server. Với lòng đam mê nghiên cứu, đến nay đồ án của em đã hoàn thành đúng tiến độ và đạt được những kết quả sau:

• Tìm hiểu chung về SQL Server và cơ chế mã hóa dữ liệu trong suốt trong SQL Server 2008.

• Tìm hiểu các kỹ thuật khác nhau của tấn công SQL injection. Hiểu được cơ chế hoạt động của tấn cơng, tác hại có thể gây ra nếu như các tấn cơng này được thực hiện. Từ đó giúp em tìm hiểu thêm các giải pháp nhằm chống lại các kỹ thuật tấn cơng này.

• Tạo kịch bản demo đơn giản và xây dựng một chương trình demo đơn giản ứng dụng cơ sở dữ liệu SQL Server, sau đó áp dụng một kỹ thuật tấn cơng SQL injection vào ứng dụng này. Chương trình demo này thực hiện chức năng là gửi tin nhắn của người dùng cho nhau. Ứng dụng thực hiện gọi các thủ tục lưu trữ (stored procedures) mà đã được xây dựng trên SQL Server. Thủ tục lưu trữ là đối tượng mà tấn cơng SQL injection có thể dựa vào đấy để thực hiện. Bằng cách chèn thêm dữ liệu cho các đầu vào của các thủ tục này, kẻ tấn cơng có thể hồn tồn xem được các dữ liệu riêng tư khác một cách bất hợp pháp.

Hướng phát triển đề tài: Có rất nhiều các phương pháp tấn cơng khác

nhau được thực hiện nhằm chống lại cơ sở dữ liệu. Tấn công SQL Injection được thực hiện rất đa dạng và áp dụng trên nhiều hệ quản trị khác nhau như Oracle, SQL Server, mysql , db2… Tùy thuộc vào các hành xử của từng hệ quản trị mà cơ chế cụ thể của các kỹ thuật tấn công SQL Injection là khác nhau.

Sau khi đã tìm hiểu được cơ chế hoạt động và các tác hại do SQL Injection gây ra. Chúng ta cần phải xem xét các giải pháp ngăn chặn nó để

Nghiên cứu tìm hiểu một số dạng tấn cơng SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

bảo vệ cơ sở dữ liệu. Người phát triển các ứng dụng cần phải phân tích, thiết kế và xem xét xây dựng ứng dụng có thể bảo vệ chống được tấn cơng, như kiểm tra giá trị các đầu vào, hạn chế tối đa quyền thực thi người dùng thường….

Hướng phát triển của đề tài là thực hiện tìm hiểu, phân tích các cơ chế phát hiện và ngăn chặn tự động tấn công SQL Injection mà đã được sử dụng trong một số sản phẩm hiện có. Từ đó có thể dần dần xây dựng chương trình ứng dụng thực hiện phát hiện và ngăn chặn tự động tấn công SQL Injection. Tuy nhiên chúng ta vẫn phải xem xét, tìm hiểu và cập nhật các kỹ thuật mới trong tấn cơng SQL Injection để có thể đưa ra giải pháp phát hiện và ngăn chặn ngày một hiệu quả hơn.

Tuy nhiên, do nội dung của báo cáo khá rộng và cần nhiều kiến thức mới, thời gian và kiến thức còn hạn chế, nên chắc chắn đề tài không tránh khỏi những thiếu sót. Em rất mong nhận được sự đóng góp ý kiến của thầy cơ giáo và bạn bè để đồ án của em hoàn thiện hơn.

Cuối cùng một lần nữa,em xin được gửi lời cảm ơn và lòng biết ơn chân thành tới thầy giáo PGS.TS Lê Mỹ Tú là người trực tiếp hướng dẫn em. Thầy ln đưa ra những nhận xét, những góp ý và chỉ ra những chỗ sai, chỗ thiếu để đồ án của em được hoàn thành. Em cám ơn các thầy cơ khoa An Tồn Thơng Tin nói riêng và tồn thể các thầy cơ, các bác cán bộ nhân viên tại Học Viện Kỹ Thuật Mật Mã nói chung đã tạo điều kiện tốt nhất cho chúng em học tập và nghiên cứu trong suốt những năm học qua. Em cũng xin gửi lời cảm ơn đến gia đình và bạn bè đã động viên em hoàn thành đồ án tốt nghiệp.

Nghiên cứu tìm hiểu một số dạng tấn cơng SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

PHỤ LỤC

Dưới đây là một số các thủ tục, hàm chính được xây dụng trong chương trình.

1> Thủ tục kết nối cơ sở dữ liệu SQL Server

Public Function connect_SQLServer(sServer As String, sUsr As String, sPwd As String, DBDefault As String, WindowsAuthentication As Boolean) As Boolean

Dim Provider As String Dim sDefDb As String On Error GoTo MyErr

connect_SQLServer = False bOK = False

Provider = "Provider=SQLOLEDB.1;" sDefDb = "QuanLyTinNhan"

If WindowsAuthentication = True Then

Provider = Provider & "Integrated Security=SSPI;" Provider = Provider & "Persist Security Info=False;" Else

Provider = Provider & " Password=" & sPwd & ";User ID=" & sUsr & ";"

Provider = Provider & "Persist Security Info=True;" End If

Nghiên cứu tìm hiểu một số dạng tấn cơng SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

If sDefDb <> "" Then

Provider = Provider & "Initial Catalog=" & sDefDb & ";" End If

Provider = Provider & "Data Source=" & sServer & ";" cn.CursorLocation = adUseClient

'sqlenc.CommandTimeout = 30 * 2 If cn.State = 1 Then cn.Close cn.Open Provider connect_SQLServer = True cSERVER = sServer cUSER = sUsr bOK = True Exit Function MyErr: cSERVER = "" cUSER = "" bOK = False

MsgBox Err.Description, , "Thong bao" End Function

2> Thủ tục thực hiện lưu thông tin cá nhân

Thủ tục thực hiện xây dựng câu truy vấn Private Sub chkDemo_Click()

Nghiên cứu tìm hiểu một số dạng tấn công SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

Dim sGioitinh As String Dim sNgaysinh As String Dim sDiachi As String Dim sSQL As String

On Error GoTo MyErr

sTen = Trim(cboTen.List(cboTen.ListIndex())) sNgaysinh = Trim(txtNgaySinh.Text)

If sNgaysinh = "" Or IsDate(sNgaysinh) = False Then

MsgBox "Ngay sinh nhap sai", vbOKOnly + vbExclamation, "Thong bao"

Exit Sub End If

sGioitinh = cboGioiTinh.List(cboGioiTinh.ListIndex) sDiachi = Trim(txtDiachi.Text)

sSQL = "exec [QuanLyTinNhan].[dbo].[sp_ThemNguoidung] '" & sTen & "', '" & sNgaysinh & "', '" & sGioitinh & "', '" & sDiachi & "'"

txtTruyvan.Text = sSQL

If chkDemo.Value = 1 Then fraDemo.Visible = True Me.Height = 6375 Else

Nghiên cứu tìm hiểu một số dạng tấn cơng SQL Injection vào hệ quản trị CSDL Microsoft SQL Server fraDemo.Visible = False Me.Height = 4815 End If bTiep = True Exit Sub MyErr:

MsgBox Err.Description, vbOKOnly + vbExclamation, "Thong bao" End Sub

Thủ tục thực hiện ghi thông tin cá nhân

Private Sub cmdOK_Click() Dim sTen As String

Dim sGioitinh As String Dim sNgaysinh As String Dim sDiachi As String Dim sSQL As String

On Error GoTo MyErr bTiep = False

chkDemo.Value = 0 chkDemo_Click

If bTiep = False Then Exit Sub

sSQL = txtTruyvan.Text cn.Execute sSQL

Nghiên cứu tìm hiểu một số dạng tấn công SQL Injection vào hệ quản trị CSDL Microsoft SQL Server cboTen.ListIndex = 0 txtNgaySinh.Text = "" cboGioiTinh.ListIndex = 0 txtDiachi.Text = "" txtTruyvan.Text = "" Exit Sub MyErr:

MsgBox Err.Description, vbOKOnly + vbExclamation, "Thong bao" End Sub

3> Thủ tục hiển thi thông tin cá nhân

Private Sub Form_Load() Dim sSQL As String

On Error GoTo MyErr

sSQL = "exec sp_XemNguoiDung '" & cUSER & "'" txtTruyvan1.Text = sSQL

cmdTruyVan1_Click Me.Height = 4410 Exit Sub

MyErr:

Nghiên cứu tìm hiểu một số dạng tấn công SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

End Sub

Private Sub optType_Click(Index As Integer) Dim sSQL As String

On Error GoTo MyErr

Select Case Index Case 0

sSQL = "exec sp_XemNguoiDung '" & cUSER sSQL = sSQL & "'' OR 1=1--'"

txtTruyVan2.Text = sSQL

Case 1

sSQL = "exec sp_XemNguoiDung '" & cUSER sSQL = sSQL & "''; delete from tblNguoidung;--'" txtTruyVan2.Text = sSQL

Case 2

sSQL = "exec sp_XemNguoiDung '" & cUSER

sSQL = sSQL & "''; update tblNguoidung set [Diachi]=''Du lieu bi thay doi'';--'"

txtTruyVan2.Text = sSQL

End Select

Nghiên cứu tìm hiểu một số dạng tấn cơng SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

MyErr:

MsgBox Err.Description, vbOKOnly + vbExclamation, "Thong bao"

End Sub

Private Sub cmdTruyVan1_Click() Dim sSQL As String

On Error GoTo MyErr sSQL = txtTruyvan1.Text Set rs = cn.Execute(sSQL)

Set grdNguoidung.DataSource = rs Exit Sub

MyErr:

MsgBox Err.Description, vbOKOnly + vbExclamation, "Thong bao" End Sub

Private Sub cmdTruyVan2_Click() Dim sSQL As String

On Error GoTo MyErr

sSQL = txtTruyVan2.Text Set rs = cn.Execute(sSQL)

Set grdNguoidung.DataSource = rs Exit Sub

Nghiên cứu tìm hiểu một số dạng tấn cơng SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

MyErr:

MsgBox Err.Description, vbOKOnly + vbExclamation, "Thong bao" End Sub

4> Thủ tục thực hiện gửi tin nhắn

Private Sub Form_Load() Dim sSQL As String

On Error GoTo MyErr

sSQL = "sp_TenNguoiDung" Set rs = cn.Execute(sSQL)

If rs Is Nothing Then Exit Sub

If rs.RecordCount <= 0 Then Exit Sub cboNguoiNhan.Clear

rs.MoveFirst

Do While Not rs.EOF

cboNguoiNhan.AddItem rs.Fields(1).Value rs.MoveNext Loop cboNguoiNhan.ListIndex = 0 Exit Sub MyErr:

Nghiên cứu tìm hiểu một số dạng tấn công SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

MsgBox Err.Description, vbOKOnly + vbExclamation, "Thong bao" End Sub

Private Sub cmdOK_Click() Dim sTen As String

Dim sTieuDe As String Dim sNoidung As String Dim sSQL As String

On Error GoTo MyErr

sTen = Trim(cboNguoiNhan.List(cboNguoiNhan.ListIndex())) sTieuDe = Trim(txtTieuDe.Text)

sNoidung = Trim(txtNoidung.Text)

sSQL = "exec sp_ThemTinNhan '" & cUSER & "','" & sTen & "','" & sTieuDe & "','" & sNoidung & "'"

cn.Execute sSQL cboNguoiNhan.ListIndex() = 0 txtTieuDe.Text = "" txtNoidung.Text = "" Exit Sub MyErr:

MsgBox Err.Description, vbOKOnly + vbExclamation, "Thong bao" End Sub

Nghiên cứu tìm hiểu một số dạng tấn công SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

Private Sub Form_Load() Dim sSQL As String On Error GoTo MyErr

sSQL = "exec sp_XemChiTiet '" & cUSER & "'" txtTruyvan1.Text = sSQL

cmdTruyVan1_Click chkInjection.Value = 0

Exit Sub MyErr:

MsgBox Err.Description, vbOKOnly + vbExclamation, "Thong bao"

End Sub

Private Sub chkInjection_Click() Dim sSQL As String

Dim sInject As String Dim bHien As Boolean

If chkInjection.Value = 1 Then bHien = True Else bHien = False End If txtTruyVan2.Visible = bHien

Nghiên cứu tìm hiểu một số dạng tấn cơng SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

cmdTruyVan2.Visible = bHien

sSQL = "exec sp_XemChiTiet '" & cUSER sSQL = sSQL & "'' OR 1=1--'"

txtTruyVan2.Text = sSQL

End Sub

Private Sub cmdTruyVan1_Click() Dim sSQL As String

On Error GoTo MyErr sSQL = txtTruyvan1.Text Set rs = cn.Execute(sSQL)

Set grdNguoidung.DataSource = rs Exit Sub

MyErr:

MsgBox Err.Description, vbOKOnly + vbExclamation, "Thong bao"

End Sub

Private Sub cmdTruyVan2_Click() Dim sSQL As String

On Error GoTo MyErr sSQL = txtTruyVan2.Text Set rs = cn.Execute(sSQL)

Nghiên cứu tìm hiểu một số dạng tấn cơng SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

Exit Sub

MyErr:

MsgBox Err.Description, vbOKOnly + vbExclamation, "Thong bao" End Sub

Nghiên cứu tìm hiểu một số dạng tấn công SQL Injection vào hệ quản trị CSDL Microsoft SQL Server

TÀI LIỆU THAM KHẢO

[1] Classification of SQL Injection Attacks and Countermeasures William G.J. Halfond, Jeremy

[2] Advanced SQL Injection In SQL Server Applications by Chris Anley [3] Transparent Data Encryption- Solution for Security of Database Contents

[4] Walters, Christian Kirisch, “Database Encryption and key management for Microsoft SQL Server 2008”, by Create Space, January 2010 Viegas, and Alessandro Orso College of Computing Georgia Institute of Technology

[5] The Database Hacker's Handbook: Defending Database Servers by David Litchfield

Một phần của tài liệu Nghiên cứu tìm hiểu một số dạng tấn công sql injection vào hệ quản trị csdl microsoft sql server (Trang 71 - 87)

Tải bản đầy đủ (DOC)

(87 trang)
w