一次代码审计的笔记(CVE-2018-12613 phpmyadmin文件包含漏洞)

本文记录了一次对phpmyadmin文件包含漏洞(CVE-2018-12613)的研究过程,包括漏洞描述、影响范围和分析细节。攻击者需经过身份验证,但特定条件下可执行任意代码。通过分析index.php和core.php,发现白名单过滤存在缺陷,导致任意文件包含。作者承认在代码审计中仍存在知识盲区,计划深入学习PHP和Java。
摘要由CSDN通过智能技术生成


前言

看了一下上次写博客都是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(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值