Friday 19 February 2016

Attack SQL Injection Part 1


I- SQL Injection là gì ?

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...
                               

SQL injection (SQLI) được coi là một trong số 10 lỗ hổng ứng dụng web hàng đầu 

theo OWASP (Open Web Application Security Project) đánh giá với mức độ nguy hiểm cực kỳ cao và phương thức khai thác thì đơn giản.

II- 10 Bước "cần" và "phải" biết:
1.Identifying injectable parameters: Xác định tham số có thể chèn khai thác lỗi SQL Injection .
Ví dụ như qua: URL, HTTP Header, Cookie, Forms (HTTP body).
2.Performing database finger-printing: xác định loại và phiên bản của database để đưa ra hướng tấn công thích hợp (MySQL – MSSQL – MSAccess – Oracle - PostgreSQL….).

Ví dụ:
MySQL Error Style:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'' at line 1

MSSQL ASPX Error:
Server Error in '/' Application


MSAccess (Apache PHP):
Fatal error: Uncaught exception 'com_exception' with message Source: Microsoft JET Database Engine


MSAccesss (IIS ASP):
Microsoft JET Database Engine error '80040e14'


Oracle Error:

ORA-00933: SQL command not properly ended

MS SQL Server: Error:
Microsoft SQL Native Client error %u201880040e14%u2019
Unclosed quotation mark after the character string

3.Determining database schema: Để trích xuất dữ liệu trong 1 cơ sở dữ liệu database, kẻ tấn công cần biết thông tin về "database schema" (giản đồ CSDL) như table_name, column_name, kiểu dữ liệu...
4.Extracting data: Trích xuất dữ liệu từ CSDL như user|password để đăng nhập vào CMS của server.
5.Adding or modifying data: thay đổi, chỉnh sửa thông tin trong Database | Xem hình dưới:



Ví dụ: Database là MySQL + WebPlatform là PHP = Kết quả: không thể ghi hoặc xóa lên database victim.

6.Performing denial of service: Kiểu tấn công từ chối các dịch vụ , đóng kết nối Database của ứng dụng Web .
7.Evading detection: dùng những “cheat” để không bị phát hiện (detection) cững như bị ghi lại hoạt động (auditing)
8.Bypassing authentication: vượt quyền để có thể toàn quyền trên server.
9.Executing remote commands: SQL-Injection có thể thực thi command của OS.(load_file)
Ví dụ: LINUX OS BASE: ls | cat /etc/passwd | useradd | … — WINDOWS OS BASE: net user | dir c:\ | query session | …
10.Performing privilege escalationXác định quyền tối cao của current-user thông qua những lỗi mà server trả về.

III- Kiểu tấn công SQL Injection:

Có 05 loại chính: BEUST

Boolean-based blind SQL injection
Error-based SQL injection.
UNION query SQL injection.
Stacked queries SQL injection.
Time-based blind SQL injection (full blind SQL injection)
Tùy vào mỗi loại sẽ có một phương pháp riêng để khai thác. Trong bài viết này, mình không tập trung nhiều vào cơ chế, mà sẽ tiếp tục qua phần tiếp theo.
Nguồn: minhtamnw

0 comments:

Post a Comment