Kali Linux工具集简介 -sqlmap

sqlmap 一个开源的渗透测试工具(自动化的SQL注入工具)

可以自动检测和利用SQL注入漏洞并接管数据库服务器。

它配备了强大的检测引擎,针对终极渗透测试人员的众多特性,以及从数据库指纹识别,从数据库获取数据,到访问底层文件系统以及在操作系统上通过out-带外连接。

特点

主要功能是扫描,发现并利用给定的URL的SQL注入漏洞

  1. 完全支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP MaxDB,HSQLDB和Informix数据库管理系统。
  2. 完全支持六种SQL注入技术:基于布尔的盲,基于时间的盲,基于错误,基于UNION查询堆栈查询带外
  3. 支持直接连接数据库而不通过SQL注入,通过提供DBMS凭证,IP地址,端口和数据库名称。
  4. 支持枚举用户,密码哈希,权限,角色,数据库,表和列。
  5. 自动识别密码哈希格式,并支持使用基于字典的攻击对其进行破解。
  6. 支持完全转储数据库表,一系列条目或特定列根据用户的选择。用户也可以选择仅从每列的条目转储一系列字符。
  7. 支持搜索特定的数据库名称 (跨所有数据库的特定表或所有数据库表的特定列)。例如,这对于识别包含自定义应用程序凭证的表格非常有用,其中相关列的名称包含名称和传递等字符串。
  8. 当数据库软件是MySQL,PostgreSQL或Microsoft SQL Server时,支持从数据库服务器底层文件系统下载和上载任何文件。
  9. 当数据库软件是MySQL,PostgreSQL或Microsoft SQL Server时,支持执行任意命令并检索数据库服务器底层操作系统上的标准输出
  10. 支持在攻击者机器和数据库服务器底层操作系统之间建立一个带外状态TCP连接
    该通道可以是 交互式命令提示符,Meterpreter会话或图形用户界面(VNC)会话,可以根据用户的选择进行选择。

通过MetasploitMeterpreter 命令支持数据库进程 用户权限升级 getsystem

大致流程如下:

1.根据url 判断数据库
2.根据数据库 判断数据库名(根据权限限制 ,可省略)
3.根据数据库名 判断数据表
4.根据数据表 判断数据表键值
5.根据数据表键值 猜出数据内容 转存数据表键值
6.按加密规则,反向 破解密码

当然如果此网站 确定存在注入漏洞 ,而且你也知道数据库表名,键值
直接最后一步就可以了, 或者使用其他工具直接破解

-单项的后接具体值,代表指定
-- 为未指定,待猜测,或待破解

实战流程(之前得到的网站地址):

启动 SQLMAP,并对给定的URL开始判断并 检索 当前数据库和当前用户
sqlmap  -u "http://localhost/?id=1" 
        --dbs –current-db  –current-user

选项简介 :
1、–current-user:获取当前用户

2、–current-db : 获取当前数据库

3、-u : 指定目标URL

4、-b : 获取DBMS(数据库管理系统) banner

附:

5、–cookie : 设置我们的cookie值“将security安全等级从high设置为low”

可加 –cookie = "MUID=3F169DAF1EFE6D6302CA97681AFE6BE2”

6、–dbs : 枚举DBMS中的数据库

  1. –dbms 数据库类型 : 可指定数据库类型
    Kali Linux工具集简介 -sqlmap_第1张图片

键入 y, 确定跳过 其他 DBMS 测试(已经确定是 access数据库下)

a

对于其余的测试,是否要包含所有针对“Microsoft Access”扩展提供级别(1)和风险(1)值的测试?
未确定时,键入 y

ss

id存在漏洞 , 问你是否继续测试其他漏洞?
     为了节省时间 , 键入n

得到结果为:
Kali Linux工具集简介 -sqlmap_第2张图片

得到操作系统 Windows 2003 or XP
web服务器 为 IIS 6.0
数据库为 Access

然而 没有 用户名 和 库名

猜解 数据库表 (以当前的 权限)
sqlmap  -u "http://localhost/?id=1"- tables

会出现一个错误
we

不能猜解数据库表名,问 是否使用已存在常用的 的 公共表名猜测
键入 ‘y’

ss

问你要选择哪个文件?(这就需要运气了,判断里面是否有所匹配的)
直接 默认,键入回车

后会要求你键入 共同运行的匹配规则的 线程数 ,自己看情况考虑选取(1~10)

在其后的运行中,
as

会列出匹配到的表 , 以上只展示 了一个admin , 几乎就差不多了….

猜解 数据表的键值 (以当前的 权限)

运行

sqlmap  -u "http://localhost/?id=1" 
         –T admin --columns

选项简介
1、 -T 表名 : 要枚举的DBMS数据库表
2、–columns : 枚举DBMS数据库表中的所有列

得到
sd

出现错误 , 仍无法得到表中键值

问是否需要公共键值猜测
键入y
后面与之前相同仍需要 选择文件 ,选择线程数目 .

we

已经猜测出大概…

得到
sqlmap  -u "http://localhost/?id=1" 
         –T admin -C loginname,username,password --dump

选项简介

1、-T 表名: 要枚举的DBMS数据表

2、-C 键值名: 要枚举的DBMS数据表中的列

3、–dump : 转储DBMS数据表项

若需要解密的会提醒,后面会存到文件里,终端也会显示……

你可能感兴趣的:(日常涨知识,日常学习)