V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ambulong
V2EX  ›  信息安全

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

  •  
  •   Ambulong · 2018-12-15 01:10:54 +08:00 · 3370 次点击
    这是一个创建于 2171 天前的主题,其中的信息可能已经有所发展或是发生改变。

    转载自: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 文件

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2945 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:44 · PVG 20:44 · LAX 04:44 · JFK 07:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.