原理

我们可以伪造一个 MySQL 的服务端,当有客户端连接上这个假服务端的时候,我们就可以任意读取客户端的一个文件,当然前提是运行客户端的用户具有读取该文件的权限。

这个问题主要是出在LOAD DATA INFILE这个语法上,这个语法主要是用于读取一个文件的内容并且放到一个表中
有两种语法,分别是:

1、load data infile “/data/data.csv” into table TestTable;

2、load data local infile "/home/data.csv" into table TestTable;

第一个语法是读取本地文件,第二个语法是读取客户端(client)文件,我们要利用的就是第二个语法
我们来看下这个语法的处理流程

从上图中,可以看到,第二步,其实是服务端命令客户端干事,也就是说,核心是服务端,服务端命令客户端干啥,客户端就干啥。如果我们把目标网站当成一个客户端,攻击者伪造一个服务端,然后把第二步操作改成读取客户端文件,这样就造成了一个任意文件读取漏洞

漏洞利用

1、下载利用工具 https://github.com/allyshka/Rogue-MySql-Server 用Python2运行。编辑该文件,下图的filelist就是我们要读取的文件

2、受害者连接我们伪造的服务端。

3、受害者文件被被读取,并保存到攻击者mysql.log中

出现场景

1、结合重装漏洞进行利用
2、数据迁移等需要连接外部数据的功能点

结合重装漏洞

如果不了解重装漏洞的,可以参考公众号前面的文章。
利用重装漏洞来到重装页面,数据库填上我们伪造的地址,即可读取任意文件

数据迁移等功能点

这是某云的一个数据迁移功能,连接地址填上我们伪造的mysql服务端地址,即可读取任意文件

漏洞修复

  • 禁掉load读取文件

  • 使用加密链接ssl-mode=VERIFY_IDENTITY

思考

可以看到,这个漏洞本质是受害者主动连接攻击者,我们把我们服务端当成蜜罐,客户端当成攻击者,这样是不是就能反击攻击者呢。

参考文章

https://y4er.com/post/mysql-read-client-file/

mysql重装_连我mysql读你文件相关推荐

  1. mysql猎豹_猎豹网校MySQL数据库

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 猎豹网校MySQL数据库 链接:http://pan.baidu.com/s/1i3wyPjn 密码:qxhm 教程目录 第1章 了解SQL 1.1 数据 ...

  2. java 读取mysql日志_如何在MySQL中查看日志文件?

    我已经读过Mysql服务器创建了一个日志文件,它记录了所有活动 - 比如何时执行查询和执行什么查询 . 谁能告诉我我的系统中存在哪些内容?我怎么读呢? 基本上,我需要使用不同的输入备份数据库[两个日期 ...

  3. 什么是mysql节点_什么是MySQL集群

    一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...

  4. 黑马程序员mysql答案_干货|MySQL常见问题及答案汇总

    MySQL是一种开放源代码的关系型数据库管理系统.数据库按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据. 在学习MySQ ...

  5. .net连接mysql数据_.net连接MYSQL数据库的方法及示例!

    连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...

  6. 怎么重启网站mysql数据库_如何重启MySQL数据库服务

    服务器的启动和停止 停止:net stop mysql 启动:net start mysql -------------------------mysql mode相关问题-------------- ...

  7. 修改 mysql 字符集_如何修改MySQL字符集

    匿名用户 1级 2017-02-25 回答 首先,MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容 及编码,后者是对前者进行比较操作 ...

  8. linux c mysql 封装_本人对MYSQL C API做的一个封装,希望对linux C++程序员有点帮助,同时欢迎拍砖!...

    本人对MYSQL  C API做的一个封装,使用很简单,构造一个对象,就可直接执行SQL,但对于需返回结果的查询语句,对其数据集没做封装,仍需直接调用mysql c api对其进行处理,本人将下次完成 ...

  9. 无法为您重置MySQL密码_无法重置MySQL的root密码

    问题描述 我需要重置本地mysql安装的root密码,但不会让我.我已经试过了: $ sudo /etc/init.d/mysql stop * Stopping MySQL database ser ...

最新文章

  1. handlerinterceptoradapter 获取请求参数_SSM框架防止重复请求
  2. python requests java_java实现类似python requests的session功能
  3. hdu 4556 Stern-Brocot Tree
  4. PBOC中文件结构,文件类型解析
  5. [Java基础]生产者和消费者模式概述与案例分析
  6. 异步EJB只是一个Gi头吗?
  7. 新浪微博爬虫设计(Python版)
  8. 2019年最值得关注的几个公众号,好评率高达99.99%
  9. timeSetEvent的用法(一)
  10. 学习 灰色2017.12.08
  11. 等保测评--网络安全等级保护定级指南
  12. android内窥镜安装软件,DEPSTECH内窥镜
  13. better-scroll 在vue中使用on监听事件,事件无效问题解决
  14. kernel支持4k/16k/64k pagesize
  15. 利用辗转相除法——求最大公约数(详解)
  16. LDPC编码原理概述
  17. VS2017 新建项目没有MFC项目选项
  18. sql重复数据只取一条记录
  19. iOS开发学无止境 - UIStackView如何让你的开发更简单
  20. python的学习笔记案例1--汇率兑换1.0

热门文章

  1. Netbackup Done status 6 解决方法
  2. Visual Studio 2008创建项目(ATL)
  3. windows服务器上安装的有mysql环境怎么创建数据库_Windows环境MySQL数据库安装方法...
  4. html5长按 排序,H5 长按 拖拽排序的实现
  5. 测试用例的“真相”与“事实” 这9个事实让人扎心!
  6. java贝叶斯分类器 开源_贝叶斯分类器
  7. 软件测试52讲-安全第一:渗透测试
  8. 《python接口自动化测试》笔记
  9. java技术不行有复试怎么办_复试答不上来怎么办?记住这四点不慌!
  10. 让0基础纯小白也能上手写Python,干货分享(二)