Py学习  »  DATABASE

MYSQl任意文件读取

Ms08067安全实验室 • 4 年前 • 566 次点击  

MYSQl任意文件读取

实现原理:

攻击者搭建一个伪造的mysql服务器,当有用户去连接上这个伪造的服务器时。

攻击者就可以任意读取受害者的文件内容。

主要是因为LOAD DATA INFILE这个语法

作用是读取一个文件的内容并且放到一个表中。

  1. load datalocalinfile"/home/data.csv"intotableTestTable;

读取客户端文件,

漏洞利用:

漏洞利用的相关工具及源码已在github,先亮出地址:https://github.com/allyshka/Rogue-MySql-Server

1.在python2运行脚本文件roguemysqlserver.py

在roguemysqlserver.py文件中filelist 为读取受害者的文件地址。

运行py脚本文件。

2.受害者来连接攻击者伪造的mysql服务器,这里使用虚拟机开了一台centos为受害者来连接。

由于我们搭建的mysql为欺骗受害者访问,所有这里采用账号密码都为root。

3.受害者在连接的时候文件已经被读取到我们的本地文件mysql.log中

下面为受害机器centos中的内容:

可以看到受害者centos的/etc/passwd的内容都被读取到了攻击者的mysql.log文件中。

应用场景:

1.配合网站的重装漏洞进行利用读取服务器的任意文件。

2.数据迁移等需要连接外部数据的功能点

3.搭建在蜜罐上读取攻击者的信息。

漏洞修复:

禁掉load读取文件

使用加密链接ssl-mode=VERIFY_IDENTITY

参考文章

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


可扫描下面二维码加入知识星球继续学习WEB安全知识:








Ms08067安全实验室
专注于普及网络安全知识。团队已出版《Web安全攻防:渗透测试实战指南》,《内网安全攻防:渗透测试实战指南》,目前在编Python渗透测试,JAVA代码审计和二进制逆向方面的书籍。
团队公众号定期分享关于CTF靶场、内网渗透、APT方面技术干货,从零开始、以实战落地为主,致力于做一个实用的干货分享型公众号。

官方网站:www.ms08067.com

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53280
 
566 次点击