Giao diện chương trình demo

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 64)

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

Hình 3.2. Giao diện kết nối tới SQL Server

• Chức năng đăng ký thơng tin cá nhân:

Hình 3.3. Giao diện đăng ký thơng tin cá nhâ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

Hình 3.4. Giao diện thơng tin cá nhân

• Chức năng gửi tin nhắn cho người dùng, người dùng user01 gửi tin nhắn tới user02

Hình 3.5. Giao diện gửi tin nhắ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

Hình 3.6. Giao diện gửi tin nhắn

3.2.3. Áp dụng thức tấn cơng SQL injection trong ứng dụng

Em xin trình bày những cách áp dụng đơn giản SQL injection vào trong tham số của thủ tục lưu trữ mà ứng dụng sử dụng, để thực hiện các mục đích khác nhau.

3.2.3.1. Áp dụng cách tấn cơng SQL injection nhằm làm vơ hiệu hóa điều kiện truy vấn

Trong kịch bản này, user01, user02, user03, user04 có thể gửi tin nhắn cho nhau. Người dùng user01 chỉ có thể đọc được tin nhắn mà người khác gửi cho mình, cịn khơng thể đọc được các tin nhắn của user02, user03, user04, ví dụ như hì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

Hình 3.7. Hiển thị tin nhắn.

Trong hình trên, người gửi là user04 và người nhận là user01.

Thủ tục sp_XemChiTiet sẽ hiện thị các tin nhắn của người dùng, khi đó thủ tục này sẽ được gọi bởi câu truy vấn sau : “ exec sp_XemChiTiet ‘user01’ và được thể hiện như hì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

Khi đó user01 này có thể thực hiện SQL injection vào tham số đầu vào của thủ tục này, nhằm xem toàn bộ nội dung của các tin nhắn mà user01 không được phép. Câu truy vấn sau khi được sửa đổi như sau:

exec sp_XemChiTiet 'user01'' OR 1=1--'

và kết quả của câu truy vấn này sẽ được hiển thị như hình sau:

Hình 3.9. Danh sách tồn bộ các tin nhắn

Như vậy user01 đã có thể xem tin nhắn mà user03 gửi cho user02, với tiêu đề của tin nhắn là TongKet.

Trong ứng dụng trên, chỉ bằng cách sử dụng kỹ thuật SQL injection đơn giản mà người dùng bình thường cũng có thể truy xuất tồn bộ dữ liệu.

3.2.3.2. Áp dụng cách tấn công SQL injection nhằm làm thay đổi dữ liệu trong bảng trong bảng

Mỗi người dùng đều có các thơng tin cá nhân liên quan, tùy theo mức độ quan trọng của thơng tin mà thơng tin này có thể được cơng bố hay giữ bí mật. Giả sử các thơng tin về người dùng user01 được giữ bí mật, và người dùng khác không được phép xem. Trong ứng dụng demo trên người dùng có thể sử dụng thủ tục sp_XemNguoiDung để xem thơng tin cá nhân của mình, ví dụ như hì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

Hình 3.10. Giao diện hiển thị thơng tin cá nhân

User01 có thể thực hiện một tấn cơng SQL injection, để xem được nội dung thông tin cá nhân của người dùng khác theo cách trên. Kết quả như hình sau.

Hình 3.11. Thơng tin cá nhân của tất cả người dùng

Nhưng nguy hiểm hơn, user01 có thể thay đổi những thơng tin này. User1 thưc hiện thêm đoạn

“ ''; update tblNguoidung set [Diachi]=''Du lieu bi thay doi'';-- ” vào câu

lệnh ban đầ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

Khi đó câu lệnh sau khi đã bị thay đổi sẽ như sau

“ exec sp_XemNguoiDung 'user01''; update tblNguoidung set [Diachi]=''Du lieu bi thay doi'';--' ”

Và kết quả là nội dung của cột DiaChi sẽ bị thay đổi theo ý định của user01.

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

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 64)

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

(87 trang)
w