WordPress文件上传漏洞复现与分析

来自:安企建站服务研究院

头像 方知笔记
2025年10月26日 12:31

一、漏洞背景

WordPress作为全球使用最广泛的内容管理系统(CMS),其安全性一直备受关注。文件上传漏洞是常见的Web安全威胁之一,攻击者通过构造恶意文件绕过检测机制,进而获取服务器权限或实施进一步攻击。本文将复现一个典型的WordPress文件上传漏洞,并分析其成因与防御措施。

二、漏洞复现环境

  1. 测试环境
  • WordPress 5.6(未打补丁版本)
  • PHP 7.4
  • Apache/Nginx服务器
  1. 漏洞插件: 假设目标站点安装了存在漏洞的第三方插件(如未对文件类型严格校验的插件)。

三、漏洞复现步骤

步骤1:定位上传功能

访问WordPress后台或前端页面,找到支持文件上传的功能模块(如媒体库、插件自定义上传接口等)。

步骤2:构造恶意文件

创建一个PHP webshell文件(如shell.php),内容如下:

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

步骤3:绕过文件类型检测

  • 方法1:修改HTTP请求头 使用Burp Suite拦截上传请求,将Content-Typeapplication/x-php改为image/jpeg
  • 方法2:双扩展名绕过 将文件名改为shell.php.jpg,利用部分插件解析漏洞触发PHP执行。

步骤4:上传并访问恶意文件

成功上传后,访问文件路径(如/wp-content/uploads/2024/03/shell.php),通过URL参数执行命令(例如:?cmd=id)。

四、漏洞原理分析

  1. 根本原因
  • 未对文件内容进行严格校验(如仅校验扩展名或MIME类型)。
  • 服务器配置错误(如Apache未禁止PHP文件执行于上传目录)。
  1. 攻击影响
  • 远程代码执行(RCE)
  • 服务器数据泄露

五、防御建议

  1. 代码层
  • 使用wp_check_filetype_and_ext()函数验证文件类型。
  • 禁止上传可执行文件(如PHP、ASP)。
  1. 服务器层
  • .htaccess中添加规则:
<Files *.php>
Deny from all
</Files>
  • 定期更新WordPress核心及插件。
  1. 监控层
  • 部署WAF拦截恶意上传请求。
  • 日志审计上传目录的文件变更。

六、总结

通过本次复现,可见文件上传漏洞的危害性极高。开发者需遵循“最小权限原则”,结合多层次校验机制提升安全性。建议使用WordPress官方推荐的安全插件(如Wordfence)进行常态化防护。

:本文仅用于安全研究,未经授权测试他人系统属违法行为。