mysql服务端读取客户端漏洞,Mysql LOAD DATA读取客户端任意文件漏洞复现(原理分析)...

环境搭建

怎么设置Mysql支持外联?

MAC上设置Mysql环境允许外联

这个只是暂时作为备忘,权当一个知识点,哈哈

漏洞复现

LOAD DATA INFILE

第一种是读取服务器上的文件内容存入表中,第二个是读取客户端中的文件内容存入表中(显然我们应该利用的是第二种)

漏洞分析

服务端向客户端发送greeting包和服务器的一些banner信息

ce41d51b77ae4fa099cf936b3c9c1a1c.png

以及一些设置

2b4f95a574132228dd4f7c31778488d5.png

显然LOAD DATA LOCAL被设置了

cf0a67b5bb3bb30d2d58968aeef3118d.png

客户端发送登录请求,包含用户名与LOAD DATA LOCAL有关信息

f8fd058ccf144d930ffab73ab41f55cd.png

接着发送了一系列的查询请求

f3d116df81dbbbb155cf8e70f2b6632d.png

接着客户端发送一个查询包后,我们返回的是一个Response TABULAR包

a5c6ad52ed37ebef5b99fbb8c166e1d0.png

内容是要读取文件的绝对路径

a0677e5a7d2781e068dfe6297e8da095.png

之后再下一个客户端的包中,我们真的可以得到内容

6c3636b8dec187a1ad6c8858de9702aa.png

思路整理

由分析可知,客户端在连接Mysql服务端的时候,若是在发送查询包后(Mysql连接都时候就会有初始化查询,换句话说只要连接到我们,我们就可以发送Paylaod),我们返回客户端文件的绝对路径,客户端就会把文件内容发送过来(只要我们发送的包是标准的Mysql协议,这些在Mysql的官方文件都是有的).

我本地MAC的Mysql就不行(版本是8.0.17,因为不会发送查询语句)

用了windows的Phpstudy试了一下,还是可以的

faf4d8a204bb242468d66a4ee9cb5e27.png

POC分析(伪造Mysql服务端)

第一步

看一看关于脚本是怎么构造的

325a61f5d8565f3c0a0b8399192273c3.png

可以看见服务器这边是直接写死的东西(伪造的是Ubuntu主机).

另外这个greeting的包是有一定格式的,这里面直接粘贴的是大佬们的格式

第二步

这个是脚本中的认证成功后发送的包

之后就等待用户发送query包,我们返回请求客户端文件的paylaod语句

值得一提这个包是有一定格式的

我们在wireshark中可以看到

c33d72ee1f78074bcaf299f76c99ae56.png

至于为什么是12个字节(/etc/passwd是11个字节),猜测是后面有\x00的存在

第四步获取到信息

没啥好说的直接输出就行了

利用的exp

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值