[HTB old-but-gold write-ups] Brainfuck

Buenas a todos!
Hoy vengo con un write-up de una máquina de HTB retirada y muy antigua pero que creo que merece la pena echarle un ojo por las distintas técnicas que se utilizarán: Brainfuck.


Durante el proceso, aprenderemos acerca de exploiting en Wordpress, mail servers, cifrados Vigenere, bruteforce de claves SSH y técnicas para desencriptar claves RSA.
Vamos con ello!

Scanning

Como siempre, empezamos con un SYN scan para descubrir puertos abiertos de la forma más rápida y sigilosa posible. Tras esto, podemos comprobar las versiones y ejecutar scripts NSE seguros.
-sS
-sV

Enum

Los certificados SSL nos dan información acerca de varios hostnames:


Por supuesto, no olvidamos añadir nuestros descubrimientos a /etc/hosts.
Navegando por ambos sitios encontramos un “foro super secreto” (lo dejaremos para más adelante porque no disponemos de credenciales) y una web que, a simple vista, ya nos dice tres cosas:
  • Se trata de un blog wordpress
  • Posiblemente un usuario se llame “orestis".
  • En la máquina hay una integración con SMTP, por tanto es muy posible que tengamos que usar SMTP más adelante.

Exploitation

El primer paso a seguir será ejecutar wpscan para tratar de encontrar vulnerabilidades en el sitio Wordpress. Para evitar problemas con SSL utilizaremos la flag --disable-tls-checks.



De entre todos los resultados, nos centraremos en los referentes al sistema de ticketing:


Si usamos también la opción "--enumerate u" enumeraremos los usuarios en el sistema, lo cual nos resultará bastante útil más adelante.


Investigando un poco más en exploitdb, conociendo parcialmente la versión (sabemos que es <= 7.1.3 por la imagen anterior), encontramos el siguiente exploit: https://www.exploit-db.com/exploits/41006/. También podemos encontrar el mismo exploit por medio de searchsploit. En cualquier caso, indica que podemos logarnos como cualquier usuario debido a un mal uso de wp_set_auth_cookie()
 Lo que haremos, por tanto, será copiar el código de PoC en un archivo html, modificar el usuario (administrator no funciona, admin sí) y levantar un servidor HTTP con python en nuestro equipo para poder interactuar con el exploit.



El resultado es que conseguimos loguearnos como admin.



Al estar logeados como admin, por lo que podemos dirigirnos al panel de control en /wp-admin/. En concreto nos interesa dirigirnos a Settings>Easy WP SNMP, donde podremos encontrar credenciales en texto claro únicamente mirando el código fuente de la página.



Con esta información podremos configurar Thunderbird en nuestro equipo para leer los mensajes de Orestis.

En el segundo mensaje de su bandeja de entrada encontraremos las credenciales en claro para acceder al “foro super secreto” que encontramos al inicio del post.



Con estas credenciales podremos logearnos y veremos varios hilos de mensajes, uno de ellos encriptado. En cualquier caso, podemos ver una similitud entre la firma de los mensajes de Orestis en texto claro, con los mensajes que Orestis envía en el hilo encriptado.


Para obtener la clave de cifrado utilizaremos el conjunto de herramientas que nos ofrece Rumkin (http://rumkin.com/tools/cipher/). Comenzaremos con One Time Pad para obtener toda la clave. Introduciendo en el primer textbox la letra del mensaje encriptado y el el segundo la letra del mensaje en claro, obtendremos una letra. Uniendo todas las letras obtendremos de forma cíclica la clave.



Tras esto podremos utilizar la clave para leer los mensajes cifrados con otra tool de rumking para decodificar Vigenere.


El hilo de mensajes encriptados completo es el siguiente:


Descargamos la clave id_rsa y vemos, como era de esperar, que está cifrada.



No obstante, parece evidente por los mensajes que la contraseña se puede bruteforcear, por lo que convertiremos la clave id_rsa a un formato legible por John The Ripper con ssh2john y luego utilizaremos John The Ripper.



Tras esto, únicamente tenemos que cambiar los permisos de la clave id_rsa y podremos conectarnos vía ssh en la víctima.

Podremos conseguir la flag de user directamente en el home de orestis:


Privesc

Nos fijamos en tres archivos interesantes en el home de orestis:

  • Encrypt.sage. Contiene un script que crea el resto de archivos. Googleando la primera línea indicada en amarillo en la imagen de abajo comprobamos que se trata de una encriptación de RSA. Los tres parámetros del final (p, q y e, que se guardan en debug.txt) son las variables necesarias para desencriptarla.


  • Debug.txt: contiene las variables P, Q y E, mencionadas anteriormente.


  • Output.txt: contiene la clave encriptada.


Tras esto, únicamente debemos googlear de nuevo “decrypt rsa given p q e” y encontraremos un script que lo hace por nosotros en el primer resultado (https://crypto.stackexchange.com/questions/19444/rsa-given-q-p-and-e). Copiando el script y modificando los valores de P, Q, E y el texto cifrado y obtendremos nuestro resultado!


La flag es PT (plain text) pero está en decimal, por lo que la convertiremos a ascii de la siguiente forma:



Y hasta aquí el post de hoy, cualquier duda o sugerencia, no dudes en dejar un comentario o pregunta en el canal de Telegram - HackTheBox Hispano.

Si tienes algún write-up no dudes en decírnoslo para darte acceso al repositorio de write-ups de Hackplayers: https://github.com/Hackplayers/hackthebox-writeups/blob/master/README.md

Comentarios