Lấy cắp dữ liệu đạo đức - SQL Injection

SQL injection là một tập hợp các lệnh SQL được đặt trong một chuỗi URL hoặc trong cấu trúc dữ liệu để truy xuất phản hồi mà chúng ta muốn từ cơ sở dữ liệu được kết nối với các ứng dụng web. Loại tấn công này thường diễn ra trên các trang web được phát triển bằng PHP hoặc ASP.NET.

Một cuộc tấn công chèn SQL có thể được thực hiện với các mục đích sau:

  • Để kết xuất toàn bộ cơ sở dữ liệu của một hệ thống,

  • Để sửa đổi nội dung của cơ sở dữ liệu, hoặc

  • Để thực hiện các truy vấn khác nhau không được ứng dụng cho phép.

Kiểu tấn công này hoạt động khi các ứng dụng không xác nhận đầu vào đúng cách, trước khi chuyển chúng sang câu lệnh SQL. Thuốc tiêm thường được đặt trong thanh địa chỉ, trường tìm kiếm hoặc trường dữ liệu.

Cách dễ nhất để phát hiện xem một ứng dụng web có dễ bị tấn công SQL injection hay không là sử dụng ký tự "'" trong một chuỗi và xem liệu bạn có gặp lỗi nào không.

ví dụ 1

Hãy thử hiểu khái niệm này bằng cách sử dụng một vài ví dụ. Như được hiển thị trong ảnh chụp màn hình sau, chúng tôi đã sử dụng ký tự "'" trong trường Tên.

Bây giờ, hãy nhấp vào Logincái nút. Nó sẽ tạo ra phản hồi sau:

Có nghĩa là trường "Tên" dễ bị chèn SQL.

Ví dụ 2

Chúng tôi có URL này - http://10.10.10.101/mutillidae/index.php?page=site-footer-xssdiscussion.php

Và chúng tôi muốn kiểm tra biến “trang” nhưng quan sát cách chúng tôi đã chèn ký tự "'" vào URL chuỗi.

Khi chúng ta nhấn Enter, nó sẽ cho ra kết quả sau là có lỗi.

SQLMAP

SQLMAP là một trong những công cụ tốt nhất hiện có để phát hiện việc tiêm SQL. Nó có thể được tải xuống từhttp://sqlmap.org/

Nó được biên dịch trước trong bản phân phối Kali. Bạn có thể định vị nó tại - Ứng dụng → Đánh giá cơ sở dữ liệu → Sqlmap.

Sau khi mở SQLMAP, chúng tôi đi đến trang mà chúng tôi có chèn SQL và sau đó nhận được yêu cầu tiêu đề. Từ tiêu đề, chúng tôi chạy lệnh sau trong SQL:

./sqlmap.py --headers="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:25.0) 
Gecko/20100101 Firefox/25.0" --cookie="security=low;
PHPSESSID=oikbs8qcic2omf5gnd09kihsm7" -u '
http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#' -
level=5 risk=3 -p id --suffix="-BR" -v3

SQLMAP sẽ kiểm tra tất cả các biến và kết quả sẽ cho thấy rằng tham số “id” là dễ bị tấn công, như thể hiện trong ảnh chụp màn hình sau.

SQLNinja

SQLNinja là một công cụ chèn SQL khác có sẵn trong bản phân phối Kali.

JSQL tiêm

JSQL Injection trong Java và nó thực hiện việc tiêm SQL tự động.

Mẹo nhanh

Để ngăn ứng dụng web của bạn khỏi các cuộc tấn công SQL injection, bạn nên ghi nhớ những điểm sau:

  • Không được phép cho phép người dùng nhập dữ liệu vào cơ sở dữ liệu chưa được kiểm tra thông qua GUI của ứng dụng.

  • Mọi biến chuyển vào ứng dụng phải được làm sạch và xác thực.

  • Đầu vào của người dùng được chuyển vào cơ sở dữ liệu phải được trích dẫn.