侧边栏壁纸
  • 累计撰写 135 篇文章
  • 累计创建 1 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

SQLMap

概述

SQLMap是一款开源的渗透测试工具,可用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限等操作

SQLMap支持的数据库有:MySQL、Oracle、Microsoft SQL Server、Microsoft Access,IBM DB2、SQLite等主流数据库

检测类型:union联合查询注入、布尔盲注、时间盲注、报错注入、堆叠注入

参数使用

输出详细程度参数 -v

-v 参数用来指定输出数据的详细程度,一共有七个等级(0–6)

默认为1,可使用-vv 代替-v 2

等级 说明
0 只输出Python出错回溯信息、错误和关键信息
1 增加输出普通信息和警告信息
2 增加输出调试信息
3 增加输出已注入的payloads
4 增加输出HTTP请求
5 增加输出HTTP响应头
6 增加输出HTTP响应内容

目标参数

参数 说明
-d 直连数据库
-u URL,指定需要检测的目标URL
-l 从Burp代理日志文件中解析目标地址
-m 从文本文件中批量获取目标
-r 从文件中读取HTTP请求
–purge 清除历史缓存
–flush-session 清除上次扫描缓存

注意

使用 -d 时,例如:python2 sqlmap.py -d “mysql://root:123456@192.168.136.1:3306/security”

需要先使用Python安装“python-pymysql” 第三方库,才能够直连MySQL数据库【直连其他数据库与连接MySQL数据库类似】

请求参数

指定连接目标的方式,有以下几种参数

参数 说明
–method=METHOD 强制使用提供的HTTP方法,如:GET、POST、PUT等
–data=DATA 使用POST方法发送数据,如:–data=“id=1&user=admin”
–cookie=COOKIE 指定HTTP cookie
–drop-set-cookie 忽略HTTP响应中的Set-Cookie参数
–user-agent=AGENT 指定HTTP User-Agent
–random-agent 使用随机的HTTP User Agent
–referer=REFERER 指定HTTP Referer
-H HEADER 设置额外的HTTP 头参数,如:-H “X-Forwarded-For:127.0.0.1”
–headers=HEADERS 设置额外的HTTP头参数,必须以换行符分隔
–delay=10 设置每个HTTP请求的延迟秒数
–safe-freq=SAFE 每访问两次给定的合法URL才发送一次测试请求
–batch 会自动选择默认项(Y)

注入参数

用于指定要测试的参数

参数 说明
-p 指定需要测试的参数
–skip=SKIP 指定要跳过的参数
–dbms=DBMS 指定DBMS类型,如:–dbms=MySQL
–os=OS 指定DBMS服务器的操作系统类型
–prefix=PREFIX 注入payload的前缀字符串
–suffix=SUFFIX 注入payload的后缀字符串
–tamper-TAMPER 用给定脚本参数注入数据

检测参数

用于指定检测的等级以及风险参数

–level:指定检测级别,共有五个等级,等级越高,检测范围越大(默认为1)

参数 说明
–level 1 检测GET和POST
–level 2 增加检测HTTP Cookie
–level 3 增加检测User-Agent和Referer
–level 4 增加检测host
–level 5 增加检测host
  • level >= 2时会检测cookie是否有注入
  • level >= 3时会检测User-Agent和Referer是否有注入
  • level >= 5时会检测Host是否存在注入漏洞

不确定哪个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值

–risk:风险程度,有三个等级(默认为1)

参数 说明
–risk 1 测试大部分的测试语句
–risk 2 增加基于事件性的测试语句
–risk 3 增加OR语句的sql注入测试

技术参数

以下参数用于调整特定的SQL注入技术的测试方法

参数 说明
–technique= 后面跟使用的SQL注入技术
B 布尔型盲注
T 时间型盲注
U 联合查询注入
S 堆查询注入
E 报错型注入
Q 内联查询注入
–time-sec=TIMESEC 设置延迟注入的时间,默认为5s
–second-order= 设置二阶响应的结果显示页面的URL,该选项用于二阶SQL注入

枚举参数

参数 说明
-a、–all 获取所有信息、数据
-b、–banner 获取banner,返回数据库的版本号
–current-user 获取当前用户
–current-db 获取当前数据库名
–hostname 获取服务器的主机名
–is-dba 探测当前用户是否为数据库管理员
–users 枚举出所有用户
–passwords 枚举出所有用户的密码哈希
–privileges 枚举出所有用户特权级
–roles 枚举出所有用户角色
–dbs 枚举出所有数据库名
–tables 枚举出数据库中的所有表名
–columns 枚举出指定表中的所有列
–schema 枚举出所有模式
–count 获取数据表的数目
–dump 导出数据表项
–stop 10 只取前10行数据
-D 数据库名 指定要枚举的数据库
-T 数据表名 指定要枚举的数据表
-C 字段名 指定要枚举的字段
–sql-query=QUERY 指定要执行的SQL语句
–sql-shell 调出交互式 SQL shell

系统交互式shell

参数: --os-shell

使用该参数后,就可执行相应的系统命令

使用条件

1、攻击者需要知道网站的绝对路径(sqlmap中可爆破路径)

2、用户账号权限为管理员(网站必须是root权限或者为Administrator)

3、GPC为off,php主动转义的功能关闭

4、secure_file_priv为空

上传webshell

原理

通过into outfile 导出文件,利用SQL语句拿到shell权限

–os-shell本质是利用into outfile函数将一个可以上传文件的网页(tmpulcjf.php)写入到网站根目录下,然后利用tmpulcjf.php上传了一个tmpbtrnt.php文件,可以执行系统命令,连接密码为cmd

补充

导入导出的权限在MySQL数据库中是由secure_file_priv参数控制,当这个参数后面为null时,表示不允许导入导出;如果为具体的文件夹时,表示只允许在这个文件夹下导入导出;如果secure_file_priv参数后面没有值(为空)时,表示可以在任何文件夹下导入导出

当MySQL版本在5.7以上时,secure_file_priv参数的值默认为null,如果管理员没有修改过该参数,则无法使用–os-shell

0
博主关闭了所有页面的评论