您当前的位置: 首页 >  服务器

合天网安实验室

暂无认证

  • 0浏览

    0关注

    748博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

浅析MySQL恶意服务器读取文件原理

合天网安实验室 发布时间:2022-03-25 15:54:29 ,浏览量:0

 

 

 前言

注:本文不涉及对MySQL协议报文研究,仅讲解原理,并且做部分演示。

 搭建MySQL恶意服务器读取文件这件事,虽然直接利用门槛较高,但是由于在网上看到了一种比较新颖的利用方式(利用社会工程学引诱用户连接MySQL进而读取用户文件),个人觉得比较有意思,总结了一下攻击原理以及攻击方式,因此就有了这篇文章。

 原理

 在阐述具体原理之前,先介绍几个SQL语句,以便后文理解

 首先在tmp目录下新建一个tmp.txt

 内容如下:

 然后执行下方SQL语句,即可将tmp.txt文件导入其中

mysql> load data local infile "/tmp/tmp.txt" into table test fields terminated by '\n';
Query OK, 3 rows affected (2.63 sec)
Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
​
mysql> select * from Test;
+-------+
| name  |
+-------+
| admin |
| user  |
| Lxxx  |
+-------+
3 rows in set (0.00 sec)
  • load data local infile语句会读取客户端本地的文件

  • load data infile语句会读取服务端本地的文件

  • terminated by表示以某某字符分割,默认为Tab,这里我设置为了\n

 这个时候可能就会绕不清楚,什么是服务端,什么是客户端?

 因为一般情况下,调试SQL都是在本机,并且数据库也在本机,这样的情况就导致,客户端和服务端都是在本地,有点难区分,下面我用一张图来简述。

 在本地,由于客户端和服务端都是在同一个磁盘下,因此,在本地,无论是否加local都是可以将文件传入数据库的,而后面讲到利用MySQL恶意服务器读取文件的漏洞,就是需要使用local,来达到将文件带出的目的。

 下面我画了两张图,第一张图是正常业务流程,第二张图是攻击者恶意攻击的流程

 正常的后端业务流程如下:

 当攻击者劫持后端服务器,并且在公网中搭建恶意的MySQL后,流程图如下:

 这样攻击者就可以在后端达到任意文件下载的目的。

 演示

虽说在之前的某个CTF比赛出过类似的题目,但是我这里还是使用ThinkPHP3.2.3存在的反序列化漏洞,结合MySQL恶意服务器读取敏感文件,进而RCE的样例。

 首先在本地先启动一个ThinkPHP3.2.3的框架,连接好数据库,在Application/Home/Controller/HelloController.class.php控制器中写一个反序列化入口

            
关注
打赏
1665306545
查看更多评论
立即登录/注册

微信扫码登录

0.0602s