Kiểm tra bảo mật - Injection

Kỹ thuật tiêm bao gồm việc đưa vào một truy vấn SQL hoặc một lệnh bằng cách sử dụng các trường đầu vào của ứng dụng.

Ứng dụng web - Tiêm

Một SQL injection thành công có thể đọc, sửa đổi dữ liệu nhạy cảm từ cơ sở dữ liệu và cũng có thể xóa dữ liệu khỏi cơ sở dữ liệu. Nó cũng cho phép tin tặc thực hiện các hoạt động quản trị trên cơ sở dữ liệu như tắt cơ sở dữ liệu DBMS / hủy bỏ cơ sở dữ liệu.

Hãy cho chúng tôi hiểu Tác nhân đe dọa, Vectơ tấn công, Điểm yếu về bảo mật, Tác động kỹ thuật và Tác động kinh doanh của lỗ hổng này với sự trợ giúp của sơ đồ đơn giản.

Ví dụ

Ứng dụng sử dụng dữ liệu không đáng tin cậy trong việc xây dựng lệnh gọi SQL dễ bị tấn công sau:

String query = "SELECT * FROM EMP WHERE EMPID = '" + request.getParameter("id") + "'";

Thực hành

Step 1 - Điều hướng đến vùng SQL Injection của ứng dụng như hình bên dưới.

Step 2- Như đã đưa ra trong bài tập, chúng ta sử dụng String SQL Injection để bỏ qua xác thực. Sử dụng SQL injection để đăng nhập với tư cách là ông chủ ('Neville') mà không cần sử dụng mật khẩu chính xác. Xác minh rằng hồ sơ của Neville có thể được xem và tất cả các chức năng đều có sẵn (bao gồm Tìm kiếm, Tạo và Xóa).

Step 3 - Chúng tôi sẽ đưa ra một SQL để chúng tôi có thể bỏ qua mật khẩu bằng cách gửi tham số là 'a' = 'a' hoặc 1 = 1

Step 4 - Đăng Khai thác, chúng ta có thể đăng nhập Neville là Admin như hình bên dưới.

Ngăn chặn SQL Injection

Có rất nhiều cách để ngăn chặn SQL injection. Khi các nhà phát triển viết mã, họ nên đảm bảo rằng họ xử lý các ký tự đặc biệt cho phù hợp. Có sẵn các bảng / kỹ thuật phòng chống gian lận từ OWASP, đây chắc chắn là một hướng dẫn cho các nhà phát triển.

  • Sử dụng các truy vấn được tham số hóa
  • Thoát tất cả thông tin đầu vào do người dùng cung cấp
  • Bật Đặc quyền Ít nhất cho cơ sở dữ liệu cho người dùng cuối