转载自: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
导致的任意文件读取是个由来已久的问题,根据前人们的研究:
我们知道下列的下列情况都存在该问题:
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 个虚拟环境:
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 文件
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.