phpMyAdmin LOAD DATA INFILE 任意文件读取漏洞

转载自:[phpMyAdmin LOAD DATA INFILE 任意文件读取漏洞](http://www.vulnspy.com/cn-phpmyadmin-load-data-local-file-read-local-file/phpmyadmin_load_data_infile_%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96%E6%BC%8F%E6%B4%9E/)

有许多文章指出一个恶意的 MySQL 服务器可以利用LOAD DATA LOCAL命令来读取MYSQL客户端的任意文件。根据这篇公开的文章 (phpMyAdmin开启远程登陆导致本地文件读取),我们知道 phpMyAdmin 在AllowArbitraryServer开启(允许连接到任意MySQL服务器)的情况下(如云主机/云数据库提供商),可以利用该缺陷来读取phpMyAdmin服务器上的文件。

VulnSpy 已为大家提供在线 phpMyAdmin 环境地址:https://github.com/vulnspy/phpmyadmin-4.8.4-allowarbitraryserver

漏洞细节

LOAD DATA LOCAL导致的任意文件读取是个由来已久的问题,根据前人们的研究:

我们知道下列的下列情况都存在该问题:

  • MySQL Client
  • PHP + mysql/mysqli
  • PHP + PDO (MYSQL_ATTR_LOCAL_INFILE)
  • Python + MySQLdb
  • Python3 + mysqlclient
  • Java + JDBC Driver
  • ...

phpMyAdmin 属于典型的 php+mysqli 组合,当 AllowArbitraryServer 开启的情况下(默认关闭),我们可以让phpMyAdmin连接到恶意的MySQL服务器来触发任意文件读取漏洞。

漏洞利用

EXP: https://github.com/Gifts/Rogue-MySql-Server/blob/master/rogue_mysql_server.py

此处我们使用 VulnSpy 的在线 phpMyAdmin 环境作演示:

1. 点击右上角 START TO HACK 创建实验环境

创建成功后会自动生成2个虚拟环境:

  • phpmyadmin:运行phpmyadmin,目标主机
  • mysql:运行mysql,假设为黑客的服务器

2. 登录mysql的终端

1). 点击控制栏终端图标,选择db

2). 点击右上角Connect按钮,登录终端

3). 终端下运行 cd /root/exp/进入/root/exp/目录

4). 使用vim编辑rogue_mysql_server.py文件,将PORT = 3306修改为PORT = 3307

PORT为监听端口,filelist为要读取的文件

5). 运行python rogue_mysql_server.py,启动服务

6). 打开phpMyAdmin的登录页面,地址输入db:3307、用户名vulnspy、密码vulnspy,提交登录。

7). 回到db的终端,如果文件读取成功会将文件内容记录到mysql.log文件中

在该演示中成功读取/etc/passwd文件

原文链接:http://www.vulnspy.com/cn-phpmyadmin-load-data-local-file-read-local-file/phpmyadmin_load_data_infile_%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96%E6%BC%8F%E6%B4%9E/

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java学习网

spring在ssh框架中的作用学习

spring在ssh框架中的作用学习 在SSH框假中spring充当了管理容器的角色。我们都知道Hibernate用来做持久层,因为它将JDBC做...

25590
来自专栏bboysoul

使用shell创建一个简单的菜单bash select用法

写脚本的时候会碰到创建交互式菜单的情况,比如碰到写一个lnmp一键安装脚本的时候会让用户选择安装mysql的版本或者选择安装各种组件,总之在创建菜单是很常见的。

13920
来自专栏Laoqi's Linux运维专列

phpMyadmin 服务简单安全加固

18220
来自专栏Django Scrapy

ZOOKEEPER安装

1.将ZOOKEEPER安装包上传到服务器上 /usr/local 2.解压并重命名目录 tar xzvf zookeeper-3.4.8.tar.gz ...

392100
来自专栏实用工具入门教程

如何部署 Bacula Server

Bacula是一种开源网络备份解决方案,允许您创建备份并执行计算机系统的数据恢复。它非常灵活和强大,这使得它在配置时稍微麻烦,适合在许多情况下进行备份。备份系统...

45230
来自专栏Java技术分享

J2Cache——Java两级缓存框架

J2Cache 是 OSChina 目前正在使用的两级缓存框架。第一级缓存使用 Ehcache,第二级缓存使用 Redis 。由于大量的缓存读取会导致 L2 的...

42790
来自专栏大神带我来搬砖

防止DHCP获取的DNS修改/etc/resolv.conf文件

想在centos系统中使用DHCP分配IP,但是使用自定义的DNS服务器,这时重启时会将DHCP获得的DNS服务器写到/etc/resolv.conf文件中,优...

36450
来自专栏python3

Centos7 安装python虚拟环境+Django

鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和...

29820
来自专栏云计算教程系列

如何在CentOS 7上安装Bacula Server

Bacula是一种开源网络备份解决方案,允许您创建备份并执行计算机系统的数据恢复。它非常灵活和强大,这使得它在配置时稍微麻烦,适合在许多情况下进行备份。备份系统...

80230
来自专栏农夫安全

中间件漏洞详解

前言 所属的类别 web服务器:IIS、Apache、nginx、tomcat、weblogic、websphere等。 web中间件:apache tomca...

61680

扫码关注云+社区

领取腾讯云代金券