Roundcube is a free and open-source webmail software used by thousands of hosting providers and organizations around the world. It supports more than 80 languages, is highly extensible, and integrates well with various SQL backends. But even the most trusted tools can have cracks in their armor.
Recently, a critical vulnerability (CVE-2025-49113) was discovered in Roundcube versions 1.5.x and 1.6.x (prior to 1.5.10 and 1.6.11). This flaw allows authenticated remote code execution (RCE) via insecure PHP object deserialization. With a CVSS score of 9.9, this vulnerability is a ticking time bomb for any unpatched installation.
In this blog post, weβll:
Advertisement
Break down what causes this vulnerability
Walk through the manual exploitation
Showcase an automated exploit script
Provide insights from a TryHackMe-style vulnerable lab
What Is CVE-2025-49113?
π The Root Cause
The vulnerability stems from the upload.php endpoint in Roundcube, which mishandles the _from parameter by deserializing it without validating whether it contains safe data. If an attacker provides malicious serialized PHP data, it gets deserialized and executed β leading to arbitrary code execution on the target.
π¦ Affected Versions
All 1.5.x before 1.5.10
All 1.6.x before 1.6.11
The issue was identified by Kirill Firsov, and patched commits clearly show added input validation using rcube_utils::is_simple_string() to sanitize the _from parameter.
Manual Exploitation
Letβs walk through how this exploit works in a lab using TryHackMe:
Monitor traffic to upload.php for strange _from parameters.
Final Thoughts
This vulnerability is a great example of how dangerous PHP object deserialization can be when mishandled. While the exploit requires valid credentials, many shared hosting environments with weak passwords could be easily compromised.
Always audit your dependencies, stay updated, and sanitize all user inputs β especially those being deserialized.
π Quick Recap for TryHackMe Users
Step
Action
β
Log in as ellieptic
β
Clone & run exploit
β
Connect via netcat
β
Dump /etc/passwd for Maggie's last name
β
Read flag from /etc/
If you found this post helpful, please share it with your network. Together, we can make the web a safer place!
Decrypt a secret message encrypted with a shifting Caesar cipher and retrieve the flag in this TryHackMe walkthrough. Sharpen your cryptography skills by analyzing code to get the flag.
Master memory forensics with this hands-on Volatility Essentials walkthrough from TryHackMe. Learn how to detect malware, analyze memory dumps, automate analysis, and hunt rootkits using Volatility 3.