Thứ Tư, 7 tháng 6, 2017

SQL Injection Attack part.1

SQL Injection Attack part.1

Bạn chuẩn bị đọc một loại lỗ hổng nguy hiểm bậc nhất thế giới!

| có hơn 9.680.000 kết quả do google trả về với từ khóa “SQL Injection” |
| vì vậy mình sẽ không đi sâu vào cơ chế hay giới thiệu nó là gì? |
| đây là những kinh nghiệm cũng như công cụ để khai thác |
và quan trọng là vì mục đích giáo dục |
|không dùng để xâm nhập và phá server vì mục đích mũ đen hay mang tính thương mại|
———————————
  • SQL Injection được OWASP (là một tổ chức phi lợi nhuận tại Mỹ chuyên nghiên cứu, đánh giá và phát triển những ứng dụng web) đánh giá với mức độ nguy hiểm cực kỳ cao và phương thức khai thác thì cực kỳ dễ @_@.
  • Bảng báo cáo đánh giá về những phương thức tấn công năm 2010 do OWASP xuất bản bạn có thể tham khảo tại  [Tiếng Anh]  [Tiếng Việt]

I.Phân tích trước khi “xâm phạm server”

10 điều “cần” và “phải” biết:

  • Identifying injectable parameters: tìm ra những tham số nào có thể là nguy cơ để mình khai thác (mình sẽ phân tích ở phần tiếp theo)
  • 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 ….)
  • Determining database schema: “database schema” hay có thể xem là CƠ SỞ DỮ LIỆU CỦA CƠ SỞ DỮ LIỆU >> database schema lưu trữ những thông tin về toàn bộ thông tin database của một server. Hoặc có thể hiểu rằng, database schema chứa tên user/password/quyền/số lượng cơ sở dữ liệu/…. (nhưng nó không chứa data của cơ sở dữ liệu.)
    • Ví dụ: Server của tôi có 5 databases (bao gồm minhtamnw1 minhtamnw2 … minhtamnw5) và tương ứng có một cặp user/password tương ứng (user1/password1 …. user5/password5). Vậy những thông tin về số lượng database|user|password|quyền trên từng database|… sẽ được imfomation_schema trên MySQL lưu trữ. Vì vậy tìm ra “database schema” của từng loại Database là rất quan trọng.
  • Extracting data: Đây chính thức là bước “ăn cắp thông tin” của server. Toàn bộ sẽ dần hiện ra $_$ – quan trọng là user|password để đăng nhập vào CMS của server. Tại bước này là Read-Only | chỉ có thể đọc toàn bộ cơ sở dữ liệu.
  • Adding or modifying data: bước này sẽ quyết định bạn có thể thêm bớt vào DB không | 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 nạn nhân.
  • Performing denial of service: Làm sập server thông qua lỗi SQLINjection (tham khảo TẤN CÔNG THEO PHƯƠNG PHÁP REFREF)
  • 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)
  • Bypassing authentication: vượt quyền để có thể toàn quyền trên server.
  • Executing remote commands: Điểm đặc biệt của SQL-Injection là có thể thực thi command của OS.
    • Ví dụ: LINUX OS BASE: ls | cat /etc/passwd | useradd | … — WINDOWS OS BASE: net user | dir c:\ | query session | …
  • Performing privilege escalation: Xác định quyền tối cao của current-user thông qua những lỗi mà server trả về. Bước  này ít quan trọng.

II. Những phong cách “khai thác” của SQL-Injection

Có 05 loại chính: BEUST

Boolean-based blind SQL injection, còn được biết như là inferential SQL injection.
Error-based SQL injection.
UNION query SQL injection.
Stacked queries SQL injection.
Time-based blind SQL injection, còn được biết như làs 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 khai thác thực tế. (Tham khảo thêm tại ĐÂY)

III.Tấn công thực tế

Toys (Tools): Trên nền tảng Windows
PYTHON 2.6 hoặc 2.7 | DOWNLOAD: Windows 32bits  –  Windows 64bits
SQLMAP | DOWNLOAD
Cấu trúc URL:
    • https: Protocol
    • minhtamnw.wordpress.com: Tên miền
    • /wp-admin: đường dẫn
    • /post.php: Filename.Extention
    • ? : sau dấu ? sẽ là biến và giá trị biến
    • post=32&action=edit&message=10  : biến post có giá trị 32, mỗi biến cách nhau bởi dấu &
Khai thác: Cài đặt Python và giải nén sqlmap vào C:\ như hình
sqlmap.py -u “http://www.victim.com/content/banin.php?id=1″ -p id -v 3 –dbs –no-cast
sqlmap.py -u “http://www.victim.com/content/banin.php?id=1″ -p id -v 3 -D database_found –tables –no-cast
sqlmap.py -u “http://www.victim.com/content/banin.php?id=1″ -p id -v 3 -D database_found -Ttbl_user –columns –no-cast
sqlmap.py -u “http://www.victim.com/content/banin.php?id=1″ -p id -D  database_found -Ttbl_user –columns -C  user_name,user_password –dump –no-cast
 bây giờ, chúng ta sẽ đăng nhập vào CMS của site nạn nhân và upload 1 shellcode_PHP để có thể điểu khiển được server
Kết quả: Sau khi tìm thấy lần lượt DATABASE > TABLE > COLUMNS > DATA , ta có thể dùng chúng để đăng nhập và những CMS để thực hiện hành vi đen tối $_@. Trên đây chỉ là những hướng dẫn rất cơ bản để các bạn có thể hình dung được SQL INJECTION là gì và nó nguy hiểm như thế nào. Trong những bài viết tiếp theo, mình sẽ đi sâu hơn vào 10 điều “cần” và “phải” biết như đã đề cập ở đầu bài viết.

SQL Injection Attack part.2

Không có nhận xét nào:

Đăng nhận xét