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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

转载自:phpMyAdmin LOAD DATA INFILE 任意文件读取漏洞

有许多文章指出一个恶意的 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文件

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
存储 Python
【可定制、转换时间戳】解析nc文件,并保存为csv文件
【可定制、转换时间戳】解析nc文件,并保存为csv文件
226 4
|
7月前
|
SQL 安全 关系型数据库
MySQL注入Load_File()函数应用
MySQL注入Load_File()函数应用
95 0
|
11月前
|
安全 Java 应用服务中间件
tomcat的put方法任意文件写入漏洞浅谈
tomcat的put方法任意文件写入漏洞浅谈
206 0
|
网络协议 NoSQL 应用服务中间件
php OSS 文件读取和写入文件,workerman 生成临时文件并输出浏览器下载
php OSS 文件读取和写入文件,workerman 生成临时文件并输出浏览器下载
497 0
|
关系型数据库 MySQL
SparkDSL修改版之从csv文件读取数据并写入Mysql
SparkDSL修改版之从csv文件读取数据并写入Mysql
159 1
php读取与写入文件(详解)
php读取与写入文件(详解)
122 0
php读取与写入文件(详解)
|
关系型数据库 MySQL 数据库
MySQL:load data local infile快速插入大批量数据
MySQL:load data local infile快速插入大批量数据
421 0
Jmeter组件-Random CSV Data Set Config参数化CSV随机读取文件
Jmeter组件-Random CSV Data Set Config参数化CSV随机读取文件
Jmeter组件-Random CSV Data Set Config参数化CSV随机读取文件
|
关系型数据库 MySQL 数据库
读取txt写入csv,读取csv写入mysql
用Python实现读取txt写入csv,读取csv写入mysql
251 0
读取txt写入csv,读取csv写入mysql