Tóm tắt

Trong chương này, Structured Query Language (SQL) injection được đề cập. SQL Injection là một phương pháp tấn công phức tạp và phổ biến vào các dịch vụ web, ứng dụng và Cơ sở dữ liệu. Nó đòi hỏi kiến thức sâu sắc về các quy trình và thành phần của ứng dụng web như databasesSQL.

SQL Injection về cơ bản là chèn mã hoặc tập lệnh độc hại bằng cách khai thác các lỗ hổng để khởi động một cuộc tấn công vào các thành phần back-end. Chương này sẽ cung cấp thông tin về các khái niệm, phân loại, phương pháp và kỹ thuật bảo vệ SQL injection.


Khái niệm

SQL Injection

SQL Injection Attacks sử dụng các trang web hoặc ứng dụng web SQL. Nó dựa vào chiến lược tiêm mã độc hoặc tập lệnh vào các truy vấn hiện có. Mã độc này có mục đích tiết lộ hoặc thao túng dữ liệu được lưu trữ trong các bảng trong cơ sở dữ liệu.

SQL injection là một cuộc tấn công mạnh mẽ và nguy hiểm. Nó xác định các sai sót và lỗ hổng trong một trang web. Khái niệm cơ bản của SQL injection là đưa các lệnh để tiết lộ thông tin nhạy cảm từ cơ sở dữ liệu. Do đó, nó có thể dẫn đến một cuộc tấn công cấu hình cao.

Phạm vi của SQL Injection

SQL Injection có thể là một mối đe dọa lớn đối với một trang web hoặc ứng dụng. Tác động của nó có thể được đo lường bằng cách quan sát các tham số sau mà kẻ tấn công có ý định thực hiện:

  • Bỏ qua xác thực
  • Tiết lộ thông tin nhạy cảm
  • Tính toàn vẹn của dữ liệu được điều chỉnh
  • Xóa cơ sở dữ liệu
  • Thực thi mã từ xa

Cách hoạt động của truy vấn SQL

Chèn truy vấn SQL sẽ được thực thi trên máy chủ và được phản hồi trả lời. Ví dụ: truy vấn SQL sau được yêu cầu đến máy chủ.

SELECT * FROM Orders

Các lệnh này sẽ tiết lộ tất cả thông tin được lưu trữ trong bảng “Orders” của cơ sở dữ liệu. Nếu một tổ chức lưu giữ hồ sơ về các đơn đặt hàng của họ vào cơ sở dữ liệu, thì tất cả thông tin được lưu giữ trong bảng cơ sở dữ liệu này sẽ được trích xuất.

Truy vấn Xóa SQL

Câu lệnh DELETE được sử dụng để xóa các bản ghi hiện có trong bảng. Để hiểu, hãy xem xét bảng “Customers” trong cơ sở dữ liệu. Thông tin sau là nội dung bảng “Customers”.

SELECT * FROM Customers

Thực hiện lệnh “DELETE” sẽ xóa các bản ghi.

DELETE FROM Customers
WHERE CustomerName='Alfreds Futterkiste';

Bây giờ bảng cơ sở dữ liệu sẽ như thế này:

Có rất nhiều lệnh truy vấn SQL có thể được sử dụng. Trên đây là một số lệnh phổ biến và hiệu quả nhất đang được sử dụng để tiêm.

Truy vấn cập nhật SQL

Câu lệnh UPDATE được sử dụng để sửa đổi các bản ghi hiện có trong bảng. Ví dụ, hãy xem xét lệnh sau.

UPDATE Customers
SET CustomerName= 'IPSpecialist, City= 'Frankfurt'
WHERE CustomerID = 1;

Bây giờ Cơ sở dữ liệu sẽ là:

Các công cụ SQL Injection

Có một số công cụ có sẵn cho SQL injection như:

  • BSQL Hacker
  • Marathon Tool
  • SQL Power Injector
  • Havij

Các loại SQL Injection

SQL Injection có thể được phân thành ba loại chính:

  1. In-band SQLi
  2. Inferential SQLi
  3. Out-of-band SQLi

In-Band SQL Injection

In-Band SQL injection gồm các kỹ thuật tiêm sử dụng cùng một kênh giao tiếp để khởi động cuộc tấn công tiêm và thu thập thông tin từ phản hồi. Hai kỹ thuật bao gồm:

  1. Error-based SQL Injection
  2. Union based SQL Injection

Error Based SQL Injection

SQL Injection dựa trên lỗi là một trong những kỹ thuật In-Band SQL Injection. Nó dựa vào các thông báo lỗi từ máy chủ cơ sở dữ liệu để tiết lộ thông tin về cấu trúc của cơ sở dữ liệu. Việc chèn SQL dựa trên lỗi rất hiệu quả để kẻ tấn công liệt kê toàn bộ cơ sở dữ liệu.

Thông báo lỗi rất hữu ích trong giai đoạn phát triển để khắc phục sự cố. Những thông báo này sẽ bị vô hiệu hóa khi một trang web ứng dụng đang hoạt động. Nó có thể được thực hiện bằng các kỹ thuật sau:

  • Thủ tục lưu trữ hệ thống
  • Nhận xét cuối dòng
  • Truy vấn bất hợp pháp/không chính xác
  • Tautology

Union SQL Injection

Union-based SQL injection là một kỹ thuật In-Band SQL Injection khác liên quan đến toán tử SQL UNION để kết hợp các kết quả của hai hoặc nhiều câu lệnh SELECT thành một kết quả duy nhất.

SELECT <column_name(s)> FROM <table_1>
UNION
SELECT <column_name(s)> FROM <table_2>;

Inferential SQL Injection (Blind Injection)

Trong một Inferential SQL Injection, không có dữ liệu nào được chuyển từ một ứng dụng Web, tức là kẻ tấn công không thể nhìn thấy kết quả của cuộc tấn công do đó được gọi là tiêm mù. Kẻ tấn công chỉ quan sát hành vi của máy chủ. Hai loại inferential SQL InjectionBlind-Boolean-based SQL injectionBlind-time-based SQL injection.

Boolean Exploitation Technique

Blind SQL injection là kỹ thuật gửi một yêu cầu đến cơ sở dữ liệu, phản hồi không chứa bất kỳ dữ liệu nào từ cơ sở dữ liệu tuy nhiên kẻ tấn công quan sát phản hồi HTTP. Bằng cách đánh giá các phản hồi, kẻ tấn công có thể suy ra việc tiêm thành công hay không thành công, vì phản hồi sẽ là đúng hoặc sai tuy nhiên nó sẽ không chứa bất kỳ dữ liệu nào từ cơ sở dữ liệu.

Out-of-band SQL Injection

Out-of-band SQL Injection là kỹ thuật tiêm sử dụng các kênh khác nhau để khởi chạy tiêm và thu thập các phản hồi. Nó yêu cầu một số tính năng được bật như yêu cầu DNS hoặc HTTP trên máy chủ cơ sở dữ liệu, do đó nó không phổ biến lắm.

1 thoughts on “[CEH-Module 15] Phần 1: SQL Injection – Khái niệm, Phân loại

  1. Pingback: Giới thiệu CEH v10 Tiếng Việt (Certified Ethical Hacker) - CRF Blogger

Leave a Reply

This site uses cookies to offer you a better browsing experience. By browsing this website, you agree to our use of cookies.