MySQL 服务端恶意读取客户端任意文件漏洞复现

写在前面

看到一篇文章讲利用mysql服务器恶意读取客户端文件的文章 拿来复现一下

利用语句

LOAD DATA INFILE

LOAD DATA INFILE
语句用于高速地从一个文本文件中读取行,并写入一个表中。文件名称必须为一个文字字符串。

LOAD DATA INFILE 是 SELECT … INTO OUTFILE 的相对语句。把表的数据备份到文件使用SELECT… INTO OUTFILE ,从备份文件恢复表数据,使用 LOAD DATA INFILE 。

原理

该漏洞的核心原理在于MySQL服务端可以利用 LOAD DATA LOCAL
命令来读取MYSQL客户端的任意文件。
MySQL客户端和服务端在通信过程中是通过对话的形式来实现的,客户端发送一个操作请求,然后服务端根据客服端发送的请求来响应客户端。在这个过程中,如果客户端的一个操作需要两步请求才能完成,那么当它发送完第一个请求过后并不会存储这个请求,而是直接就丢掉了,所以第二步就是根据服务端的响应来继续进行,这里服务端就可以欺骗客户端做一些其他的事情。
但是一般的MySQL客户端和服务端通信都是客服端发送一个MySQL语句然后服务端根据这条语句查询后返回结果,没有什么可以利用的。不过我们前面说了,MySQL有个 LOAD DATA INFILE
命令,可以读取一个文件内容并插入到表中。

1.受害者向攻击者提供的服务器发起请求,并尝试进行身份认证
2.攻击者的MySQL接受到受害者的连接请求,攻击者发送正常的问候、身份验证正确,并且向受害者的MySQL客户端请求文件。
3.受害者的MySQL客户端认为身份验证正确,执行攻击者的发来的请求,通过 LOAD DATA INLINE
4. 功能将文件内容发送回攻击者的MySQL服务器。 攻击者收到受害者服务器上的信息,读取文件成功,攻击完成。

实现

服务端 我的centos阿里云服务器
客户端 我的kali

目的:读取我kali中的文件

首先将脚本在centos上跑起来 我随意开了个3333 端口 (别忘了加上安全组
nmap 扫了一下 发现打开了

之后用我的kali去连接我的 centos

mysql -h 8.135.132.214 -P 3333  -u root -p

不需要密码 直接连

注意!
这里一般需要加上 -enable-local-infile
变成

mysql -h 8.135.132.214 -P 3333  -u root -p -enable-local-infile

要不然 好像没权限读到。。。

再进如 mysql.log 发现成功读到了我们想要读到的文件 成功!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值