Mysql溯源-任意文件读取👻
Mysql溯源-任意文件读取
前言
读了《MySQL蜜罐获取攻击者微信ID》的文章,文中说明了通过mysql蜜罐读取攻击者微信ID的过程,抱着学习的态度尝试了一下
原理
mysql中有一个load data local infile函数能够读取本地文件到mysql数据库中。当攻击者用爆破mysql密码的扫描器扫描到我们的mysql并连接上的时候,客户端(攻击者)会自动发起一个查询,我们(服务端)会给与一个回应,我们在回应的数据包中加入load data local infile读取攻击者的本地文件到我们数据库中,达到反制的目的。

具体过程
LOAD DATA INFILE
LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并写入一个表中。文件名称必须为一个文字字符串。
LOAD DATA INFILE 是 SELECT ... INTO OUTFILE 的相对语句。把表的数据备份到文件使用SELECT ... INTO OUTFILE,从备份文件恢复表数据,使用 LOAD DATA INFILE。基本语法如下:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char' ]
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name = expr,...)]
这个功能默认是关闭的,当我们本地mysql服务器没有开启这个功能执行时会报错:

我们可以通过如下命令查看功能状态
show global variables like 'local_infile';

我们通过如下命令开启这个功能:
set global local_infile=1;
然后我们通过如下命令尝试读取本地的C盘目录下的1.txt文件

load data local infile 'C:/1.txt' into table test fields terminated by '\n';

通信过程
我们模拟一下攻击者通过扫描器连接MySQL数据库的通信过程
工具:Wireshark
首先我们通过Wireshark抓取通信流量查看一下通信过程
注意:
当自己电脑既是客户端又是服务器时,互相访问时流量并没有经过网卡,windows系统又没有提供本地回环网络的接口,
wireshark在windows系统上默认使用的是WinPcap来抓包的,用它监控网络的话只能看到经过网卡的流量,看不到访问
localhost的流量,所以才会出现第一次连接始终没有数据包的状况。解决这个问题的两种办法是:要么服务器和客户端
不要在同一台机器上,要么用Npcap来替换掉WinPcap,Npcap提供环回接口
- 首先是Greeting包,返回了服务端的版本信息

- 接着是客户端发起连接请求

- 然后经过TCP的三次握手之后,客户端会自动发起一次查询,服务端会给予一个回应

我们就是在上面的最后一步回应中插入读取客户端本地文件的语句,从而读取客户端的本地文件到数据库表中。
漏洞复现
下载地址:https://github.com/allyshka/Rogue-MySql-Server
- 解压压缩包
然后编辑rogue_mysql_server.py这个文件,修改里面的读取文件的路径(windows或者linux的路径都行)

用python启动
rogue_mysql_server.py查看数据库端口是否开启
nmap -sS -p- 192.168.33.222

- 我们用自己的数据库连接软件(例如Navicat)去连接我们刚刚创建的恶意mysql服务器
- IP:192.168.33.222
- PORT:3306
- USERNAME:root
- PASSWORD:(空的就行)

- 然后我们会看到当前目录下面多了一个mysql.log文件,我们发现本地的C:/1.txt文件被读取到了mysql.log文件中

实验结束
参考文章
- https://blog.csdn.net/weixin_46164380/article/details/105230747
- https://blog.csdn.net/Java0258/article/details/112332367
Mysql溯源-任意文件读取👻的更多相关文章
- mysql任意文件读取漏洞复现
前言 第一次得知该漏洞后找了一些文章去看. 一开始不明白这个漏洞是怎么来的,只知道通过在服务端运行poc脚本就可以读取客户端的任意文件,直接找到网上准备好的靶机进行测试,发现可行,然后就拿别人的poc ...
- Grafana 任意文件读取漏洞 (CVE-2021-43798)学习
漏洞概述 Grafana是一个跨平台.开源的数据可视化网络应用程序平台.用户配置连接的数据源之后,Grafana可以在网络浏览器里显示数据图表和警告. Grafana 的读取文件接口存在未授权,且未对 ...
- 应用服务器Glassfish任意文件读取漏洞
catalogue . 前言和技术背景 . Glassfish安装配置 . 漏洞利用 . 漏洞缓解(修复) 1. 前言和技术背景 0x1: GlassFish是什么 GlassFish 是用于构建 J ...
- 安全研究 | Jenkins 任意文件读取漏洞分析
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云鼎实验室 发表于云+社区专栏 一.漏洞背景 漏洞编号:CVE-2018-1999002 漏洞等级:高危 Jenkins 7 月 18 ...
- python从任意文件读取邮件地址输出的代码
如下的资料是关于python从任意文件读取邮件地址输出的代码. # This script takes whatever you throw at stdin and outputs email ad ...
- feifeicms后台任意文件读取
前台大略看了下,本身内容比较简单,经过“洗礼”后以及没什么问题了,基本上输入都过滤了. 这次审计找到了一个后台的任意文件读取,可以读取数据库配置文件. 在DataAction.class.php文件中 ...
- 禅知Pro 1.6 前台任意文件读取 | 代码审计
禅知 Pro v1.6 前台任意文件读取 | 代码审计 蝉知专业版是基于蝉知企业门户系统开源版开发,继承了蝉知本身的优秀功能.相对于蝉知开源版增强了商品的属性自定义.属性价格定制.物流跟踪.微信支付. ...
- 【代码审计】大米CMS_V5.5.3 任意文件读取漏洞分析
0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...
- 【代码审计】XYHCMS V3.5任意文件读取漏洞分析
0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...
随机推荐
- A Child's History of England.15
And indeed it did. For, the great army landing from the great fleet, near Exeter, went forward, layi ...
- 外网无法访问hdfs文件系统
由于本地测试和服务器不在一个局域网,安装的hadoop配置文件是以内网ip作为机器间通信的ip. 在这种情况下,我们能够访问到namenode机器, namenode会给我们数据所在机器的ip地址供我 ...
- 剑指 Offer 10- I. 斐波那契数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N)).斐波那契数列的定义如下: F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N ...
- ORACLE lag,lead
oracle中想取对应列前几行或者后几行的数据时可以使用lag和lead分析函数 lag:是滞后的意思,表示本行数据是要查询的数据后面,即查询之前行的记录. lead:是领队的意思,表示本行数据是要查 ...
- d3动态坐标轴
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- springboot-MVC 过滤器使用
一.前言 一下代码以SSO用户登录列子代码.完整代码https://gitee.com/xuxueli0323/xxl-sso 二.使用 2.1 创建过滤器 创建一个过滤器,实现Filter 接口 p ...
- 拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
参考文献:https://www.cnblogs.com/sddai/p/5728195.html 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush ...
- 记一次单机Nginx调优,效果立竿见影
一.物理环境 1.系统是Centos 8,系统配置 2核4G,8M带宽,一台很轻的应用服务器. 2.站点部署情况.但站点部署两个实例,占用两个端口,使用nginx 负载转发到这两个web站点. 二. ...
- hooks中,useEffect无限调用问题产生的原因
前言:我在我的另一篇博客中有说道useEffect监听对象或者数组时会导致useEffect无限执行,并给予了解决方案-useEffect无限调用问题 .后来我想从其产生根源去理解并解决这个问题. 原 ...
- ios self.和_区别
- "self."调用该类的setter或getter方法,"_"直接获取自己的实例变量.property 和 instance variable 是有区别的. ...