1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. An ninh - Bảo mật >

CHƯƠNG II: MỘT SỐ DẠNG TẤN CÔNG THƯỜNG GẶP VỚI CÁC ỨNG DỤNG WEB

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.55 MB, 30 trang )


BÁO CÁO ĐỒ ÁN MÔN HỌC NHÓM 05

strSQL = "SELECT * FROM T_USERS " & _

"WHERE USR_NAME=' " & vUsrName & _

" ' and USR_PASSWORD=' " & vPassword & " ' "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

If (objRS.EOF) Then

Response.Write "Invalid login."

Else

Response.Write "You are logged in as " & objRS("USR_NAME")

End If

Set objRS = Nothing %>

Chỗ sơ hở trong đoạn mã xử lý nhập liệu trên nằm ở chỗ dữ liệu nhập vào từ

người dùng được dùng để xây dựng trực tiếp câu lệnh SQL. Chính điều này

cho phép tin tặc có thể điều khiển câu truy vấn sẽ được thực hiện. Ví dụ, nếu

người dùng nhập chuỗi trong ngoặc sau vào trong cả hai ô nhập liệu

username/password của trang login.htm là:('OR='). Lúc này, câu truy vấn sẽ

được gọi thực hiện là:

SELECT * FROM T_USERS WHERE USR_NAME =''OR''='' and

USR_PASSWORD= ''OR''=''

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 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ệ.

II.



Dạng tấn công sử dụng câu lệnh SELECT



SV BM. MẠNG MÁY TÍNH – KHÓA 58



Page 10



BÁO CÁO ĐỒ ÁN MÔN HỌC NHÓM 05

Dạng tấn công này phức tạp hơ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ơ 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. Ví dụ, trong các

trang tìm kiếm. Các trang này cho phép người dùng nhập vào các thông tin

tìm kiếm như Họ, Tên, … Đoạn mã thường gặp là:

<%

Dim vAuthorName, objRS, strSQL

vAuthorName = Request("fAUTHOR_NAME")

strSQL = "SELECT * FROM T_AUTHORS WHERE AUTHOR_NAME ='

" & _ vAuthorName & " ' "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."



Set objRS = Nothing %>

Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn SQL để

nhập vào trường tên tác giả bằng chuỗi giá trị:

' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '='

(*)

Lúc này, ngoài 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. Giả sử đoạn mã nhập vào là:

' DROP TABLE T_AUTHORS -Câu truy vấn sẽ thực hiện việc xóa bảng.

III.



Dạng tấn công sử dụng câu lệnh INSERT



SV BM. MẠNG MÁY TÍNH – KHÓA 58



Page 11



BÁO CÁO ĐỒ ÁN MÔN HỌC NHÓM 05

Thông thường các ứng dụng web cho phép người dùng đăng ký một tài khoản

để tham gia. 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

dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào. Ví dụ,

một câu lệnh INSERT có thể có cú pháp dạng:

INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value Three')

Nếu đoạn mã xây dựng câu lệnh SQL có dạng:

<%

strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' "

_ & strValueTwo & " ', ' " & strValueThree & " ') "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."



Set objRS = Nothing %>

Thì chắc chắn sẽ bị lỗi SQLi, bởi vì nếu ta nhập vào trường thứ nhất ví dụ

như:

' + (SELECT TOP 1 FieldName FROM TableName) + '

Lúc này câu truy vấn sẽ là:

INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM

TableName) + ' ', 'abc', 'def')

Khi đó, lúc thực hiện lệnh xem thông tin, xem như bạn đã yêu cầu thực hiện

thêm một lệnh nữa đó là:

SELECT TOP 1 FieldName FROM TableName

SV BM. MẠNG MÁY TÍNH – KHÓA 58



Page 12



BÁO CÁO ĐỒ ÁN MÔN HỌC NHÓM 05

IV.



Dạng tấn công sử dụng stored-procedures



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 ‘cmdd.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.



SV BM. MẠNG MÁY TÍNH – KHÓA 58



Page 13



BÁO CÁO ĐỒ ÁN MÔN HỌC NHÓM 05



CHƯƠNG III: MÔ PHỎNG TẤN CÔNG WEBSERVER

BẰNG SỬ DỤNG CÂU LỆNH SELECT

Để 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ơ 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.

I.



Thực hiện SQL Injection bằng Hackbar trên FireFox



Tool cần chuẩn bị: Add-on FireFox Hackbar

Để tìm một trang web có khả năng dính lỗi, ta tìm kiếm Google bằng lệnh

sau:



Có rất nhiều web hiện ra, ví dụ ta truy cập trang web đầu tiên:

http://www.hoanghaidoor.vn/?frame=product_detail&id=705



SV BM. MẠNG MÁY TÍNH – KHÓA 58



Page 14



BÁO CÁO ĐỒ ÁN MÔN HỌC NHÓM 05



Để phát hiện một ứng dụng web có dính lỗi SQL Injection hay không, ta thêm

vào câu truy vấn các meta character trong các hệ quản trị cơ sở dữ liệu, chẳng

hạn như dấu nháy đơn, dấu nháy kép, dấu chấm phẩy và các ký tự comment

(--, ##, /**/, %)… và chờ xem ứng dụng web sẽ xứ lý câu truy vấn đó như

thế nào.

+



+



+



Dấu nháy đơn (‘): dấu này trong ngôn ngữ SQL dùng để “gói” chuỗi.

Ta thường thêm nó vào sau tham số kiểu số trên chuỗi truy vấn để kiểm

tra có lỗi hay không. Nguyên nhân là do không kiểm tra kiểu dữ liệu.

Dấu thăng (#) và dấu (): các dấu này để đánh dấu chú thích, nghĩa là

những kí tự đứng sau một trong hai dấu này trên cùng một dòng sẽ

được xem là chú thích được bỏ qua khi thực hiện truy vấn.

Dấu ( ; ): dùng để kết thúc một truy vấn và tất nhiên sau nó là bắt đầu

một truy vấn khác. Đôi khi ta dùng union để nối hai câu truy vấn.



Thêm vào cuối liên kết trên một trong các meta character đã nói ở trên, chẳng

hạn

ta

thêm

vào

dấu

nháy

đơn:



http://www.hoanghaidoor.vn/?frame=product_detail&id=705’



SV BM. MẠNG MÁY TÍNH – KHÓA 58



Page 15



Xem Thêm
Tải bản đầy đủ (.docx) (30 trang)

×