前言

  • 刚开始复现这个漏洞的时候是在自己的本机上然后跟着大佬的复现步骤可是没有预期的结果最后看了另一篇文章

    当时整个人都麻了

              

首先何为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后台文件包含漏洞的更多相关文章

  1. 再看CVE-2018-12613 phpmyadmin后台文件包含&&RPO攻击

    写在前面 因为看了朋友的一篇分析又回头想了想自己去年遇到的这个纠结的问题. 去年写过一篇phpmyadmin后台文件包含的文章,写的非常的草草,并没有分析的过程,只是把自己的问题记了下来.当时纠结于最 ...

  2. phpMyAdmin本地文件包含漏洞

    4 phpMyAdmin本地文件包含漏洞 4.1 摘要 4.1.1 漏洞简介 phpMyAdmin是一个web端通用MySQL管理工具,上述版本在/libraries/gis/pma_gis_fact ...

  3. phpmyadmin任意文件包含漏洞分析(含演示)

    0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: ...

  4. [CVE-2014-8959] phpmyadmin任意文件包含漏洞分析

    0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: ...

  5. CVE-2018-12613phpMyAdmin 后台文件包含漏洞分析

    一.    漏洞背景 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库.借由此Web接口可以成 ...

  6. phpMyAdmin后台文件包含溯源

    先上大佬解释的漏洞原理链接 https://mp.weixin.qq.com/s?__biz=MzIzMTc1MjExOQ==&mid=2247485036&idx=1&sn= ...

  7. phpMyAdmin 4.8.x 本地文件包含漏洞利用

    phpMyAdmin 4.8.x 本地文件包含漏洞利用 今天ChaMd5安全团队公开了一个phpMyAdmin最新版中的本地文件包含漏洞:phpmyadmin4.8.1后台getshell.该漏洞利用 ...

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

    phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613) phpMyAdmin是一套开源的.基于Web的MySQL数据库管理工具.其index.php中存在一处文件包含逻辑, ...

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

    漏洞详情 范围 phpMyAdmin 4.8.0和4.8.1 原理 首先在index.php 50-63行代码 $target_blacklist = array ( 'import.php', 'e ...

随机推荐

  1. 网络层主要协议与arp欺骗

    网络层主要协议与arp欺骗 目录 网络层主要协议与arp欺骗 一.网络层(Network Layer) 1.网络层的功能 2.IP数据报(IP Datagram) 二.网络层的主要协议 1.ICMP协 ...

  2. Shell之sed编辑器

    Shell之sed编辑器 目录 Shell之sed编辑器 一.sed编辑器 1. sed编辑器概述 2. sed编辑器的工作流程 二.sed命令 1. 命令格式 2. 常用选项 3. 常用操作 三.操 ...

  3. fiddler模拟弱网1

    第一步: 首先你得将你的fiddle配置好了,并链接上了移动端. 参考 这篇文章:http://www.cnblogs.com/lijiageng/p/6214162.html     第二步: 使用 ...

  4. sublime运行错误

      这是由于没有保存文档导致   说明: [Finished in 19.4s with exit code 1]-表示执行时间 [shell_cmd: python3 -u "/Volum ...

  5. 无xml文件的springMVC

    使用springMVC我们一般都会在web.xml中配置一个dispatcher,现在我们基于用java代码的方式来使用springMVC import org.springframework.con ...

  6. 5、前端--js常量、变量、5种基本数据类型(number string boolean undefined object)、运算符、流程控制、三元运算符、函数、自定义对象、内置对象、BOM操作

    变量与常量 在JS中声明变量需要使用关键字 老版本 var(全部都是全局变量) 新版本 let(可以声明局部变量) # 推荐使用let(其实问题不大) 在JS中声明常量也需要使用关键字 const # ...

  7. 编译安装&打包压缩&定时任务

    内容概要 编译安装 打包压缩 定时任务 内容详细 一.编译安装 1.特点 使用源代码,编译打包软件. ​ 1.可以自定制软件 ​ 2.按需构建软件啊 2.步骤 下载安装包 wget 下载网址 如果没有 ...

  8. [Python]数据类型、常量、变量和运算符(未完待续)

    标识符 一个ASCII标识符需要同时满足以下三个条件: 1.第一个字符必须是字母表中的字母或者下划线_ 2.标识符的其他部分由字母.数字.下划线组成 3.标识符对大小写是敏感的,即A与a是不同的 一般 ...

  9. Ecma335、CLR、CLI、CTS、 IL、.net 以及他们之间的关系

    以上是个人对他们直接关系的理解:图片是原创 CLI 通用语言基础架构(Common Language Infrastructure), CLI是一个开放型的技术规范,它定义了一个语言无关的跨体系结构的 ...

  10. .Net 新一代编译器 Roslyn 会带来怎样的影响?

    .Net 新一代编译器 Roslyn 会带来怎样的影响? Roslyn是微软创建的一个.NET编译器平台,该项目于2014年4月3日开源. 最初 C# 语言的编译器是用 C++ 编写的,后来微软推出了 ...