-
-
[转帖]phpMyAdmin LOAD DATA INFILE 任意文件读取漏洞
-
发表于: 2018-12-15 01:07 4582
-
转载自:phpMyAdmin LOAD DATA INFILE 任意文件读取漏洞
有许多文章指出一个恶意的 MySQL 服务器可以利用LOAD DATA LOCAL命令来读取MYSQL客户端的任意文件。根据这篇公开的文章 (phpMyAdmin开启远程登陆导致本地文件读取),我们知道 phpMyAdmin 在AllowArbitraryServer开启(允许连接到任意MySQL服务器)的情况下(如云主机/云数据库提供商),可以利用该缺陷来读取phpMyAdmin服务器上的文件。
VulnSpy 已为大家提供在线 phpMyAdmin 环境地址:184K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6$3N6h3I4F1M7%4m8&6i4K6u0r3M7r3S2H3L8i4W2S2k6r3#2A6L8W2)9J5k6o6c8Q4x3X3f1^5i4K6u0W2y4q4)9J5k6r3q4D9L8r3!0%4j5i4u0T1K9i4c8J5j5i4u0&6M7$3g2J5N6X3g2J5
漏洞细节
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: 080K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6s2K9h3k6@1M7#2)9J5c8W2u0G2k6%4g2W2i4K6u0V1e0i4W2e0M7h3I4Q4x3X3c8e0k6i4u0$3k6i4u0Q4x3V1k6T1L8r3!0T1i4K6u0r3L8h3q4K6N6r3g2J5i4K6u0r3M7X3!0Y4N6h3g2Q4y4h3k6E0P5i4y4I4L8q4)9#2k6Y4y4W2M7Y4k6W2M7W2)9J5k6i4m8&6
此处我们使用 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文件
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课