MỤC LỤC LỜI NÓI ĐẦU 4 Chương I: Giới thiệu về SQL Injecton 5 1.1. SQL Injection là gì? 5 1.2. Mục đích của tấn công SQL Injection. 5 1.3. Các dạng tấn công SQL Injection. 6 1.3.1. Dạng tấn công vượt qua kiểm tra đăng nhập. 6 1.3.2. Dạng tấn công sử dụng câu lệnh SELECT. 7 1.3.3. Dạng tấn công sử dụng câu lệnh INSERT. 10 1.3.4. Dạng tấn công sử dụng stored – procedures. 12 Chương II: Kỹ thuật tấn công SQL Injection và cách phòng chống. 13 2.1. Kỹ thuật tấn công SQL Injection. 13 2.1.1. Tìm kiếm mục tiêu. 13 2.1.2. Kiểm tra chỗ yếu của trang web. 13 2.1.3. Nhận dữ liệu qua “database using ODBC error message”. 15 2.1.4. Thu thập các dữ liệu quan trọng. 15 2.1.5. Xử lý kết quả tìm được. 15 2.2. Cách phòng chống tấn công SQL Injection. 15 Chương III: Demo tấn công SQL Injection 17 3.1. Công cụ tấn công. 17 3.2. Mục tiêu. 17 KẾT LUẬN 18 TÀI LIỆU THAM KHẢO 19 DANH MỤC HÌNH ẢNH Hình 1. Form đăng nhập………………………………………………………. Hình 2. Trang web có nguy cơ bị tấn công ……………………………………. Hình 3: Trang web bị lỗi sau khi thực hiện câu lệnh …………………………. Hình 4: Mẫu đăng ký tài khoản ……………………………………………….. Hình 5: Trang web trước khi chèn ký tự vào cuối URL ……………………….. Hình 6: Trang web sau khi chèn ký tự vào cuối URL …………………………. 6 8 10 11 14 14 LỜI NÓI ĐẦU Ngày nay, với sự phát triển mạnh mẽ của internet và công nghệ thông tin, ngày càng xuất hiện nhiều những loại tấn công vào cơ sở dữ liệu của chúng ta. Một trong những hình thức tấn công phổ biến và dễ dàng nhất là tấn công SQL Injection. Với mục đích tìm hiểu về cách tấn công, tác hại, các kỹ thuật tấn công của SQL Injection, nhóm em đã chọn đề tài: tìm hiểu về tấn công SQL Injection trên Oracle 10g (hoặc 11g) để có thể tìm hiểu và đưa ra các biện pháp phòng chống loại tấn công nguy hiểm này.
Trang 1ĐỀ 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
Trang 2Tìm hiểu về tấn công SQL Injection
Trang 3SQL 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,…
Giới thiệu về tấn công SQL Injection
Trang 4Mụ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
Trang 5Các dạng tấn công SQL Injection
Trang 6Câu lệnh kiểm tra thường dùng khi đăng nhập:
Vượt qua kiểm tra khi đăng nhập
Trang 7Để 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
Trang 8Ví dụ đây là URL của một bản tin:
http://www.myhost.com/shownews.aspx?ID=123
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
Tấn công sử dụng câu lệnh SELECT
Trang 9Câ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
Tấn công sử dụng câu lệnh INSERT
Trang 10 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'
Tấn công sử dụng Stored - procedures
Trang 11Dướ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.
Tấn công sử dụng Stored - procedures
Trang 12Cá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
Kỹ thuật tấn công SQL Injection
Trang 13 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=
Tìm kiếm mục tiêu
Trang 14 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.
Kiểm tra chỗ yếu của trang web
Trang 15Kiểm tra chỗ yếu của trang web
Trang 16 Đâ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
Trang 17 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
Thu thập các dữ liệu quan trọng
Trang 18 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
Xử lý kết quả thu được
Trang 19 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ách phòng chống tấn công
SQL Injection
Trang 20 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.
Cách phòng chống tấn công
SQL Injection
Trang 21Cảm ơn thầy, cô và các bạn đã lắng nghe!