Tải bản đầy đủ (.pdf) (51 trang)

An Toàn Mạng Bài báo cáo: Tìm hiểu công cụ SQLMap và demo một số bài lab

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.28 MB, 51 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THƠNG TIN

Học phần: An Tồn Mạng
Bài báo cáo:
Tìm hiểu cơng cụ SQLMap và demo một số bài lab

Giảng viên hướng dẫn:
Sinh viên thực hiện:
Mã sinh viên:
Lớp:
Nhóm mơn học:
Tổ TH:

TS. Đặng Minh Tuấn
Trần Quốc Hoàn
B18DCAT094
D18CQAT02-B
01
01

Hà Nội 2021

1


MỤC LỤC
DANH MỤC HÌNH ẢNH ............................................................................................................................ 3
DANH SÁCH CÁC THUẬT NGỮ TIẾNG ANH VÀ VIẾT TẮT .............................................................. 4
LỜI MỞ ĐẦU ............................................................................................................................................... 5
Chương 1 : Lịch sử phát triển........................................................................................................................ 6


1.1

Giới thiệu về lỗ hổng web và SQL injection ............................................................................. 6

1.1.1

Sự phát triển và lợi ích của web ...................................................................................6

1.1.2

Giới thiệu về lỗ hổng web .............................................................................................6

1.1.3

SQL injection ..............................................................................................................7

1.2

Lịch sử phát triển của SQL Map ............................................................................................... 8

Chương 2 : Tìm hiểu cơng cụ SQLMap và cài đặt........................................................................................ 12
2.1 Tìm hiểu tool SQLMap. .................................................................................................................. 12
2.1.1 SqlMap là gì? ................................................................................................................... 12
2.1.2 Một số tính năng chính .................................................................................................... 13
2.2 Hướng dẫn cài đặt tool SqlMap trên Window. ............................................................................ 14
2.3 Hướng dẫn sử dụng SqlMap trong Kali Linux ............................................................................ 17
Chương 3 : Tìm hiểu các tập lệnh SqlMap .................................................................................................. 19
3.1 Các kĩ thuật ..................................................................................................................................... 19
3.2 Thư viện bên thứ ba ........................................................................................................................ 20
3.3 Các options trong SQLMAP .......................................................................................................... 22

3.3.1 python sqlmap [options] ................................................................................................... 22
3.3.2 Injection .......................................................................................................................... 24
3.3.3 Detection ......................................................................................................................... 25
3.3.4 Techniques ...................................................................................................................... 25
3.3.5 Enummeration ................................................................................................................ 25
3.3.6 Brute force ....................................................................................................................... 26
3.3.7 Chèn chức năng do người dùng xác định: ........................................................................ 27
3.3.8 Quyền truy cập hệ thống tệp: ............................................................................................ 27
3.3.9 Quyền truy cập hệ điều hành:........................................................................................... 27
3.3.10 Độ dài Output ............................................................................................................... 27
3.3.11 Target............................................................................................................................ 28
3.3.12 Target URL ................................................................................................................... 28
2


3.3.13 Các lệnh nâng cao ......................................................................................................... 28
Chương 4 : Hướng dẫn sử dụng SQLmap để tấn công SQL ......................................................... 29
4.1 Tạo bài lab với DVWA ................................................................................................................... 29
4.2 Hướng dẫn sử dụng SqlMap để tấn công DVWA (Tham khảo từ tài liệu) ............................... 29
4.3 Sử dụng SQLMap với BurpSuite + CO2 ...................................................................................... 40
4.4 Quét và lấy bảng, user, CSDL từ website chứa lỗi SQLi (Demo Tham Khảo).......................... 47
Chương 5 : Đánh giá và Kết Luận .............................................................................................................. 50
TÀI LIỆU THAM KHẢO .......................................................................................................................... 51

DANH MỤC HÌNH ẢNH
Hình 1 Top 10 lỗ hổng bảo mật OWASP ....................................................................................................... 6
Hình 2 Giao diện SQLmap trong Kali Linux.................................................................................................. 12
Hình 3 Mở file python vừa tải về ................................................................................................................ 15
Hình 4 Chọn đường dẫn lưu........................................................................................................................ 15
Hình 5 Hồn thành cài đặt .......................................................................................................................... 16

Hình 6 Mở file SQLMap để cài đặt .............................................................................................................. 16
Hình 7 Chạy lệnh trong Cmd xem cài đặt thành cơng ................................................................................ 17
Hình 8 Cài đặt và cập nhật SQLmap trong Kali............................................................................................ 18

3


DANH SÁCH CÁC THUẬT NGỮ TIẾNG ANH VÀ VIẾT TẮT
Từ
viết tắt
WWW
URL

Thuật ngữ tiếng Anh/Giải thích

Thuật ngữ tiếng Việt/Giải thích

Wordl Wide Web
Uniform Resource Locator

Nơi lưu trữ dữ liệu trên Internet
Địa chỉ của một tài nguyên
Là giao thức truyền tải siêu văn
bản được sử dụng trong www
dùng để truyền tải dữ liệu giữa
Web server đến các trình duyệt
Web
Là ngơn ngữ lập trình dùng để xây
dựng và cấu trúc lại các thành
phần có trong Website.

Là một ứng dụng web
PHP/MySQL

HTTP

HyperText Transfer Protocol

HTML

Hypertext Markup Language

DVWA

Damn Vulnerable Web App

4


LỜI MỞ ĐẦU
Cùng kỳ Quý I/2020, cuộc tấn công mạng gây ra sự cố vào các hệ thống thông tin tại Việt
Nam có giảm 20%, song nếu tính từ đầu năm 2021 đến nay, số sự cố tấn công mạng vẫn
đang trong xu hướng tăng nhẹ. Tính chung 3 tháng đầu năm nay, Cục An tồn thơng tin,
Bộ TT&TT đã ghi nhận 1.271 cuộc tấn công mạng gây ra sự cố vào các hệ thống thông tin,
giảm 20% so với cùng kỳ Quý I/2020. Trong tổng số 1.271 cuộc tấn công mạng, số sự cố
tấn công Malware được ghi nhận 623 sự cố. Số sự cố tấn công Phishing và tấn công Deface
lần lượt là 449 và 199 sự cố (Hình 1). Riêng trong tháng 3/2021, Cục An tồn thơng tin đã
ghi nhận 491 sự cố tấn công mạng vào các hệ thống thông tin, tăng 8,15% so với tháng
2/2021. Trong đó, số sự cố tấn cơng Malware là 180, cịn tấn cơng Phishing và Deface lần
lượt là 164 và 147.
Thống kê của Cục An tồn thơng tin cho thấy, sau 8 tháng liên tục giảm, trong tháng

3/2021, số lượng địa chỉ IP Việt Nam nằm trong các mạng botnet (mạng máy tính ma) đã
tăng lên con số 1.021.545 địa chỉ, tăng 11,34% so với tháng 02/2021. Tuy nhiên, tính chung
trong Quý I/2021, số lượng địa chỉ IP Việt Nam nằm trong các mạng botnet vẫn giảm
37,44% so với Quý I/2020 và giảm 14,39% so với Quý IV/2020.
Trong những tháng đầu năm, hàng loạt vụ tấn công mạng quy mô lớn diễn ra trên tồn cầu,
điển hình như vụ việc tin tặc Triều Tiên đã cố gắng đột nhập vào hệ thống máy tính của
cơng ty dược phẩm Pfizer để lấy thông tin về vắc-xin và phương pháp điều trị COVID-19;
hay sự việc tin tặc Trung Quốc đã nhắm mục tiêu vào phần mềm email doanh nghiệp của
Microsoft để đánh cắp dữ liệu từ hơn 30.000 tổ chức trên khắp thế giới;… Mới đây nhất
vào ngày 4/4/2021, Forbes cho biết số điện thoại và dữ liệu cá nhân của 533 triệu người
dùng Facebook đã bị rò rỉ.

5


Chương 1 : Lịch sử phát triển
1.1

Giới thiệu về lỗ hổng web và SQL injection
1.1.1 Sự phát triển và lợi ích của web

Trong những ngày đầu trong sự phát triển của Internet, Wordl Wide Web chỉ bao gổm
các website. Nó đơn giản chỉ là nguồn lưu trữ các dữ liệu tĩnh (chủ yếu là văn bản dạng
text). Và nhiệm vụ của một trình duyệt web đơn giản chỉ là việc yêu cầu và hiển thị các
dữ liệu tĩnh này. Ngày nay, World Wide Web không chỉ đơn thuần là lưu trữ các dữ liệu
tĩnh nữa, thay vào đó là rất nhiều các chức năng đa dạng hơn (ví dụ: tìm kiếm, giao dịch
tài chính, đăng ký và đăng nhập...) Có thể nói, với thế giới của World Wide Web chúng
ta có thể làm mọi thứ phục vụ cho cuộc sống của con người. Chính nhờ những lợi ích
tuyệt vời này, mà ngày càng có nhiều doanh nghiệp ưu tiên việc áp dụng các ứng dụng
web vào việc quản lý, tổ chức và phát triển của doanh nghiệp. Song, bên cạnh những lơi

ích này, khi triển khai việc áp dụng cơng nghệ web vào doanh nghiệp cũng đặt ra một vấn
đề lớn cho doanh nghiệp đó là vấn đề bảo mật
1.1.2 Giới thiệu về lỗ hổng web
Trong thực tế, có khá nhiều ứng dụng web khơng an tồn và phải đối mặt với việc bị khai
thác. Dưới đây là một số thống kê về số lượng các lỗ hổng trên ứng dụng web được tìm ra
trong giai đoạn 1996-2013, được thống kê bởi IBM.

Hình 1 Top 10 lỗ hổng bảo mật OWASP
6


Lỗ hổng trên ứng dụng web có thể được chia thành hai phần chính:
• Lỗ hổng trên server: có thể kể tới như lỗ hổng liên quan tới việc xác thực người dùng, lỗ
hổng liên quan tới việc quản lý phiên (sesion), lỗ hổng liên quan tới cơ sở dữ liệu....
• Lỗ hổng trên client: có thể kể tới như Cross-site Scripting, On-site Request Forgery....
1.1.3 SQL injection
Một thực tế rằng, gần như tất cả các ứng dụng đều dựa trên việc lưu trữ dữ liệu để
quản lý dữ liệu mà nó được xử lý trong một ứng dụng. Trong rất nhiều trường hợp, dữ
liệu này có thể là một logic hạt nhân ứng dụng mà nó bao gồm tài khoản người dùng,
thiết lập quyền, thiết lập cấu hình ứng dụng...Lưu trữ dữ liệu đã trở nên linh hoạt hơn
bằng việc tổ chức dữ liệu trong một định dạng cấu trúc, truy cập bằng cách sử dụng các
định dạng truy vấn đã được xác định trước cho từng loại cơ sở dữ liệu, cũng như việc
quản lý các dữ liệu này. Thông thường, ứng dụng sử dụng một cấp độ đặc quyền chung
cho tất cả các loại của việc try cập tới lưu trữ dữ liệu cũng như việc xử lý dữ liệu trên các
ứng dụng người dùng khác nhau. Nếu kẻ tấn cơng có thể tác động tới tương tác của ứng
dụng với lưu trữ dữ liệu, để ăn cắp hoặc sửa đổi các dữ liệu khác nhau, kẻ tấn cơng
thường vượt qua tất cả cơ chế kiểm sốt đối với việc truy cập dữ liệu mà được áp dụng ở
tầng ứng dụng. Hầu hết các ứng dụng web dùng một cơ sở dữ liệu để lưu trữ các thông
tin khác nhau mà nó cần để hoạt động. Ví dụ, một ứng dụng web được triển khai bởi một
nhà bán lẻ trực tuyến có thể sử dụng một cơ sở dữ liệu để lưu trữ các thông tin như: tài

khoản người dùng, danh tính, thơng tin các nhân; mơ tả và giá của các mặt hàng, thông
tin oders, thông tin thanh tốn...
Việc truy cập thơng tin bên trong một cơ sở dữ liệu gọi là Structured Query
Language (SQL). SQL được sử dụng để đọc, cập nhật, thêm, và xóa thơng tin được tổ
chức bên trong cơ sở dữ liệu. SQL là một ngôn ngữ được biên dịch và các ứng dụng web
thường xây dựng các câu lệnh SQL mà nó kết hợp với dữ liệu người dùng cung cấp. Nếu
điều này được thực hiện một cách khơng an tồn, các ứng dụng có thể bị SQL injection.
Lỗi này là một trong những lỗi trong ứng dụng web nổi tiếng nhất đã ảnh hưởng tới các
ứng dụng web. Trong trường hợp nghiêm trọng, SQL injection có thể cho phép kẻ tấn
cơng có thể đọc và thay đổi tất cả dữ liệu được lưu trữ bên trong cơ cở dữ liệu, thâm chí
kiểm sốt máy chủ mà cơ sở dữ liệu này đang chạy. Hãy thử tưởng tượng, nếu một
websites bán hàng trực tuyến, mà kẻ tấn cơng có thể thay đổi giá của mỗi sản phẩm, hoặc
xóa một số mặt hàng trên website thì điều gì sẽ xảy ra?

7


Nguyên nhân do đâu mà sinh ra SQL Injection:
Các nhà phát triển ứng dụng không thực hiện việc kiểm tra đầu vào khi người
dùng đệ trình dữ liệu => Dữ liệu đầu vào của người dùng là một câu lệnh truy vấn của
SQL =>Dẫn tới việc dữ liệu này sẽ tương tác với cơ sở dữ liệu và hiển thị những thông
tin quan trọng
1.2

Lịch sử phát triển của SQL Map
1.2.1 2011

Ngày 10 tháng 4, Bernardo và Miroslav phát hành sqlmap 0.9 có cơng cụ phát hiện SQL
injection hồn tồn được viết lại và mạnh mẽ, khả năng kết nối trực tiếp với máy chủ cơ
sở dữ liệu, hỗ trợ tiêm SQL mù theo thời gian và chèn SQL dựa trên lỗi, hỗ trợ bốn hệ

thống quản lý cơ sở dữ liệu mới và nhiều hơn nữa.
1.2.2 2010
Tháng 12, Bernardo và Miroslav đã cập nhật sqlmap rất nhiều và chuẩn bị phát hành
sqlmap 0.9 trong quý đầu tiên của năm 2011.
• Ngày 14 tháng 3, Bernardo và Miroslav phát hành phiên bản ổn định của sqlmap 0.8 với
nhiều tính năng. Trong số này, hỗ trợ liệt kê và kết xuất tất cả các bảng của cơ sở dữ liệu
có chứa (các) cột do người dùng cung cấp, tính năng ổn định và cải tiến cho các chức
năng tiếp quản, tích hợp cập nhật với Metasploit 3.3.3 và rất nhiều tính năng nhỏ và các
lỗi.
• Tháng 3, video demo sqlmap đã được xuất bản.
• Tháng 1, Bernardo được mời trình bày tại hội nghị AthCon ở Hy Lạp vào tháng 6 năm
2010.
1.2.3 2009
• Ngày 20 tháng 11, Bernardo và Guido trình bày lại nghiên cứu của họ về việc tiếp quản
máy chủ cơ sở dữ liệu tàng hình tại CON dence 2009 ở Warsaw, Ba Lan.
• Ngày 26 tháng 9, bản phát hành sqlmap phiên bản 0.8 alpha được công khai trên kho
lưu trữ chuyển đổi, với tất cả các vectơ tấn cơng được cơng bố tại Hội nghị SOURCE
Barcelona 2009
• Tháng 8, Bernardo được nhận làm diễn giả tại hai hội nghị bảo mật CNTT khác,
SOURCE Barcelona 2009 và CON dence 2009 Warsaw. Nghiên cứu mới này có tiêu đề
Mở rộng khả năng kiểm soát hệ điều hành từ cơ sở dữ liệu.
• Ngày 25 tháng 7, phiên bản ổn định của sqlmap 0.7 đã ra mắt!
8


• Ngày 27 tháng 6, Bernardo trình bày phiên bản cập nhật của SQL injection: Không chỉ
AND 1 = 1 slide tại Diễn đàn Bảo mật Kỹ thuật số lần thứ 2 ở Lisbon, Bồ Đào Nha.
• Ngày 2 tháng 6, sqlmap phiên bản 0.6.4 cũng đã được đưa vào kho lưu trữ Ubuntu.
• Tháng 5, Bernardo trình bày lại nghiên cứu của mình về việc tiếp quản hệ điều hành
thông qua SQL injection tại OWASP AppSec Europe 2009 ở Warsaw, Ba Lan và tại

EUSecWest 2009 ở London, UK.
• Ngày 8 tháng 5, phiên bản sqlmap 0.6.4 đã được chấp nhận rõ ràng trong kho lưu trữ
Debian.
• Ngày 22 tháng 4, bản phát hành sqlmap phiên bản 0.7 chính thức được công bố rộng rãi,
với tất cả các vectơ tấn công được công bố tại Hội nghị Black Hat Europe 2009.
• Ngày 16 tháng 4, Bernardo trình bày nghiên cứu của mình (slide, whitepaper) tại Black
Hat Europe 2009 ở Amsterdam, Hà Lan.
• Ngày 5 tháng 3, Bernardo lần đầu tiên trình bày một số tính năng gần đây của sqlmap
và những cải tiến sắp tới tại một sự kiện quốc tế, Hội nghị OWASP Front Range 2009 ở
Denver, Hoa Kỳ. Bản trình bày có tiêu đề SQL injection: Not only AND 1 = 1.
• Ngày 24 tháng 2, Bernardo được nhận làm diễn giả tại Black Hat Europe 2009 với bài
thuyết trình có tiêu đề Khai thác SQL nâng cao để kiểm sốt tồn bộ hệ điều hành.
• Ngày 3 tháng 2, sqlmap 0.6.4 là bản phát hành điểm cuối cùng cho 0.6: tận dụng kiểm
tra truy vấn xếp chồng được triển khai trong 0.6.3, sqlmap giờ đây có thể được sử dụng
để thực thi bất kỳ câu lệnh SQL tùy ý nào, khơng chỉ SELECT nữa. Ngồi ra, nhiều tính
năng đã được ổn định, tinh chỉnh và cải thiện về tốc độ trong phiên bản này.
• Ngày 9 tháng 1, Bernardo trình bày nội bộ khai thác SQL injection tại một sự kiện riêng
ở London, Vương quốc Anh.
1.2.4 2008
• Ngày 18 tháng 12, sqlmap 0.6.3 được phát hành với tính năng hỗ trợ truy xuất mục tiêu
từ bản ghi proxy của Burp và WebScarab, hỗ trợ kiểm tra các truy vấn xếp chồng lên
nhau trước khi đưa vào SQL mù dựa trên thời gian
• Ngày 2 tháng 11, phiên bản sqlmap 0.6.2 chỉ là bản phát hành lỗi.
• Ngày 20 tháng 10, bản phát hành điểm đầu tiên sqlmap, 0.6.1, được cơng bố rộng rãi.
• Ngày 1 tháng 9, gần một năm sau bản phát hành trước, sqlmap 0.6 ra đời với tính năng
tái cấu trúc mã hồn chỉnh, hỗ trợ thực thi các câu lệnh SQL SELECT tùy ý, thêm các tùy
chọn để liệt kê và kết xuất thơng tin cụ thể, các gói cài đặt hồn tồn mới cho Debian ,
Red Hat, Windows và nhiều hơn nữa.
9



• Tháng 8, hai danh sách gửi thư chung được tạo trên SourceForge.
• Tháng 1, kho lưu trữ phát triển bản phụ sqlmap được chuyển khỏi SourceForge và
chuyển sang chế độ riêng tư trong một thời gian
1.2.5 2007
• Ngày 4 tháng 11, bản phát hành 0.5 đánh dấu sự kết thúc của việc tham gia cuộc thi
OWASP Spring of Code 2007. Bernardo đã hoàn thành tất cả các đối tượng propsed bao
gồm cả hỗ trợ ban đầu cho Oracle, hỗ trợ nâng cao cho việc tiêm SQL truy vấn UNION
và hỗ trợ kiểm tra và khai thác việc đưa SQL vào các tiêu đề HTTP Cookie và UserAgent.
• Ngày 15 tháng 6, Bernardo phát hành phiên bản 0.4 do sự kiện quan trọng đầu tiên của
OWASP Spring of Code 2007. Bản phát hành này có các cải tiến đối với cơng cụ DBMS
ngerprint, hỗ trợ tính tốn thời gian đến ước tính, các tùy chọn để liệt kê dữ liệu cụ thể từ
máy chủ cơ sở dữ liệu và hệ thống ghi nhật ký hồn tồn mới.
• Tháng 4, mặc dù sqlmap khơng phải là dự án OWASP, nó vẫn được chấp nhận, trong số
nhiều dự án mã nguồn mở khác cho OWASP Spring of Code 2007.
• Ngày 30 tháng 3, Bernardo áp dụng cho OWASP Spring of Code 2007. • Ngày 20 tháng
1, phiên bản sqlmap 0.3 được phát hành, có hỗ trợ ban đầu cho Microsoft SQL Server, hỗ
trợ kiểm tra và khai thác các điểm tiêm SQL truy vấn UNION và các điểm tiêm trong
tham số POST.
1.2.6 2006
• Ngày 13 tháng 12, Bernardo phát hành phiên bản 0.2 với những cải tiến lớn đối với các
chức năng của dấu vân tay DBMS và thay thế thuật toán suy luận cũ bằng thuật tốn phân
giác.
• Tháng 9, Daniele rời dự án, Bernardo Damele A. G. tiếp quản.
• Tháng 8, Daniele bổ sung hỗ trợ ban đầu cho PostgreSQL và phát hành phiên bản 0.1.
• Ngày 25 tháng 7, Daniele Bellucci đăng ký dự án sqlmap trên SourceForge và phát triển
nó trên kho lưu trữ chuyển đổi SourceForge. Khung được triển khai và hỗ trợ hạn chế cho
MySQL được thêm vào.
1.2.7


2021

• Ngày 3 tháng 1, phiên bản ổn định 1.5 được phát hành
1.2.8 2020

10


• Ngày 7 tháng 11, Miroslav trình bày sqlmap - "One Tiny Step At a Time" tại Bsides
Chile 2020 (trực tuyến).
Ngày 1 tháng 1, phiên bản ổn định 1.4 được phát hành
1.2.9 2019
• Ngày 8 tháng 5, hỗ trợ cho Python 3 được thực hiện.
• Ngày 5 tháng 1, phiên bản ổn định 1.3 được phát hành (thay đổi).
1.2.10 2018
• Ngày 8 tháng 1, phiên bản ổn định 1.2 được phát hành (thay đổi).
1.2.11 2017
• Ngày 2 tháng 1, phiên bản ổn định 1.1 được phát hành (thay đổi).
1.2.12 2016
• Ngày 27 tháng 2, phiên bản ổn định 1.0 được phát hành (tập thay đổi).
1.2.13 2015
• Ngày 14 tháng 10, Miroslav trình bày sqlmap tại Navaja Negra & ConectaCon 2015 ở
Albacete, Tây Ban Nha.
1.2.14 2014
• Ngày 19 tháng 9, Miroslav trình bày các phương pháp Heuristic được sử dụng trong
sqlmap (slide) tại FSEC 2013 ở Varazdin, Croatia.
• Ngày 23 tháng 5, Miroslav trình bày sqlmap - Under the Hood (slide) tại PHDays 2013
ở Moscow, Nga.
1.2.15 2012
• Ngày 26 tháng 6, quá trình phát triển sqlmap được chuyển sang GitHub. Một trang chủ

mới được triển khai. Kho lưu trữ Subversion bị loại bỏ cũng như dự án lưu trữ trên
SourceForge.
• Ngày 31 tháng 5, Miroslav trình bày nghiên cứu về tính năng lọc DNS của mình bằng
cách sử dụng sqlmap (trang trình bày) kèm theo báo cáo chính thức Truy xuất dữ liệu qua
DNS trong SQL Injection Attacks tại PHDays 2012 ở Moscow, Nga.

11


Chương 2 : Tìm hiểu cơng cụ SQLMap và cài đặt
2.1 Tìm hiểu tool SQLMap.
2.1.1 SqlMap là gì?
▪ SQLMAP là một trong những chương trình mã nguồn mở thuộc nhóm cơng cụ sử
dụng cho mục đích pentest kiểm tra lỗi bảo mật – khai thác lỗi SQL Injection và
chiếm quyền server dữ liệu. Cơng cụ này có một engine cực kì mạnh mẽ, rất
nhiều tính năng đi kèm cho các pentester thực hiện quy trình kiểm tra.

Hình 2 Giao diện SQLmap trong Kali Linux

▪ Mặc định thì chương trình “sqlmap” được cài sẵn trên các OS Pentest như Kali
Linux,.. Cũng cần nhớ rằng, SQLMAP là một công cụ được xây dựng trên nền
tảng ngôn ngữ Python nên hệ thống máy tính của bạn phải hỗ trợ Python để chạy
được tool này.
▪ Hệ điều hành Kali Linux hoặc Back Track 5 thì đã được tích hợp sẵn SQLMap.
Nhưng cịn Windows thì bạn phải cài đặt thêm Python và SQLMAP để sử dụng.
▪ Bởi vì SQLMap được viết bằng Python và cần có thư viện Python trong máy tính
để chạy.
12



2.1.2 Một số tính năng chính
▪ Hỗ trợ đầy đủ các hệ thống Cơ Sở Dữ Liệu như : MySQL, Oracle, PostgreSQL,
Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and
SAP MaxDB.
▪ Hỗ trợ hoàn toàn 6 kĩ thuật SQL Injection phổ biến : boolean-based blind, timebased blind, error-based, UNION query, stacked queries and out-of-band
▪ Hỗ trợ thu thập thông tin user, mật khẩu được hash, quyền hạn, cơ sở dữ liệu,
bảng và cột.
▪ Hỗ trợ download và upload bất kì file lên hệ thống Cơ Sở Dữ Liệu server nếu
chương trình dịch vụ phía server là : MySQL, PostgreSQL và Microsoft SQL
Server.
▪ Hỗ trợ crack mật khẩu bằng phương pháp tấn công directionary-based.
▪ Hỗ trợ kết nối trực tiếp đến CSDL nếu hoạt động dịch vụ CSDL phía server cho
phép và bị khai thác được thông tin đăng nhập.
▪ Giúp bạn bẻ khoá mã băm của mật khẩu người dùng. Nghĩa là bạn có thể giải mã
ngược và lấy được mật khẩu của bất cứ người dùng nào mà bạn muốn.
▪ Cho phép sao chép (backup) lại cơ sở dữ liệu theo ý bạn.
▪ Cung cấp Full quyền điều khiển cơ sở dữ liệu khi xâm nhập thành công.
▪ Cho phép bạn Download và Upload File thoải mái lên Database cực nhanh chóng.
▪ Hỗ trợ kết nối trực tiếp với cơ sở dữ liệu mà không cần thông qua SQL injection,
bằng cách cung cấp thông tin đăng nhập DBMS, địa chỉ IP, cổng và tên cơ sở dữ
liệu.
▪ Có thể cung cấp một URL mục tiêu duy nhất, nhận danh sách mục tiêu từ tệp nhật
ký yêu cầu proxy Burp hoặc WebScarab, nhận toàn bộ yêu cầu HTTP từ tệp văn
bản hoặc nhận danh sách mục tiêu bằng cách cung cấp sqlmap với Google dork
truy vấn Google công cụ tìm kiếm và phân tích cú pháp trang kết quả của nó. Bạn
cũng có thể xác định phạm vi dựa trên biểu thức chính quy được sử dụng để xác
định địa chỉ nào được phân tích cú pháp để kiểm tra.
▪ Các thử nghiệm đã cung cấp các tham số GET, tham số POST, giá trị tiêu đề
HTTP Cookie, giá trị tiêu đề HTTP User-Agent và giá trị tiêu đề HTTP Referer để
xác định và khai thác lỗ hổng SQL injection. Cũng có thể chỉ định danh sách (các)

tham số cụ thể được phân tách bằng dấu phẩy để kiểm tra.
▪ Tùy chọn để chỉ định số lượng tối đa các yêu cầu HTTP (S) đồng thời (đa luồng)
để tăng tốc các kỹ thuật chèn SQL mù. Ngược lại, cũng có thể chỉ định số giây cần
giữ giữa mỗi u cầu HTTP (S). Những cơng tắc tối ưu hóa khác để tăng tốc độ
khai thác cũng được thực hiện.

13


▪ Hỗ trợ chuỗi tiêu đề HTTP Cookie, hữu ích khi ứng dụng web yêu cầu xác thực
dựa trên cookie và bạn có dữ liệu như vậy hoặc trong trường hợp bạn chỉ muốn
kiểm tra và khai thác SQL injection trên các giá trị tiêu đề đó. Bạn cũng có thể chỉ
định ln mã hóa URL cho Cookie.
▪ Hỗ trợ phân tích cú pháp các biểu mẫu HTML từ URL đích và giả mạo các yêu
cầu HTTP (S) đối với các trang đó để kiểm tra các tham số biểu mẫu chống lại các
lỗ hổng.
▪ Tính chi tiết và linh hoạt về tính năng của người dùng.
▪ Thời gian ước tính hỗ trợ cho mỗi truy vấn, được cập nhật theo thời gian thực, để
cung cấp cho người dùng cái nhìn tổng quan về thời gian sẽ mất bao lâu để truy
xuất đầu ra của các truy vấn.
▪ Tự động lưu phiên (truy vấn và đầu ra của chúng, ngay cả khi được truy xuất một
phần) trên tệp văn bản trong thời gian thực trong khi tìm nạp dữ liệu và tiếp tục
tiêm bằng cách phân tích cú pháp tệp phiên.
▪ Hỗ trợ đọc các tùy chọn từ tệp INI cấu hình thay vì chỉ định mỗi lần tất cả các trên
dịng lệnh. Cũng hỗ trợ tạo tệp cấu hình dựa trên các dòng lệnh được cung cấp.
▪ Hỗ trợ sao chép cấu trúc bảng cơ sở dữ liệu back-end và các mục nhập trên cơ sở
dữ liệu SQLite 3 cục bộ.
▪ Tùy chọn cập nhật sqlmap lên phiên bản phát triển mới nhất từ kho lưu trữ
subversion.
▪ Hỗ trợ phân tích cú pháp phản hồi HTTP (S) và hiển thị bất kỳ thông báo lỗi

DBMS nào cho người dùng.
▪ Tích hợp với các dự án nguồn mở bảo mật CNTT khác, Metasploit và w3af.

2.2 Hướng dẫn cài đặt tool SqlMap trên Window.
Bước 1: Tải file cài đặt Python và SQLMap
Link cài đặt Python: />Link cài đặt SQLMap: />Nhớ chọn phiên bản cho phù hợp với hệ điều hành của bạn . Trong lúc cài nhớ chọn cài
cả pythonpath.
Bước 2: Cài đặt Python Mở file python-2.7.10.msi và chọn “install for all users” sau
đó click Next
14


Hình 3 Mở file python vừa tải về

Chọn nơi cài đặt (mặc định là C:\Python27)

Hình 4 Chọn đường dẫn lưu

Đợi cho chương trình cài đặt và Click Finish để kết thúc
15


Hình 5 Hồn thành cài đặt

Bước 3: Giải nén file sqlmap vừa tải sau đó copy tồn bộ thư mục sqlmap vào
đường dẫn C:\Python27

Hình 6 Mở file SQLMap để cài đặt

Mở cmd và điều hướng tới thư mục vừa lưu SQLMap


16


Hình 7 Chạy lệnh trong Cmd xem cài đặt thành cơng

Tất cả đã hồn thành, bây giờ có thể sử dụng sqlmap

Ví dụ thư mục chứa sqlmap của tơi nằm ở : C:\Users\Admin\Music\sqlmap
Thì ta đánh lệnh :
cd C:\Users\Admin\Music\sqlmap
Và để test chương trình ta chạy :
python sqlmap.py -h
2.3 Hướng dẫn sử dụng SqlMap trong Kali Linux

17


SQLMap đã được cài đặt sẵn trong KaliĐể sử dụng, vào mục Applications ->
Exploitation Tool -> SQLMap hoặc tại Terminal gõ sqlmap
-

Nếu chưa cài đặt thì có thể cài đặt như sau:
Câu lệnh : sudo apt-get install sqlmap

Hình 8 Cài đặt và cập nhật SQLmap trong Kali

18



Chương 3 : Tìm hiểu các tập lệnh SqlMap
3.1 Các kĩ thuật
SQLMAP có thể phát hiện và khai thác năm kiểu chèn SQL khác nhau:
▪ Boolean-based Blind: sqlmap thay thế hoặc nối vào tham số bị ảnh hưởng trong
yêu cầu HTTP, một chuỗi câu lệnh SQL hợp lệ về mặt cú pháp chứa câu lệnh con
SELECT hoặc bất kỳ câu lệnh SQL nào khác mà người dùng muốn truy xuất đầu
ra. Đối với mỗi phản hồi HTTP, bằng cách so sánh giữa các tiêu đề / nội dung
phản hồi HTTP với yêu cầu ban đầu, công cụ suy ra đầu ra của ký tự câu lệnh
được chèn theo từng ký tự. Ngồi ra, người dùng có thể cung cấp một chuỗi hoặc
biểu thức chính quy để đối sánh trên các trang True. Thuật toán phân tách được
thực hiện trong sqlmap để thực hiện kỹ thuật này có thể tìm nạp từng ký tự của
đầu ra với tối đa bảy yêu cầu HTTP. Trong trường hợp đầu ra không nằm trong bộ
ký tự thuần văn bản rõ ràng, sqlmap sẽ điều chỉnh thuật toán với phạm vi lớn hơn
để phát hiện đầu ra.
▪ Time-based blind:sqlmap thay thế hoặc thêm vào tham số bị ảnh hưởng trong yêu
cầu HTTP, một chuỗi câu lệnh SQL hợp lệ về mặt cú pháp chứa một truy vấn giữ
DBMS back-end trả về trong một số giây nhất định. Đối với mỗi phản hồi HTTP,
bằng cách so sánh giữa thời gian phản hồi HTTP với yêu cầu ban đầu, công cụ suy
ra đầu ra của ký tự câu lệnh được chèn theo từng ký tự. Giống như đối với kỹ thuật
dựa trên boolean, thuật toán phân giác được áp dụng.
▪ Error-based:sqlmap thay thế hoặc thêm vào tham số bị ảnh hưởng một câu lệnh
kích hoạt thơng báo lỗi dành riêng cho cơ sở dữ liệu và phân tích cú pháp các tiêu
đề và nội dung phản hồi HTTP để tìm kiếm các thơng báo lỗi DBMS có chứa
chuỗi ký tự được xác định trước được chèn và đầu ra câu lệnh truy vấn con bên
trong. Kỹ thuật này chỉ hoạt động khi ứng dụng web đã được cấu hình để tiết lộ
thơng báo lỗi của hệ thống quản lý cơ sở dữ liệu phía sau.
▪ UNION query-based:sqlmap gắn vào tham số bị ảnh hưởng một câu lệnh SQL
hợp lệ về mặt cú pháp bắt đầu bằng UNION ALL SELECT. Techique này hoạt
động khi trang ứng dụng web chuyển trực tiếp đầu ra của câu lệnh SELECT trong
vòng lặp for hoặc tương tự, để mỗi dòng của đầu ra truy vấn được in trên nội dung

trang. sqlmap cũng có thể khai thác một phần (mục nhập đơn) lỗ hổng SQL
injection của truy vấn UNION xảy ra khi đầu ra của câu lệnh không được tạo chu
kỳ trong cấu trúc for, trong khi chỉ mục đầu tiên của đầu ra truy vấn được hiển thị.
▪ Các truy vấn xếp chồng, còn được gọi là piggy backing: sqlmap kiểm tra nếu ứng
dụng web hỗ trợ các truy vấn xếp chồng và sau đó, trong trường hợp có hỗ trợ, nó
19


sẽ thêm vào tham số bị ảnh hưởng trong yêu cầu HTTP, dấu chấm phẩy (;) theo
sau câu lệnh SQL để được thực thi. Kỹ thuật này hữu ích để chạy các câu lệnh
SQL khác với SELECT, chẳng hạn như câu lệnh định nghĩa dữ liệu hoặc thao tác
dữ liệu, có thể dẫn đến quyền truy cập đọc và ghi hệ thống tệp và thực thi lệnh của
hệ điều hành tùy thuộc vào hệ thống quản lý cơ sở dữ liệu phía sau và phiên đặc
quyền của người dùng.
3.2 Thư viện bên thứ ba
- Thư viện và công cụ trong thư mục phụ:

20


21


3.3 Các options trong SQLMAP
3.3.1 python sqlmap [options]
-h, --help
-hh
--version

Hiển thị thơng báo trợ giúp cơ bản và thốt

Hiển thị thơng báo trợ giúp nâng cao và thoát
Hiển thị phiên bản của chương trình và thốt

Mục tiêu:
Các tùy chọn này có thể được sử dụng để chỉ định cách kết nối với URL mục tiêu (các)
mục tiêu:
-u URL, --url = URL Mục tiêu
-d
-l LOGFILE
proxy Burp hoặc WebScarab
-m BULKFILE
-r REQUESTFILE
-g GOOGLEDORK
-c CONFIGFILE
-A AGENT, --user ..
-H HEADER, --hea ..
127.0.0.1")
--method = METHOD
--data = DATA
= 1")
--param-del = PARA ..
(ví dụ: &)
--cookie = COOKIE HTTP
a8d127e ..")
--cookie-del = COO ..
(ví dụ:;)
--live-cookies = L ..
trị cập nhật
--load-cookies = L ..
--drop-set-cookie


URL (ví dụ: " />Chuỗi kết nối TRỰC TIẾP để kết nối cơ sở dữ liệu
trực tiếp
Phân tích cú pháp (các) mục tiêu từ tệp nhật ký
Quét nhiều mục tiêu được đưa ra trong một tệp
văn bản
Tải yêu cầu HTTP từ một tệp
Xử lý kết quả Google dork dưới dạng URL mục
tiêu
Tải các tùy chọn từ tệp INI cấu hình
Giá trị tiêu đề HTTP User-Agent
Tiêu đề phụ (ví dụ: "X-Forwarded-For:
Buộc sử dụng phương thức HTTP đã cho (ví dụ:
PUT)
Chuỗi dữ liệu sẽ được gửi qua POST (ví dụ: "id
Ký tự được sử dụng để tách các giá trị tham số
giá trị header Cookie (ví dụ: "PHPSESSID =
Ký tự được sử dụng để tách các giá trị cookie
Tệp cookie trực tiếp được sử dụng để tải các giá
Tệp chứa cookie ở định dạng Netscape / wget
Bỏ qua tiêu đề Set-Cookie khỏi phản hồi

22


--random-agent
HTTP được chọn ngẫu nhiên
--host = HOST
--referer
--headers = HEADERS

fr \ nETag: 123")
--auth-type = AUTH ..
NTLM hoặc PKI)
--auth-cred = AUTH ..
--auth-file = AUTH ..
nhân
--ignore-code = IG ..
--ignore-proxy
--ignore-redirects
--ignore-timeouts
--proxy = PROXY
--proxy-cred = PRO ..
--proxy-file = PRO ..
--proxy-freq = PRO ..
sách nhất định
--tor
--tor-port = TORPORT
--tor-type = TORTYPE
SOCKS5 (mặc định))
--check-tor
không
--delay = DELAY
--timeout = TIMEOUT
(mặc định là 30)
--retries = RETRIES
3)
--randomize = RPARAM
nhất định
--safe-url = SAFEURL
quá trình thử nghiệm

--safe-post = SAFE ..
--safe-req = SAFER ..

Sử dụng giá trị tiêu đề Tác nhân Người dùng
Giá trị tiêu đề máy chủ HTTP
Giá trị tiêu đề HTTP Referer
Tiêu đề bổ sung (ví dụ: "Chấp nhận-Ngơn ngữ:
Kiểu xác thực HTTP (Cơ bản, Thông báo,
Thông tin xác thực HTTP (tên: mật khẩu)
Chứng chỉ PEM xác thực HTTP / tệp khóa cá
Bỏ qua mã lỗi HTTP (có vấn đề) (ví dụ: 401)
Bỏ qua cài đặt proxy mặc định của hệ thống
Bỏ qua các nỗ lực chuyển hướng
Bỏ qua thời gian chờ kết nối
Sử dụng proxy để kết nối với URL đích
Thơng tin xác thực proxy (tên: mật khẩu)
Tải danh sách proxy từ một tệp
Yêu cầu giữa việc thay đổi proxy từ một danh
Sử dụng mạng ẩn danh Tor
Đặt cổng proxy Tor khác với mặc định
Đặt loại proxy Tor (HTTP, SOCKS4 hoặc
Kiểm tra xem Tor có được sử dụng đúng cách
Độ trễ trong vài giây giữa mỗi yêu cầu HTTP
Giây để đợi trước khi kết nối hết thời gian chờ
Thử lại khi kết nối hết thời gian chờ (mặc định
Thay đổi ngẫu nhiên giá trị cho (các) tham số
địa chỉ URL để truy cập thường xuyên trong
ĐĂNG dữ liệu để gửi đến một URL an toàn
Tải yêu cầu HTTP an toàn từ một tệp


23


--safe-freq = SAFE ..
Yêu cầu thường xuyên giữa các lần truy cập vào
một URL an tồn
--skip-urlencode
Bỏ qua mã hóa URL của dữ liệu trọng tải
--csrf-token = CSR ..
Tham số được sử dụng để giữ mã thông báo
chống CSRF
--csrf-url = CSRFURL
địa chỉ URL cần truy cập để trích xuất mã thơng
báo chống CSRF
--csrf-method = CS ..
Phương thức HTTP để sử dụng trong khi truy
cập trang mã thông báo chống CSRF
--csrf-retries = C ..
Thử truy xuất mã thông báo chống CSRF (mặc
định là 0)
--force-ssl
Buộc sử dụng SSL / HTTPS
--chunked
Sử dụng các yêu cầu chuyển mã hóa phân đoạn
HTTP (POST)
3.3.2 Injection
Các tùy chọn này có thể được sử dụng để chỉ định các tham số nào cần kiểm tra,
cung cấp tập lệnh giả mạo tùy chọn:
-p TESTPARAMETER
(Các) thơng số có thể kiểm tra

--skip = SKIP
Bỏ qua thử nghiệm đối với (các) thông số đã
cho
--skip-static
Bỏ qua các thơng số kiểm tra khơng có vẻ là
động
--param -lude = .. Regexp
để loại trừ các tham số khỏi thử nghiệm (ví dụ:
"ses")
--param-filter = P..
Chọn (các) thơng số có thể kiểm tra theo vị trí
(ví dụ: "POST")
--dbms = DBMS
Buộc DBMS back-end đến giá trị được cung
cấp
--dbms-cred = DBMS ..
Thông tin xác thực DBMS (người dùng: mật
khẩu)
--os = OS
Buộc hệ điều hành DBMS back-end tới giá trị
được cung cấp
--invalid-bignum
Sử dụng các số lớn để làm mất hiệu lực các giá
trị
--invalid-logic
Sử dụng các phép toán logic để làm mất hiệu lực
các giá trị
24



--invalid-string
Sử dụng các chuỗi ngẫu nhiên để làm mất hiệu
lực các giá trị
--no-cast
Tắt cơ chế truyền tải trọng
--no-Escape
Tắt cơ chế thoát chuỗi
--prefix = PREFIX
Injection chuỗi tiền tố trọng tải
--suffix = SUFFIX
Tiêm hậu tố trọng tải chuỗi
--tamper = TAMPER
Sử dụng (các) tập lệnh đã cho để giả mạo dữ
liệu đưa vào
3.3.3 Detection
Các tùy chọn này có thể được sử dụng để tùy chỉnh giai đoạn phát hiện
--level = LEVEL
--string = STRING
True
--not-string = NOT ..
--regexp = REGEXP
--code = CODE
True

Mức độ kiểm tra cần thực hiện (1-5, mặc định 1)
Chuỗi để đối sánh khi truy vấn được đánh giá là
Chuỗi để khớp khi truy vấn được đánh giá là Sai
Regexp để khớp khi truy vấn được đánh giá là True
Mã HTTP để khớp khi truy vấn được đánh giá là


3.3.4 Techniques
Các tùy chọn này có thể được sử dụng để điều chỉnh kiểm tra việc đưa vào SQL cụ thể
--technique = TECH ..
"BEUSTQ")
--time-sec = TIMESEC
--union-cols = UCOLS
UNION
--union-char = CHAR
--union-from = TABLE
truy vấn UNION chèn SQL
--dns-domain = DNS ..
nhập DNS
--second-url = SEC ..
--second-req = SEC ..

Các kỹ thuật chèn SQL để sử dụng (mặc định là
Giây để trì hỗn phản hồi DBMS (mặc định 5)
Phạm vi cột để kiểm tra việc đưa vào SQL truy vấn
UCHAR để sử dụng cho số cột bruteforcing
UFROM để sử dụng trong FROM một phần của
Tên miền được sử dụng cho cuộc tấn công xâm
URL trang kết quả đã tìm kiếm phản hồi thứ hai
Tải yêu cầu HTTP bậc hai từ tệp

3.3.5 Enummeration
Các tùy chọn này có thể được sử dụng để liệt kê cơ sở dữ liệu back-end thông tin hệ thống quản
lý, cấu trúc và dữ liệu có trong bảng:
-a, - all
Truy xuất mọi thứ
-b, --banner

Truy xuất biểu ngữ DBMS
--current-user
Truy xuất người dùng hiện tại của DBMS
25


×