CVE-2018-12613Phpmyadmin后台 任意文件包含漏洞复现
PHPmyadmin后台文件包含漏洞
环境搭建:因为是新手,完全没有经验。。。弄了好长时间。。一开始想在本机搭建环境,于是上网上下载了一个phpmyadmin,然后下载一个phpMyAdmin-4.8.1实验,但是出现语法错误(心态炸了)。。。。
然后只能够下一个版本低的试试,于是下载了一个2016的phpstudy,然后就想放虚拟机(2003)试试,然后又炸了,因为这个版本的phpstudy需要php5.5以上,而php5.5以上不支持2003和xp了。。。。最后只能回到本机测试,幸好成功了。。(不然心态又炸了)。。
下面进入正题:
此漏洞源于phpmyadmin中的index.php,具体大约在50行左右:
漏洞源码:
以上进行一下分析:
1.传入的target不能为空
2.必须是一个字符串
3.不能以index开头
4.不能再数组target_blacklist中
5.且经过checkPageValidit检查后为真
首先前三个都很好理解
我们先看一下第四个
黑名单为:
在index.php中,已经事先定义了target_blacklist的值,即import.php和export.php,只要不等于这两个值就可以。
在看一下定义了checkPageValidit的地方:
通过seay自带的全局搜索发现:
这里简单的说明一下:
首先checkPageValidit里面有两个形参,第一个是我们传入的target,第二个whitelist则有默认形参(也就是空的数组)
1.进入函数看看,首先会判断whitelist是否为空,是的话,就将定义的whitelist是否为空,是的话,就将定义的whitelist是否为空,是的话,就将定义的goto_whitelist赋值给whitelist(因为确实为空,我们只传进去一个target),
看一下$goto_whitelist有什么吧
太多了只截取了,一小部分。
继续分析下一个if,是要求target必须存在,且为字符串,用处不大
下一个if,要求target在数组whitelist就会返回true再看看下一个:这里面对target做了判断,因为可能后面有"?"(主要应对?target=index.php?id=1这种情况,这也是漏洞的成因),可以传参数,于是将?前的东西都取出来判断,看看是否在whitelist就会返回true
再看看下一个:
这里面对
target做了判断,因为可能后面有"?"(主要应对?target=index.php?id=1这种情况,这也是漏洞的成因),可以传参数,于是将?前的东西都取出来判断,看看是否在whitelist就会返回true再看看下一个:这里面对target做了判断,因为可能后面有"?"(主要应对?target=index.php?id=1这种情况,这也是漏洞的成因),可以传参数,于是将?前的东西都取出来判断,看看是否在whitelist中。
下面一个意思一样,只是将$target先解码一下。
综上我们要求,target不为空、是字符串、不在黑名单中、且经过切割后再白名单中。。
这里面涉及一个知识:双重编码,比如你将?双重编码的话,经过包含时你包含的文件会被当成一个目录:
下面是测试:
payload为:localhost/index232.php?Mikasa=8888.php%253f/…/Mikasa.txt
成功!!因为将8888.php当成一个目录,所以需要多一个…/去跨目录。
同理,phpmyadmin的payload为 http://localhost/phpmyadmin/index.php?target=db_datadict.php%3f/../../Mikasa.txt
这个db_datadict.php可以变,只要是在白名单中的就行了!!
好了接下来说一下getshell的方法,,,很多可以看看general_log
general_log
然后,这样就可以了直接包含了,当然也不需要用到这个漏洞。
还有一个更简单的
就是包含当前用户的session文件:默认在 phpStudy\tmp\tmp目录下
session文件名就是:sess_和你当前用户的session,查看方法如下:
上一个phpmyadmin的是我做的另一个实验,不是当前的。。
执行以下SQL语句:
发现这个文件将我们的输入全都放进里面了!!!
嘿嘿,在弄个phpinfo()实验一下
成功,getshell也不是问题!!!!!
当然事实证明,并不是只有?两次编码可以实现跨目录,#二次编码也可以,只不过这个漏洞需要?而已,所以我们要开阔思维
- jenkins任意文件读取漏洞复现与分析 -CVE-2018-1999002
- [CVE-2014-8959] phpmyadmin任意文件包含漏洞分析
- Git漏洞允许任意代码执行(CVE-2018-17456)复现
- Elasticsearch 核心插件Kibana 本地文件包含漏洞分析(CVE-2018-17246)
- WebLogic 两处任意文件上传漏洞动态分析(CVE-2018-2894)
- Apache SpamAssassin 任意代码执行漏洞(CVE-2018-11781)
- PHPMailer任意文件读取漏洞分析(CVE-2017-5223)
- PHPMyWind 任意代码执行漏洞(CVE-2018-17132)
- Discuz!X 前台任意文件删除漏洞复现测试
- phpmyadmin任意文件包含漏洞分析(含演示)
- 织梦dedecms后台文件media_add.php任意上传漏洞解决办法
- 织梦dedecms后台文件任意上传漏洞
- WordPress Van Ons WP GDPR Compliance插件任意代码执行漏洞(CVE-2018-19207)
- Flash Player类型混淆严重漏洞,成功利用可能导致任意代码执行(CVE-2018-15981)
- Tomcat任意文件上传漏洞CVE-2017-12615复现测试
- Discuz!X 3.4 前台任意文件删除漏洞复现
- Adobe Flash cve-2018-4878 的漏洞复现
- LibreHealthIO LH-EHR 任意代码执行安全漏洞(CVE-2018-1000646)
- PHP载入GIF图像造成服务器宕机(CVE-2018-5711)的漏洞复现
- PHP任意文件上传漏洞(CVE-2015-2348)