Solidstate

Publicado: 13 de Mayo de 2025 Autor: Josรฉ Miguel Romero aKa x3m1Sec Dificultad: โญ Medium

๐Ÿ“ Descripciรณn

La mรกquina SolidState es una mรกquina Linux con dificultad media que simula un servidor de correo empresarial vulnerable basado en Apache James 2.3.2. La explotaciรณn implica abusar de vulnerabilidades en el servicio JAMES, acceder a correos electrรณnicos internos para conseguir credenciales, y finalmente escalar privilegios aprovechando un script de Python ejecutรกndose como root con permisos inseguros. Esta mรกquina enfatiza la importancia de la actualizaciรณn regular de servicios y la gestiรณn adecuada de permisos en los archivos del sistema.

๐Ÿš€ Metodologรญa

๐Ÿ”ญ Reconocimiento

Ping para verificaciรณn en base a TTL

๐Ÿ’ก Nota: El TTL cercano a 64 sugiere que probablemente sea una mรกquina Linux.

Escaneo de puertos

Enumeraciรณn de servicios


๐ŸŒ Enumeraciรณn Web

80 HTTP

๐Ÿ•ท๏ธFuzzing de directorios

Nada relevante ni a destacar en este servicio como posible vector de ataque.

25 SMTP (JAMES smtpd 2.3.2)

๐Ÿ’ป Explotaciรณn

Durante la fase de enumeraciรณn de servicios de nmap hemos visto que este protocolo estรก ejecutando un servicio JAMES smptpd 2.3.2. Buscando algo de informaciรณn pรบblica encontramos que la versiรณn es vulnerable a Remote Command Execution (RCE) (Authenticated) y Insecure User Creation Arbitrary File Write

Vamos a usar el exploit Remote Command Execution (RCE) (Authenticated) (2)

Este exploit abusa del panel de administraciรณn remoto y del servidor SMTP del Apache James Server usando las credenciales por defecto root:root para inyectar un payload (como una reverse shell) en un archivo del sistema (/etc/bash_completion.d). Este archivo serรก ejecutado automรกticamente cuando un usuario inicie sesiรณn en el sistema (por ejemplo, vรญa SSH), permitiendo ejecutar comandos arbitrarios como una shell inversa hacia el atacante.

El problema es que estamos en una mรกquina virtual y nadie va a iniciar sesiรณn vรญa ssh, por lo que debemos intentar buscar credenciales para poder intentar conectarnos vรญa ssh y desencadenar la acciรณn.

4555 James Remote Administration

Iniciamos sesiรณn en James Remote Administration usando telnet y las credenciales por defecto root:root

Al usar el comando listusers enumeramos varios usuarios y tambiรฉn el payload que hemos cargado anteriormente:

Recordemos que hemos iniciado sesiรณn como root y una de las opciones que nos permite realizar el setpassword, asรญ que podemos cambiar la contraseรฑa al usuario que queramos:

Ahora iniciamos sesiรณn con james vรญa POP3 usando las nuevas credenciales

Al listar correo no encontramos nada, asรญ que repetimos la misma operaciรณn de cambiar la contraseรฑa para el resto de usuarios a ver si encontramos algo.

Encontramos unas credenciales para mindy. Probamos a autenticarnos vรญa ssh con ellas:

E inmediatamente ganamos conexiรณn al host remoto en nuestro listener:

Mejora de la shell

En nuestro host de ataque

En el host comprometido

Obtenemos la primera flag en el directorio de mindy:

๐Ÿ‘‘ Escalada de privilegios

Tras enumerar la mรกquina, comprobamos que sudo no estรก instalado en la mรกquina, tampoco hay grupos interesante ni capabilities. Tampoco detectamos una versiรณn vulnerable del kernel, pero al listar procesos vemos algo intesante:

Se estรก ejecutando un script en python llamado tmp.py como root.

Revisamos los permisos del archivo y vemos que tenemos control total sobre el mismo:

Asรญ que reemplazamos su contenido por el de una simple python reverse shell:

Simple python reverse shell https://github.com/orestisfoufris/Reverse-Shell---Python/blob/master/reverseshell.py

A continuaciรณn, esperamos unos segundos y recibimos la reverse shell como root para finalmente obtener la flag:

Last updated