2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > mysql 导出 客户端_Mysql 数据库攻击面

mysql 导出 客户端_Mysql 数据库攻击面

时间:2023-11-29 10:20:13

相关推荐

mysql 导出 客户端_Mysql 数据库攻击面

0x01 简单介绍

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

0x1 版本介绍

0x02 基础指令

0x1 创建

create

0x2 查看

show

0x3 更新

GRANT

0x4 文件读写

SELECT

0x03 攻击面分析

0x1 Mysql 客户端任意文件读

适用范围:全版本 MySQL/MariaDB Client 条件:客户端连接时开启 –enable-local-infile

从结果上来看,客户端读取了自身指定的数据,抓取数据包分析整个流程。

1. Client Send 3306

192.168.0.114 是SqlServer 192.168.0.115为客户端

2. Server Send Greeting packet

服务端返回一个server端基础信息表包含版本,协议类型,salt值,server 功能项

这里有一个server 功能表

3. Client Auth and Send capability

这个包可以说是客户端的登录包,包含用户名,密码,还有一份客户端能力表。

从图中可以看出client连接时开启了 --enable-local-infile 配置

4. Client Queries

接下来就是一些正常的客户端查询了

5. Client Send LOAD DATA LOCAL

最终客户端发送下面指令

6. Server Send Filename

服务端收到这个执行语句后会给客户端以特定的协议格式发送一个包,类似于下面,功能类似于告诉客户端把这个文件发给我让我看看,如果连接时配置 –enable-local-infile 或者dsn 加上了allowAllFiles=true

7. 其他

攻击脚本 Rogue_Mysql/allyshka/Rogue-MySql-Server

PHP有一些mysql客户端扩展,如mysql、mysqli、pdo,除了pdo外都可以被利用,因为pdo默认禁止读取本地数据,你需要通过设置PDO::MYSQL_ATTR_LOCAL_INFILE为true来启用本地数据读取。同样的,如果客户端使用的是python的MySQLdb,也需要先设置local_infile连接选项。

0x2 Mysql 服务端文件读写

适用范围:全版本 MySQL/MariaDB Client 条件:服务端配置可读写目录和正确的用户权限

1. 安全保护

mysql服务端的文件读取有很多的条件限制,主要是mysql数据库的配置,为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。你可以通过执行show variables like '%secure%'来查看:

secure-file-priv参数是用来限制LOAD DATA, SELECT ... OUTFILE, DUMPFILE and LOAD_FILE()可以操作的文件夹。

secure-file-priv的值可分为三种情况:

secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出

当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下,此时如果读写发生在其他文件夹,就会报错

当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

除此之外读取或写入文件必须拥有可操作的用户权限否则会报错:

for user

2. 读取文件

SELECT

create

3. 写入文件

select

0x3 Mysql 身份认证绕过漏洞(CVE--2122)

版本范围 :MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23 are not. MySQL versions from 5.1.63, 5.5.24, 5.6.6 are not.

当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库。

漏洞复现/vulhub/vulhub/tree/master/mysql/CVE--2122直接搭建docker环境

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。