MYSQl任意文件读取
实现原理:
攻击者搭建一个伪造的mysql服务器,当有用户去连接上这个伪造的服务器时。
攻击者就可以任意读取受害者的文件内容。
主要是因为LOAD DATA INFILE这个语法
作用是读取一个文件的内容并且放到一个表中。
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安全知识:
专注于普及网络安全知识。团队已出版《Web安全攻防:渗透测试实战指南》,《内网安全攻防:渗透测试实战指南》,目前在编Python渗透测试,JAVA代码审计和二进制逆向方面的书籍。团队公众号定期分享关于CTF靶场、内网渗透、APT方面技术干货,从零开始、以实战落地为主,致力于做一个实用的干货分享型公众号。官方网站:www.ms08067.com