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

2019-01-0100:02:11 发表评论

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

漏洞细节

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:

部分内容被隐藏
评论刷新后查看

本地漏洞测试:

使用vim编辑rogue_mysql_server.py文件,将PORT = 3306修改为PORT = 3307 ,PORT为监听端口,filelist为要读取的文件。

phpMyAdmin LOAD DATA INFILE 任意文件读取漏洞
运行python rogue_mysql_server.py,启动服务。
打开phpMyAdmin的登录页面,地址输入db:3307、用户名cesafe、密码cesafe,提交登录。

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

回到db的终端,如果文件读取成功会将文件内容记录到mysql.log文件中,在该演示中成功读取/etc/passwd文件
phpMyAdmin LOAD DATA INFILE 任意文件读取漏洞

CE安全网
CE安全网广告位招租

发表评论

您必须登录才能发表评论!