前言

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

    当时整个人都麻了

              

首先何为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. js正则表达式 未提交进行验证

    转载请注明来源:https://www.cnblogs.com/hookjc/ function SetInputMust(){  /*var varr=idstr.split(','); idstr ...

  2. Info.plist常见的设置

    建立一个工程后,会在Supporting files文件夹下看到一个"工程名-Info.plist"的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 在旧版本Xcode创 ...

  3. Class.getResource和ClassLoader.getResource的路径写法

    Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. Class.getResource(Stri ...

  4. Pollard's rho algorithm和涉及到的两个循环检测算法

    0. 简单介绍 Pollard的\(\rho\)算法是John Pollard在1975年发明的,用于分解质因数[1].假定被分解的数为N,N的最小的质因数为\(p(p\ne N)\),那么该算法可以 ...

  5. 用Java模拟实现对系统文件以目录的拷贝功能

    要用Java对单个文件拷贝的话,其实思路很简单,循环读取被拷贝文件,放入byte数组,然后写入目标文件.当然我们也可以借助现有的类去完成,如InputStream中的transferTo()方法就可以 ...

  6. 总结haproxy各调度算法的实现方式及其应用场景

    一.静态算法 1.1 static-rr 基于权重的轮询调度,不支持运行时利用socat进行权重的动态调整(只支持0和1,不支持其它值)及后端服务器慢启动,其后端主机数量没有限制,相当于LVS中的 w ...

  7. 「Python实用秘技05」在Python中妙用短路机制

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第5期 ...

  8. Winds10 安装JDK8.0教程

    首先下载一个jdk,可以通过这个链接下载:https://pan.baidu.com/s/1aP6SdL8UQK_C2GvALLb6Wg也可以去官网下载:https://www.oracle.com/ ...

  9. kafka3.x原理详解看这篇就够了

    一.概述 (一).kafka的定义 1.定义 1)kafka传统的定义:kafka是一个分布式的基于发布/订阅模式的消息队列,主要用于大数据实时处理领域 2)kafka最新的定义:kafka是一个开源 ...

  10. 认识并学会使用spring boot

    1,什么是SpringBoot SpringBoot是Spring项目中的一个子工程,与我们所熟知的Spring-framework 同属于spring的产品,用一些固定的方式来构建生产级别的spri ...