cve-2018-12613-PhpMyadmin后台文件包含漏洞
前言
- 刚开始复现这个漏洞的时候是在自己的本机上然后跟着大佬的复现步骤可是没有预期的结果最后看了另一篇文章
当时整个人都麻了
首先何为phpMyAdmin
根据官方的说明phpMyAdmin 是一个用PHP编写的免费软件工具,旨在 通过 Web处理MySQL的管理。phpMyAdmin 支持对 MySQL 和 MariaDB 的广泛操作。经常使用的操作(管理数据库、表、列、关系、索引、用户、权限等)可以通过用户界面执行,同时您仍然可以直接执行任何 SQL 语句。
大家也该是不陌生的,我想最开始学习php的时候应该有相当一部分人是从phpstudy开始的而在高版本的phpstudy中会自动为我们安装phpMyAdmin,说是安装其实就是在www下的一个文件夹
下面我们开始介绍该漏洞
1.漏洞的位置
该漏洞在phpmyadmin的index.php文件大约在第50行左右

- 首先事检查target是否为空
- 然后是检查target是否为字符串
- 再然后是判断target是否存在于target_blacklist中而在该数组中就只用import和export两个所以还是很容易绕过的
- 最后是一个来自Core文件的一个checkPageVaalidity函数,Core在phpMyAdmin\libraries\classesCore.php中
然后我们进入checkPageVaalidity函数

- 该函数要两个参数可是我们在index.php中发现我们就传入一个参数这个参数就是$page
- 首先会判断$whitelist参数是否为空如果是空的会赋予一个默认的值这个数组是
这里就不全都展示了,确实很多- 我们可以发现在第三个if的时候会查看我们传入的target是否在给定的数组里,只有在的时候才会返回true
- 而在第四个if的时候是会以?作为截取的标志来截取?前面的字符串判断是否存在于数组$goto_whitelist中,phpmyadmin的开发团队考虑的很全面这个判断就是考虑到target后面可能还有参数的情况这样判断就可以保证target带有参数也能正常运行,可是就是因为考虑的太全面了所以在这里就有一个漏洞
- 第5个if就是在对target解码后在截取判断了一遍。
在说这个漏洞之前我们先看一个php特性双重编码
在php中我们对?进行双重编码()在传个服务端是服务端解码就会是%3f而这是php就会把%3f之前的文件当成文件夹(这个漏洞的发现大佬是真的牛!!!!!)接下来做一个实验
首先我们先建立三个文件

index222.php

mmmm

结果

现在我们回归正题因为在checkPageVaalidity函数中允许我们在target后面在带参数这漏洞不就来了吗!!!
之前看大佬的文章发现有一个general_log方法(这个还不会之后会补上的)这里我们就用大佬们常用的session文件包含方式。先说明各个系统session文件的存储位置Macos的session保存目录为/var/tmp/,Linux的session保存目录为/var/lib/php/sessions,Windows是在tmp/tmp/下,这里我遇到了一个bug或许是因为我的phpmyadmin4.8.0是后添加的,这里我找不到对应的session文件就很迷。我做实验是在18号可是就是没有那天的session文件而且在整个文件中也没有。

但是可以发现我们在进行执行sql命令是时我们的命令时被记录在相应的seesion文件里的注意看最后两个session记录可以发现在我们查询前后的记录是不同的


最后预期的payload就是127.0.0.1/phpmyadmin-4.8.0/index.php?target=db_sql.php%253f/../../../../../../tmp/tmp(sess_............)
最后我们看一道题:

进入之后可以发现有一串乱码

这里什么什么都没有也是迷了半天因为我的御剑啥也没扫出来,之后是看到题目是有一个数据库才想起来是不是有phpmyadmin:

这里可以看到版本是4.8.1所以我们可以用PhpMyadmin后台文件包含漏洞然后就是
payload = http://37faeb76-df25-4860-b7b1-d62d17a00186.node4.buuoj.cn:81/phpmyadmin/?target=db_datadict.php?%253f/../../../../../../../../etc/passwd

发现有反馈所以说可以。
这里说明一下这个../可以多加但不可以少,这样可以保证能让其返回到跟文件夹,还有就是db_datadict.php是可以替换的只要是$whitelist数组里的都可以哦
最后就是:payload=http://37faeb76-df25-4860-b7b1-d62d17a00186.node4.buuoj.cn:81/phpmyadmin/?target=db_datadict.php?%253f/../../../../../../../../flag

- 今天又是菜鸡刷题的一天,但我一定要刷跟跟多的题成为更大的菜鸡。
参考:
https://www.phpmyadmin.net/
https://blog.csdn.net/Mikasa_/article/details/88425166
https://blog.csdn.net/Mikasa_/article/details/88594749
https://www.cnblogs.com/0daybug/p/13494650.html
cve-2018-12613-PhpMyadmin后台文件包含漏洞的更多相关文章
- 再看CVE-2018-12613 phpmyadmin后台文件包含&&RPO攻击
写在前面 因为看了朋友的一篇分析又回头想了想自己去年遇到的这个纠结的问题. 去年写过一篇phpmyadmin后台文件包含的文章,写的非常的草草,并没有分析的过程,只是把自己的问题记了下来.当时纠结于最 ...
- phpMyAdmin本地文件包含漏洞
4 phpMyAdmin本地文件包含漏洞 4.1 摘要 4.1.1 漏洞简介 phpMyAdmin是一个web端通用MySQL管理工具,上述版本在/libraries/gis/pma_gis_fact ...
- phpmyadmin任意文件包含漏洞分析(含演示)
0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: ...
- [CVE-2014-8959] phpmyadmin任意文件包含漏洞分析
0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: ...
- CVE-2018-12613phpMyAdmin 后台文件包含漏洞分析
一. 漏洞背景 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库.借由此Web接口可以成 ...
- phpMyAdmin后台文件包含溯源
先上大佬解释的漏洞原理链接 https://mp.weixin.qq.com/s?__biz=MzIzMTc1MjExOQ==&mid=2247485036&idx=1&sn= ...
- phpMyAdmin 4.8.x 本地文件包含漏洞利用
phpMyAdmin 4.8.x 本地文件包含漏洞利用 今天ChaMd5安全团队公开了一个phpMyAdmin最新版中的本地文件包含漏洞:phpmyadmin4.8.1后台getshell.该漏洞利用 ...
- 18.phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613) phpMyAdmin是一套开源的.基于Web的MySQL数据库管理工具.其index.php中存在一处文件包含逻辑, ...
- phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
漏洞详情 范围 phpMyAdmin 4.8.0和4.8.1 原理 首先在index.php 50-63行代码 $target_blacklist = array ( 'import.php', 'e ...
随机推荐
- 性能测试之监控--zabbix通过jmx监控tomcat
前提: 已经安装好了zabbix server 实验环境 Centos 7 Zabbix 3.0 Tomcat 7.0 JDK 1.8 安装JDK tar -zxvf jdk-8u181-linux- ...
- ElasticSearch 基本介绍和读写搜索过程
cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部 ...
- 2021羊城杯比赛复现(Crypto)
bigrsa 题目: from Crypto.Util.number import * from flag import * n1 = 10383529640908175186077053551474 ...
- 对已有的docker容器增加新的端口映射
一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [contain ...
- Pytorch技法:继承Subset类完成自定义数据拆分
我们在<torch.utils.data.DataLoader与迭代器转换>中介绍了如何使用Pytorch内置的数据集进行论文实现,如torchvision.datasets.下面是加载内 ...
- Solution -「LOCAL」ZB 平衡树
\(\mathcal{Description}\) OurOJ. 维护一列二元组 \((a,b)\),给定初始 \(n\) 个元素,接下来 \(m\) 次操作: 在某个位置插入一个二元组: 翻 ...
- Dubbo SPI机制之一JDK中的SPI
首先简单阐述下什么是SPI:SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制.目前有不少框架用它来做服务的扩展发现,简单来说,就是一种动态 ...
- LibOpenCM3(二) 项目模板 Makefile分析
目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3 项目模板 项目模板地址: https://githu ...
- ReentrantLock与synchronized比较分析
ReentrantLock:完成了Lock接口,是一个可重入锁,并且支持线程公正竞赛和非公正竞赛两种形式,默认情况下对错公正形式.ReentrantLock算是synchronized的补充和替代计划 ...
- node + express本地搭建服务器,开启一个新的项目
1.安装node.地址:https://nodejs.org/zh-cn/download/ 2.新建一个文件夹test,进入到该文件夹下 a.按shift + 鼠标右键 ,选择在此处打开命令窗口( ...


