SQL 注入攻击是 Web 安全领域最常见的漏洞之一,今天给大家介绍一个自动化 SQL 注入和数据库接管工具:sqlmap。sqlmap 作为一款开源渗透测试工具,能帮助安全测试人员快速发现并利用 SQL 注入漏洞接管数据库服务器。
功能特性
sqlmap 使用 Python 语言开发,主要功能包括:
- 支持各种主流数据库,包括 MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB、Informix、MariaDB、MemSQL、TiDB、CockroachDB、HSQLDB、H2、MonetDB、Apache Derby、Amazon Redshift、Vertica、Mckoi、Presto、Altibase、MimerSQL、CrateDB、Greenplum、Drizzle、Apache Ignite、Cubrid、InterSystems Cache、IRIS、eXtremeDB、FrontBase、Raima Database Manager、YugabyteDB、Aurora、OpenGauss、ClickHouse 以及 Virtuoso 等。
- 六种 SQL注入技术:布尔盲注、时间盲注、错误注入、UNION 查询注入、堆叠查询以及 OOB 注入。
- 支持通过 DBMS 登录凭证、IP 地址、端口和数据库名称直接连接到数据库,不需通过 SQL 注入进行连接。
- 可以枚举用户名、密码哈希值、权限、角色、数据库、表名以及列名。
- 支持自动识别密码哈希值的格式并且基于字典进行破解。
- 可以导出完整的数据表,也可以导出部分数据行或者指定字段的数据,甚至可以导出字段中的部分内容。
- 支持数据库名称,表名以及字段名的搜索。例如,可以搜索名称包含 name 或者 pass 的字段,从而找到应用程序的用户登录信息。
- 对于 MySQL、PostgreSQL 以及 Microsoft SQL Server,可以下载或者上传任何文件。
- 对于 MySQL、PostgreSQL 以及 Microsoft SQL Server,可以执行任意操作系统命令并获取返回结果。
- 支持在攻击者和数据库服务器操作系统之间建立带外(out-of-band)有状态 TCP 连接。这个连接通道可以是交互式命令提示符、Meterpreter 会话或图形用户界面 (VNC) 会话。
- 可以通过 Meterpreter 命令 getsystem 提升数据库进程用户的特权。
使用示例
首先打开官方网址 https://sqlmap.org/,点击右侧“Download”按钮进行下载:
选择 zip 或者 tarball 文件进行下载,下载完成后解压即可。
sqlmap 基于 Python 开发,因此我们需要提前安装 Python 环境。然后进入安装目录,执行命令 python sqlmap.py -h 查看帮助信息:
python sqlmap.py -h
___
__H__
___ ___[(]_____ ___ ___ {1.9.2.15#dev}
|_ -| . [(] | .'| . |
|___|_ ["]_|_|_|__,| _|
|_|V... |_| https://sqlmap.org
Usage: sqlmap.py [options]
Options:
-h, --help Show basic help message and exit
-hh Show advanced help message and exit
--version Show program's version number and exit
-v VERBOSE Verbosity level: 0-6 (default 1)
Target:
At least one of these options has to be provided to define the
target(s)
-u URL, --url=URL Target URL (e.g. "http://www.site.com/vuln.php?id=1")
-g GOOGLEDORK Process Google dork results as target URLs
...
以下是一个使用示例:
使用以下命令检测目标网站是否存在注入点:
python sqlmap.py -u "http://example.com/page?id=1" --batch
其中,-u 用于指定目标 URL;–batch:自动选择默认选项,避免交互式询问。详细介绍请参考官方文档。
注意事项
不要未经对方同意使用 sqlmap 对其网站进行漏洞测试。