Skip to main content
HackTheBox machines – Sharp WriteUp

HackTheBox machines – Sharp WriteUp

Sharp es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox basada en Windows

Sharp es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad Difícil.

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

 

Escaneo de puertos

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

Encontramos varios puertos abiertos en el sistema así que vamos a proceder a enumerar los mismos a ver que información podemos obtener.

 

Enumeracion

Revisando los puertos comenzamos con smb y obtenemos un listado de directorios:

Observamos que tenemos permisos de lectura sobre el directorio kanban, aśi que utilizamos de nuevo smbmap para observar el contenido del mismo:

Observamos varios ficheros que pueden ser interesantes, así que vamos a descargarnos todo para poder analizarlo más detenidamente:

Revisamos un poco por encima, pero vamos a lanzar un grep sobre todo a ver si podemos dar con alguna password y encontramos un json con las keys cifradas de dos usuarios:

Que son las siguientes:

 

Revisamos de nuevo los ficheros pero nos fijamos en uno en concreto, el fichero “User Guide.pdf”

Guía de usuario de kanban portable en Sharp

en el cual podemos destacar los siguientes puntos:

  • page 1 -> el programa es portable, por lo que podemos hacer cambios en los ficheros de configuracion
  • page 3 -> no se deben utilizar contraseñas vacías, aunque podemos hacerlo si lo necesitamos
  • page 11 -> el usuario por defecto es “Administrator” con la pass vacía
  • page 18 -> sugiere que si has olvidado una password, muevas el portable .exe a otro directorio y trates de hacer login con el user admin
  • page 22 -> las password están ocultas por defecto en Setup/Users tab

Vistos los puntos importantes del documento, vamos a levantar una vm con windows para ejecutar el programa y tratar de obtener las claves de los usuarios.

 

Con la máquina con windows levantada, borramos el fichero “PortableKanban.pk3” y ejecutamos el programa, mostrándonos el siguiente mensaje:

Ejecutando fichero kanban en Sharp

 

El programa ha generado un fichero nuevo en base al backup existente, probamos el login con el usuario administrator y la contraseña vacía, pero nos da un error de acceso denegado:

Login en kanban

 

Así que vamos a editar el fichero de configuración de backup:

Verificando respuesta en Sharp

Y borramos la password del usuario admin y volvemos a ejecutar el programa, consiguiendo ahora sí, acceder al mismo:

Kanban portable en Sharp

 

Tal y como decía en la documentación, nos vamos a la configuración de usuarios y vemos los usuarios que encontramos anteriormente:

 

Y, si desmarcamos la casilla “Hide passwords” obtenemos la clave del usuario lars:

Ahora que ya tenemos la clave de un usuario, modificamos de nuevo el fichero original de backup y modificamos el rol del usuario lars a admin y volvemos a entrar, consiguiendo en este caso descifrar la key del usuario Administrator:

Ahora que ya tenemos las claves de los dos usuarios, vamos a verificar si podemos utilizar alguna de ellas para acceder por smb, utilizaremos para ello la tool crackmapexec

Y obtenemos un usuario válido así que volvemos a smb para ver que podemos obtener con el mismo y vemos una carpeta nueva:

 

Y nos descargaremos todo el contenido de la carpeta dev:

 

Se trata de ficheros exe, donde vemos un cliente y un servidor y una librería que nos da algo de información de lo que vendrá a continuación, así que volvemos al windows y utilizaremos dnspy para revisar el código de los ficheros obtenidos:

 

Revisamos la aplicación y encontramos unas claves en el fichero client.exe

Y también la dirección a la que la aplicación se conecta:

Ya tenemos algo importante, pero ahora que hacemos con ello. Nos vamos a google y buscamos acerca de Remoting.Channels.Tcp y encontramos un exploit en github para realizar la explotación de este servicio:

https://github.com/tyranid/ExploitRemotingService

En nuestro caso lo hemos compilado, pero para aquellos que les resulte complicada esta tarea, también está disponible el mismo precompilado:

https://github.com/parteeksingh005/ExploitRemotingService_Compiled

 

Ahora que ya conocemos como explotar este servicio, tendremos que realizar varios pasos previos para poder continuar:

  1. Descargar python en windows si no lo tenemos y levantarlo
  2. Descargar netcat
  3. Descargar la reverse shell de nishang
  4. Crear una reverse shell serializada con ysoserial
  5. Conectar a la maquina con el binario compilado con nuestra reverse shell

 

Así que vamos a ir haciendo todos los pasos.

Levantamos en primer lugar un server con python en la ruta donde tengamos nuestra reverse shell:

Levantamos una escucha con netcat

Editaremos el fichero ps1 de nishang añadiendo al final el siguiente código:

A continuación generaremos nuestro payload con ysoserial

Y por último ejecutamos nuestro exploit

 

La ejecución del exploit generará el siguiente error:

El mismo no es relevante, donde tenemos que hacer hincapié a continuación es en nuestro server en python donde veremos como se ha descargado nuestro fichero (si te da problemas este paso, tal vez tengas que revisar el firewall de windows):

 

Y, si revisamos nuestra escucha en netcat veremos que tenemos una shell con el usuario lars:

 

Obteniendo la flag de user

Una vez que tenemos la shell con el usuario lars, nos vamos al escritorio de este usuario para conseguir la flag de user:

 

Escalado de privilegios

Ahora, si recordamos el fichero que obtuvimos en la carpeta del smb decía lo siguiente:

Queda pendiente migrar la app de .Net a Wcf por lo que buscamos en la home del usuario y obtenemos una carpeta con este nombre en el directorio de documents:

Así que vamos a comprimir esa carpeta:

Y la moveremos al directorio dev del smb para poder descarganos el fichero:

 

Revisamos el contenido del mismo desde visual studio y encontramos algo interesante en el ejecutable de Client:

 

Y dentro de Main encontramos el string de conexión de la aplicación:

 

Asumimos que esta aplicación se está ejecutando con privilegios elevados, así que añadiremos la siguiente línea después del último WriteLine para crear una reverse shell:

Y compilaremos nuestro programa:

 

Ahora que ya tenemos el programa compilado, necesitamos subirlo a la máquina, pero no tenemos permisos para escribir en el smb así que movemos los ficheros exe y dll generados a la carpeta donde tenemos levantado nuestro server con python y nos descargamos los mismos desde la shell abierta del usuario lars con los siguientes comandos:

Y los ejecutamos en la máquina:

El último paso será levantar otra escucha en netcat en otro puerto diferente al que utilizamos anteriormente y ejecutar nuestro fichero:

Y obtendremos la shell como system:

 

Obteniendo la flag de root

Ahora que ya tenemos nuestra shell con system, nos queda ir al escritorio del usuario Administrator para obtener nuestra flag:

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

Como último paso, y para ganar persistencia, podemos lanzar mimikatz para obtener el hash del usuario administrator y poder acceder de nuevo si lo vemos necesario.

 

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. Los campos obligatorios están marcados con *