Skip to main content
HackTheBox machines – SneakyMailer WriteUp

HackTheBox machines – SneakyMailer WriteUp

SneakyMailer es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox.

SneakyMailer es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad media.

En este caso se trata de una máquina basada en el Sistema Operativo Linux.

 

Escaneo de puertos

Como de costumbre, agregamos la IP de la máquina SneakyMailer 10.10.10.197 a /etc/hosts como sneakymailer.htb y comenzamos con el escaneo de puertos nmap.

Encontramos varios puertos interesantes en esta máquina, por una parte un portal web en el 80, el servicio de smtp en el 25, imap e imaps y un portal web en el puerto 8080. Vamos a pasar a enumerar los puertos a ver que información podemos conseguir.

 

Enumeración

Accedemos al portal web y lo primero que vemos es que nos redirecciona al dominio sneakycorp.htb, así que añadimos el mismo a nuestro fichero /etc/hosts y accedemos obteniendo el siguiente portal web:

 

Observamos un portal para empleados donde vemos dos proyectos interesantes que pueden ser de ayuda más adelante, pypi y pop3 y smtp.

Seguimos revisando el portal y encontramos un listado de usuarios en la página /team.php

 

Viendo los servicios que descubrimos con el escaneo con nmap vamos a obtener el listado de direcciones de correo para ver si podemos hacer algo con ellas y con el servicio de smtp descubierto.

Utilizaremos una herramienta online para extraer las direcciones de correo del código fuente de esta página.

https://email-checker.net/extract-email

Y guardaremos el resultado en un fichero de texto para analizarlo posteriormente.

Para hacer una prueba del servicio smtp utilizaremos la herramienta swaks, también conocida como la navaja suiza de smtp.

Nos descargamos la misma y hacemos un prueba para ver si podemos conectarnos con este servicio:

Y sí, tenemos conexión por lo que vamos a hacer un script para enviar correos a todos los usuarios del listado con la intención de obtener respuesta de alguno de ellos con información que puede sernos de utilidad.

En nuestro caso hemos hecho el siguiente script en python:

Ejecutamos el mismo y, después de un rato, obtenemos en nuestra escucha en netcat los datos de acceso del usuario Paul Byrd:

Donde observamos que hay una contraseña que decodificaremos con urlencoder:

 

Verificamos si podemos conectarnos a los diferentes servicios descubiertos con las claves obtenidas y obtenemos un resultado positivo conectando a imaps:

 

Así que vamos ahora a buscar si hay algún correo que nos sea de utilidad:

Y vemos que hay dos correos en la lista INBOX.Sent Items que veremos a continuación.

En el primer mail vemos el siguiente contenido:

 

Y en el segundo mail:

 

El segundo correo lo utilizaremos más adelante, pero en el primero vemos unas credenciales:

Comprobamos de nuevo el acceso a los diferentes servicios y ahora conseguimos conectarnos al ftp:

Donde vemos un directorio, dev, y una serie de directorios y ficheros:

Debido a la cantidad de ficheros que hay vamos a descargarnos todos para su análisis, para ello lo haremos fácilmente con wget:

Analizamos los ficheros encontrados pero tampoco vemos nada relevante, probamos a subir ficheros al ftp y parece que si que podemos realizarlo.

Generaremos entonces una reverse shell en php para subirla a través del ftp, en nuestro caso la obtenemos de github, editamos la misma y la subimos al ftp:

Y probamos el acceso a la url sneakycorp.htb/bytemind.php pero esta nos da un error 404 así que parece que necesitaremos algo más para continuar.

Comprobamos los subdominios existentes en el portal con wfuzz y encontramos el subdominio dev.sneakycorp.htb:

Probamos el acceso a nuestra reverse shell en dev.sneakycorp.htb/bytemind.php y ahora sí conseguimos ejecutarla y obtener la shell inversa con el usuario www-data:

Revisamos el sistema y encontramos en la ruta /var/www un subdominio nuevo que todavía no conocíamos:

Revisamos en el interior del mismo y obtenemos un fichero oculto, .htpasswd con el hash del usuario pypi:

Utilizaremos la herramienta de John The Ripper para descifrar la misma y conseguir la contraseña en plano:

Probamos la password pero no conseguimos acceder con ella así que ahora estamos perdidos.

Revisamos de nuevo y recordamos el segundo mail que decía lo siguiente:

Necesitaremos instalar el módulo pypi, el cual será instalado por el usuario low en el servidor.

Búscamos en google y encontramos los siguientes enlaces de referencia que nos ayudarán con esta tarea:

https://pypi.org/project/pypiserver/#upload-with-setuptools

https://packaging.python.org/tutorials/packaging-projects/

Por lo que necesitaremos generar dos ficheros:

  • .pypirc
  • setup.py

El fichero pypirc nos autorizará y el fichero setup.py será el archivo del paquete que contendrá el código para ejecutar nuestra shell.

Siguiendo las referencias indicadas anteriormente nuestro fichero .pypirc tendrá el siguiente aspecto:

 

Y el fichero setup.py:

 

Especificamos el id de usuario porque la ejecución se realizará dos veces, la primera con el usuario developer y la segunda con el usuario low y nos interesa la ejecución con el segundo ya que las claves del usuario developer ya las hemos conseguido antes.

Así que volvemos a la máquina, escalamos de www-data a developer y procederemos a subir y ejecutar nuestro paquete en python.

Obtenemos los ficheros:

Accedemos a la carpeta creada y establecemos nuestra home en dicho directorio:

Y ejecutamos nuestro paquete de python:

Consiguiendo la shell en nuestra escucha:

 

Obteniendo la flag de user

Ahora que ya estamos con el usuario low, obtenemos una shell con python y vamos a por nuestra flag:

 

Escalando privilegios

El escalado de privilegios en este caso es realmente sencillo. En primer paso verificamos los permisos del usuario:

Y vemos que tenemos control de root sobre pip3, por lo que buscamos un exploit para ello y encontramos uno en gtfobins.

Ejecutamos el mismo:

Y ya somos root.

 

Obteniendo la flag de root

Ahora que ya somos root, sólo nos queda ir a la home del mismo y obtener nuestra flag:

 

Y ya tenemos nuestra flag de root para completar esta máquina y conseguir nuestros puntos.

 

Si eres usuario de HackTheBox y te gustó mi writeup, por favor, dame respeto en el siguiente enlace

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.