CEHv9 viet module 14 SQL injection attack 10

10 759 0
CEHv9 viet module 14  SQL injection attack  10

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

Thông tin tài liệu

Bản trình bày bằng tiếng Việt của chương trình đào tạo CEH v9 – Module 14. Module 14 của CEHv9 trình bày các vấn đề liên quan đến kỹ thuật SQL injection attack – kỹ thuật tấn công vào các điểm yếu của hệ quản trị Cơ sở dữ liệu SQL. Từ đó, attacker có thể khai thác thông tin từ cơ sở dữ liệu có được như: thông tin tài khoản, thông tin cá nhân, thông tin thẻ tín dụng…

Module 14 SQL Injection Các Chủ Đề Chính Trong Chương Này Tấn Công SQl Injection Là Gì Các Lỗi SQL Thường Gặp Một Số Dạng Tấn Công SQL Injection Thông Dụng Phòng Chống Tấn Công SQL Injection Giới Thiệu Về SQL Injection Đa số ứng dụng web ngày quản lý đáp ứng yêu cầu truy xuất liệu thông qua ngôn ngữ truy vấn cấu trúc SQL Các hệ quản trị sở liệu thông dụng Oracle, MS SQL hay MySQL có chung đặc điểm này, dạng công liên quan đến SQL thường xếp hàng đầu danh sách lỗ hổng nguy hiểm nhất, dạng công vào lỗi gọi SQL injection Vào tháng 12 năm 2010 đợt công SQl injection lấy hàng trăm ngàn thông tin khách hàng, tin hacker Albert Gonzalez cho lấy cắp 130 triệu thông tin thẻ tín dụng thông qua công SQL injection vào website cài đặt công cụ sniffer để đánh cắp liệu, xem đợt trộm cắp thông tin người dùng lớn lịch sử Hoa Kỳ đăng InformationWeek Hình 14.1 Hình 14.1 – Thông tin thẻ tín dụng bị đánh cắp Chúng ta thấy, công dạng hacker thường đánh vào trang web chứa thông tin tài khoản quan trọng người dùng trang web thương mại điện tử, kết thu có giá trị kinh tế cao, khả thành công lớn, dễ tiến hành đặc điểm khiến cho SQL injection xếp hàng số danh sách lỗi bị ảnh hưởng nhiều năm 2010 Hình 14.2 Hình 14.2 – Danh sách lỗi trang web bị công nhiều Vậy SQL injection hacker thực chúng mà nguy hiểm đến vậy, bạn xem phần mô tả tương đối đầy đủ dạng công qua trang wikipedia.org sau : “SQL injection kỹ thuật cho phép kẻ công lợi dụng lỗ hổng việc kiểm tra liệu đầu vào ứng dụng web thông báo lỗi hệ quản trị sở liệu trả để inject (tiêm vào) thi hành câu lệnh SQL bất hợp pháp, Sql injection cho phép kẻ công thực thao tác, delete, insert, update,… sỡ liệu ứng dụng, chí server mà ứng dụng chạy, lỗi thường xãy ứng dụng web có liệu quản lý hệ quản trị sở liệu SQL Server, MySQL, Oracle, DB2, Sysbase Các Lỗi Thường Gặp Không kiểm tra ký tự thoát truy vấn Đây dạng lỗi SQL injection xảy thiếu đoạn mã kiểm tra liệu đầu vào câu truy vấn SQL Kết người dùng cuối thực số truy vấn không mong muốn sở liệu ứng dụng Dòng mã sau minh họa lỗi này: statement = "SELECT * FROM users WHERE name = '" + userName + "';" Câu lệnh thiết kế để trả ghi tên người dùng cụ thể từ bảng người dùng Tuy nhiên, biến "userName" nhập xác theo cách người dùng ác ý, trở thành câu truy vấn SQL với mục đích khác hẳn so với mong muốn tác giả đoạn mã Ví dụ, ta nhập vào giá trị biến userName sau: a' or 't'='t Khiến câu truy vấn hiểu sau: SELECT * FROM users WHERE name = 'a' OR 't'='t'; Nếu đoạn mã sử dụng thủ tục xác thực ví dụ sử dụng để bắt buộc lựa chọn tên người dùng hợp lệ 't'='t' Trong hầu hết SQL server cho phép thực nhiều truy vấn lúc với lần gọi, nhiên số SQL API mysql_query php lại không cho phép điều lý bảo mật Điều ngăn cản tin tặc công cách sử dụng câu lệnh riêng rẽ mà không ngăn cản tin tặc thay đổi từ cú pháp truy vấn Các giá trị biến "userName" câu truy vấn gây việc xoá người dùng từ bảng người dùng tương tự việc xóa tất liệu từ bảng liệu (về chất tiết lộ thông tin người dùng), ví dụ minh họa API cho phéo thực nhiều truy vấn lúc: a';DROP TABLE users; SELECT * FROM data WHERE 't' = 't Khiến câu truy vấn hiểu sau: SELECT * FROM users WHERE name = 'a' OR 't'='t'; Nếu đoạn mã sử dụng thủ tục xác thực ví dụ sử dụng để bắt buộc lựa chọn tên người dùng hợp lệ 't'='t' Trong hầu hết SQL server cho phép thực nhiều truy vấn lúc với lần gọi, nhiên số SQL API mysql_query php lại không cho phép điều lý bảo mật Điều ngăn cản tin tặc công cách sử dụng câu lệnh riêng rẽ mà không ngăn cản tin tặc thay đổi từ cú pháp truy vấn Các giá trị biến "userName" câu truy vấn gây việc xoá người dùng từ bảng người dùng tương tự việc xóa tất liệu từ bảng liệu (về chất tiết lộ thông tin người dùng), ví dụ minh họa API cho phéo thực nhiều truy vấn lúc: a';DROP TABLE users; SELECT * FROM data WHERE 't' = 't Điều đưa tới cú pháp cuối câu truy vấn sau: SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM DATA WHERE 't' = 't'; Xử lý không kiểu Lỗi SQL injection dạng thường xảy lập trình viên hay người dùng định nghĩa đầu vào liệu không rõ ràng thiếu bước kiểm tra lọc kiểu liệu đầu vào Điều xảy trường số sử dụng truy vấn SQL lập trình viên lại thiếu bước kiểm tra liệu đầu vào để xác minh kiểu liệu mà người dùng nhập vào có phải số hay không Ví dụ sau: statement := "SELECT * FROM data WHERE id = " + a_variable + ";" Ta nhận thấy cách rõ ràng ý định tác giả đoạn mã nhập vào số tương ứng với trường id - trường số Tuy nhiên, người dùng cuối, thay nhập vào số, họ nhập vào chuỗi ký tự, trở thành câu truy vấn SQL hoàn chỉnh mà bỏ qua ký tự thoát Ví dụ, ta thiết lập giá trị biến a_variable là: 1;DROP TABLE users đó, thực thao tác xóa người dùng có id tương ứng khỏi sở liệu, câu truy vấn hoàn chỉnh hiểu là: SELECT * FROM DATA WHERE id=1;DROP TABLE users; Blind SQL injection SQL injection dạng dạng lỗi tồn ứng dụng web hậu chúng lại không hiển thị trực quan cho kẻ công Nó gây sai khác hiển thị nội dung trang chứa lỗi bảo mật này, hậu công SQL injection dạng khiến cho lập trình viên hay người dùng phải nhiều thời gian để phục hồi xác bit liệu Những kẻ công sử dụng số công cụ để dò tìm lỗi dạng công với thông tin thiết lập sẵn Một Số Dạng Tấn Công SQL Injection Thông Dụng Có bốn dạng công thường gặp bao gồm: vượt qua kiểm tra lúc đăng nhập, sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng stored-procedures Dạng công vượt qua kiểm tra lúc đăng nhập Với dạng công này, tin tặc dễ dàng vượt qua trang đăng nhập nhờ vào lỗi dùng câu lệnh SQL thao tác sở liệu ứng dụng web Thông thường phép người dùng truy cập vào trang web bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin tên đăng nhập mật Sau người dùng nhập thông tin vào, hệ thống kiểm tra tên đăng nhập mật có hợp lệ hay không để định cho phép hay từ chối thực tiếp Dạng công sử dụng câu lệnh SELECT Dạng công phức tạp Để thực kiểu công này, kẻ công phải có khả hiểu lợi dụng sơ hở thông báo lỗi từ hệ thống để dò tìm điểm yếu khởi đầu cho việc công Ví dụ, trang tìm kiếm Các trang cho phép người dùng nhập vào thông tin tìm kiếm Họ, Tên, … Đoạn mã thường gặp là:

Ngày đăng: 07/07/2016, 11:56

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan