SolidState

SolidState
Sistema operativo Dificultad Fecha de Lanzamiento Creador
Linux Medium 08 Setiembre 2017 ch33zplz

Reconocimiento

Iniciamos como siempre, lanzando una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.

SolidState

Enumeración inicial

Realizamos un escaneo con nmap para descubrir que puertos TCP se encuentran abiertos en la máquina víctima. Lanzamos una serie de script básicos de enumeración propios de nmap, para conocer la versión y servicio que esta corriendo bajo los puertos.

nmap -sS -sCV -p- --open --min-rate 5000 -Pn -n 10.10.10.51 -oN scan -vvv

SolidState

Enumeración de servicios

Web

SolidState

Explotación inicial

Apache James Server 2.3.2 - Remote Command Execution (RCE) (Authenticated)

James Server es un servidor de correo electrónico SMTP, POP3 y Noticias NNTP. Proyecto de la Apache Software Foundation 100% hecho en Java, siendo un completo y portable motor de Correo electrónico basado en los actuales protocolos de código abierto.

Probamos conectarnos al servicio utilizando telnet:

SolidState

Vemos que las credenciales por defecto root:root son validas.

Enumeramos usuarios:

SolidState

Podemos también cambiar las contraseñas de dichos usuarios para luego aprovecharnos para intentar un ataque de fuerza bruta al protocolo SSH (22)

SolidState

Creamos una lista de usuarios:

james
thomas
john
mindy
mailadmin

Lanzamos un ataque de fuerza bruta al protocolo SSH.

hydra -L users.txt -p 'password123' ssh://10.10.10.51 -I

Pero no son validas.

SolidState

Por otra parte, si probamos con POP 3 y vemos que si son validas.

SolidState

Nos conectamos utilizando telnet

SolidState

Algunos comandos POP3 más para interactuar con el correo electrónico:

  • STAT: Muestra el número de mensajes y el tamaño total del buzón.
  • LIST: Muestra una lista de los mensajes y sus tamaños.
  • RETR [número]: Recupera el mensaje número [número].
  • DELE [número]: Marca el mensaje número [número] para eliminación.
  • QUIT: Cierra la sesión.

Si miramos los mensajes, vemos que james no tiene mensajes en el buzón al igual que el usuario thomas.

Pero, si probamos con el usuario john tenemos el siguiente correo:

SolidState

Si ingresamos con mindy, vemos que tenemos dos mensajes. El primero de ellos es el siguiente:

SolidState

El mensaje anterior, simplemente le da la bienvenida a mindy a la empresa.

Pero si leemos el segundo, encontramos algo interesante, las credenciales de mindy enviadas por james:

SolidState

mindy:P@55W0rd1!2@

Iniciamos sesión por ssh con mindy.

SolidState

Usuario mindy

Leemos el flag de user.txt

SolidState

Vemos que el usuario mindy tiene una restricted bash. Pero podemos hacer un bypass de la siguiente forma.

ssh mindy@10.10.10.51 -t "bash --noprofile"

Elevación de privilegios

Si realizamos una enumeración básica, encontramos un script de python el cual simplemente borra todos los archivos y directorios que se encuentran bajo el directorio tmp. La particularidad, es que los permisos de este script son 777 por lo tanto podemos alterar el script para que asigne por ejemplo permisos suid a la /bin/bash.

Podemos observar las tareas cron con pspy32:

SolidState Modificamos el script:

SolidState

Esperamos a que corra el proceso y tendremos asignado el permiso SUID a la bash.

SolidState Por ultimo, leemos la flag de root.txt

SolidState