前言
摘要:本文详细复现了 Roundcube Webmail 远程代码执行漏洞 CVE-2025-49113。该漏洞影响 1.5.10 之前版本及 1.6.11 之前的 1.6.x 版本,由于 `_from` 参数未经验证导致 PHP 对象反序列化,允许已认证用户执行任意代码。文章从靶场环境搭建开始,逐步演示了利用公开 PoC 脚本、执行命令获取 flag 并验证结果的完整过程,为安全研究人员提供实战参考。
漏洞复现
阅读靶场介绍
从靶场介绍中,我们可以提取以下关键信息:
影响版本:Roundcube Webmail 1.5.10 之前的版本和 1.6.x 版本 1.6.11 之前的版本允许已认证用户远程执行代码,
原因:因为 URL 中的 _from 参数未在 program/actions/settings/upload.php 中进行验证,从而导致 PHP 对象反序列化。
后台账号密码:(Roundcube Webmail 的账号密码为 roundcube/roundcube)
启动靶场我们会得到一个如下的页面
进入后台以后,我们会得到如下页面
PoC 利用:
这里我们需要去GitHub下载php文件
GitHub - fearsoff-org/CVE-2025-49113 · GitHub
下载好以后,有一个前提就是需要PHP环境
然后执行这个命令
php CVE-2025-49113.php https://eci-2ze9expzlzg86u8sd72a.cloudeci1.ichunqiu.com:80/ roundcube roundcube "cat /flag > /var/www/html/flag.txt"
原型是这样的
php CVE-2025-49113.php url 账号 密码 "命令"
执行该命令后,系统会将cat /flag命令的输出结果写入/var/www/html/flag.txt文件中。
接下来就是访问
https://eci-2ze9expzlzg86u8sd72a.cloudeci1.ichunqiu.com:80/flag.txt
结果如下
至此,我们成功完成了该靶场的漏洞复现与利用。
修复与防御措施
官方修复方案:
Roundcube 官方已发布安全更新修复此漏洞。受影响用户应立即升级到以下版本:
- Roundcube Webmail 1.5.10 或更高版本
- Roundcube Webmail 1.6.11 或更高版本
升级后,_from参数在program/actions/settings/upload.php中将得到严格验证,防止 PHP 对象反序列化漏洞被利用。
通用安全开发建议:
除了及时升级外,开发人员还应遵循以下安全实践来预防类似漏洞:
- 严格验证用户输入:对所有用户可控参数(包括 URL 参数、POST 数据、HTTP 头等)进行白名单验证和类型检查,拒绝不符合预期的输入。
- 禁用危险的反序列化函数:在 PHP 环境中,避免使用
unserialize()处理不可信数据。如需反序列化,应使用安全的替代方案或严格验证数据来源。 - 实施最小权限原则:Web 应用程序应运行在受限权限下,避免使用 root 或高权限账户执行操作,限制文件系统访问范围。
- 定期安全审计与更新:保持所有依赖库和框架更新至最新安全版本,定期进行代码安全审计,特别是处理用户输入和文件上传的功能模块。
- 使用 Web 应用防火墙(WAF):部署 WAF 可以帮助检测和阻止常见的攻击模式,为应用提供额外的防护层。
感谢各位宝贵的时间
期待你们的支持