前言
看了一下上次写博客都是20天前的事了,最近要打工去了,学习的少了很多,前两天玩了一下vulhub靶场的phpmyadmin文件包含漏洞(CVE-2018-12613)但是有些不理解,通过抽出时间的百度和理解,写一下笔记,别到时候忘记了
漏洞描述
攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞。该漏洞来自一部分代码,其中页面在phpMyAdmin中被重定向和加载,
以及对白名单页面进行不正确的测试。 攻击者必须经过身份验证,但在这些情况下除外:
$ cfg [‘AllowArbitraryServer’] =
true:攻击者可以指定他/她已经控制的任何主机,并在phpMyAdmin上执行任意代码; $ cfg [‘ServerDefault’]
= 0:这会绕过登录并在没有任何身份验证的情况下运行易受攻击的代码。
漏洞影响范围
phpMyAdmin 4.8.0和4.8.1
漏洞分析
查看index.php的50行到63行内容
target_blacklist = array (
'import.php', 'export.php'
); #定义了一个黑名单
// If we have a valid target, let's load that script instead
if (! empty($_REQUEST['target']) #要求target不为空
&& is_string($_REQUEST['target']) #要求target为字符串
&& ! preg_match('/^index/', $_REQUEST['target']) #要求target不已index开头
&& ! in_array($_REQUEST['target'], $target_blacklist) #要求target不存在黑名单中
&& Core::checkPageValidity($_REQUEST['target']) #checkPageValidity要为真
) {
include $_REQUEST['target']; #以上五个条件达成即可包含文件
exit;
}
前四个条件是很容易达成的,就是第五个条件麻烦了点
查看Coer.php的443行到476行
public static function checkPageValidity(