Tải bản đầy đủ (.pptx) (21 trang)

TÌM HIỂU TẤN CÔNG SQL INJECTION TRONG ORACLE ppt

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 (431.69 KB, 21 trang )

ĐỀ TÀI
TÌM HIỂU VỀ TẤN CÔNG
SQL INJECTION TRONG ORACLE
Giáo viên hướng dẫn: Trần Thị Lượng
Nhóm 10: Vũ Ngọc Tiến
Nguyễn Ngọc Ánh
Sái Nguyễn Đức Hoàng
Lớp : AT8B
1/213/25/15
Tìm hiểu về tấn công SQL Injection
Nhóm sẽ trình bày các vấn đề sau:

Giới thiệu về SQL Injection

Các dạng tấn công SQL Injection

Kỹ thuật tấn công SQL Injection

Các cách phòng chống

Demo tấn công bằng SQL Injection
2/21
3/25/15
SQL Injection là gì?

Là một dạng tấn công mà kẻ tấn công lợi dụng truy vấn SQL
để chèn thêm các tham số đầu vào không an toàn.

Tấn công này dễ thực hiện, chỉ cần một trình duyệt web, có
thể kèm theo một ứng dụng proxy server.


Thường xảy ra trên những ứng dụng web có cơ sở dữ liệu
được quản trị bằng các hệ quản trị như: MySQL, SQL Server,
Oracle,…
3/21
Giới thiệu về tấn công SQL Injection
3/25/15
Mục đích của tấn công SQL Injection:

Đánh cắp dữ liệu từ cơ sở dữ liệu.

Thay đổi dữ liệu trong cơ sở dữ liệu.

Đánh sập một website .
Giới thiệu về tấn công SQL Injection
3/25/15
4/21
5/21
Các dạng tấn công SQL Injection
3/25/15
Câu lệnh kiểm tra thường dùng khi đăng nhập:
6/21
Vượt qua kiểm tra khi đăng nhập
3/25/15
Để vượt qua kiểm tra, người dùng nhập như sau:
strUsername: ‘ or ‘‘ = ‘
strPassword: ‘ or ‘‘ = ‘
Khi này, câu truy vấn SQL được thực hiện sẽ là:
SELECT * FROM Users
WHERE Username = ‘ or ‘‘ = ‘
AND Password = ‘ or ‘‘ = ‘

Câu truy vấn này luôn đúng và trả về tất cả thông tin trong
bảng user
7/21
Vượt qua kiểm tra khi đăng nhập
3/25/15
Ví dụ đây là URL của một bản tin:
/>Code xử lý:
string ID = Request.QueryString[“ID”];
string strSQL = “select * from News where NewsID=“ + ID;
Nếu người dùng thay chỗ 123 bằng chuỗi 0 or 1 = 1
Khi đó câu lệnh SQL sẽ trở thành:
select * from News where NewsID = 0 or 1 = 1
Kết quả là sẽ hiện tất cả các tin tức.
8/21
Tấn công sử dụng câu lệnh SELECT
3/25/15
Câu lệnh SQL thường sử dụng cho chức năng đăng ký:
cmdangki.CommandText =
“INSERT INTO Users(Tendangnhap, Matkhau) VALUES ('" +
tendn.Value.ToString() + "','" + matkhau.Value.ToString() +“)";
Nếu lúc này người dùng nhập vào textbox “tendn” như sau:
‘ + (select top 1 tendn from users) + ‘
Lúc này câu truy vấn sẽ là: INSERT INTO Users VALUES(‘ ' +
(select top 1 Tendn from Users) + ' ','abc','def'). Khi đó, lúc thực
hiện lệnh INSERT, xem như bạn đã yêu cầu thực hiện thêm một
lệnh nữa đó là: select top 1 Tendn from Users.
9/21
Tấn công sử dụng câu lệnh INSERT
3/25/15


Trong SQL Sever có các database master và trong các database
này có các store procude system được lập trình sẵn để thực hiện
các công việc cụ thể nào đó. Nếu như hacker chiếm được quyền
điều khiển hệ quản trị này và thực hiện truy vấn đến các store
này hoặc nguy hiểm hơn là xóa đi database master thì toàn bộ
database sẽ bị ảnh hưởng và không hoạt động được.

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'.
10/21
Tấn công sử dụng Stored - procedures
3/25/15
Dưới đây là một số extended stored procedure mà hacker
thường hay sử dụng để thực thi những câu lệnh xem nội dung
thông tin trong máy nạn nhân:

Xp_availablemedia: Hiển thị những ổ đĩa hiện hành trên máy

Xp_dirtree: Hiển thị tất cả các thư mục kể cả thư mục con

Xp_loginconfig: Lấy thông tin về chế độ bảo mật trên server

Xp_makecab: Cho phép người sử dụng tạo các tập tin lưu trữ
trên Server hay bất cứ tập tin nào mà server có thể truy xuất.

Xp_ntsec_enumdomain: liệt kê những domain mà server có thể
truy vấn.
11/21
Tấn công sử dụng Stored - procedures
3/25/15

Các bước tiến hành tấn cô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: Thu thập các dữ liệu quan trọng.

Bước 5: Xử lý kết quả tìm được
12/21
Kỹ thuật tấn công SQL Injection
3/25/15

Có thể dùng bất kỳ một search-engine nào trên mạng
như các trang login, search, feedback…

Có thể “custome Search Engine” lại cho phù hợp với
yêu cầu của bạn.

Một số từ khóa tìm kiếm website bị lỗi:

inurl:php?id=

news.php id=

pages.php?id=
13/21

Tìm kiếm mục tiêu
3/25/15

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.
14/21
Kiểm tra chỗ yếu của trang web
3/25/15
15/21
Kiểm tra chỗ yếu của trang web
3/25/15

Đâ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.

Ta có thể khai thác rất nhiều thông tin của cơ sở dữ liệu ở
bước này bằng cách sử dụng các câu lệnh SQL.

Ví dụ sử dụng câu lệnh:
UNION SELECT
1,2,unhex(hex(group_concat(table_name))),4,5,6,7 FROM
INFORMATION_SCHEMA.TABLE WHERE
TABLE_SCHEMA=database()

Ta sẽ lấy được tất cả tên của các bảng có trong cơ sở dữ liệu.
16/21
Nhận data qua ‘database using ODBC
error message’
3/25/15


Từ những dữ liệu tìm được ở bước trên, ta lọc ra các bảng,
cột có chứa những dữ liệu quan trọng như tài khoản đăng
nhập, mật khẩu,…

Ví dụ sử dụng câu lệnh:
“UNION SELECT
1,2,unhex(hex(group_concat(id,0x3a,password))),4,5,6,7
FROM tbl_user”

Ta sẽ có id và mật khẩu của tất cả user có trong bảng user.
17/21
Thu thập các dữ liệu quan trọng
3/25/15

Sau khi đã có được các thông tin quan trọng như
tài khoản và mật khẩu, tên bảng, tên cột ta có thể
tiến hành đăng nhập, thay đổi thông tin bằng câu
lệnh UPDATE hoặc thêm một bản ghi mới vào
bảng bằng câu lệnh INSERT
18/21
Xử lý kết quả thu được
3/25/15

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.
19/21
Cách phòng chống tấn công
SQL Injection
3/25/15

Kiểm tra chặt chẽ các kí tự nhập vào trước khi thực hiện
các lệnh truy vẫn SQL. Viết các hàm xóa bỏ các kí tự đặc
biệt từ chuỗi nhập vào như: ‘, “”, , @@, SELECT,
UNION, DROP, INSERT, xp_

Tắt thông báo lỗi từ hệ quản trị CSDL. Điều này hạn chế
việc tấn công của hacker tuy nhiên website chúng ta vẫn
bị lỗi việc này không giúp chúng ta chống lại hoàn toàn
sự tấn công.
20/21
Cách phòng chống tấn công
SQL Injection
3/25/15
Cảm ơn thầy, cô và các bạn đã lắng nghe!
21/21
3/25/15

×