Escaneo de puertos con nmap
Primero, realizaremos un escaneo de puertos para identificar cuáles se encuentran abiertos. Hemos detectado que varios puertos están activos; por el momento, nos centraremos en los puertos 21 y 80.
sudo nmap -p- --open -sS -sC -sV --min-rate 5000 -n -vvv -Pn [IP]

Puerto 80
Si accedemos al puerto 80, se mostrará una página de inicio de sesión; sin embargo, por el momento no podremos realizar ninguna acción.

Codigo Fuente
Procederemos a revisar el código fuente en busca de elementos interesantes. Allí, encontraremos la primera bandera, la cual parece estar codificada en Base64. Al decodificarla, se revela el mensaje: "CIA - Operation Treadstone".


Al buscar en Internet qué es Operation Treadstone, descubriremos que se trata de una serie. Si accedemos al primer enlace, encontraremos información sobre la misma.


Entonces, vamos a generar un diccionario usando la herramienta Cewl a partir de esa web. Además, notamos que hay una sección dedicada al staff, lo que podría indicar posibles usuarios. También crearemos un diccionario con esa información.

cewl -w jason_dict.txt -d 0 "https://bourne.fandom.com/wiki/Operation_Treadstone"
Una vez tengamos ambos diccionarios, vamos a hacer un ataque de fuerza bruta al puerto 21 (FTP) y veremos que han funcionado: Usuario: Nicky Contraseña: CIA

Puerto 21
Si iniciamos sesión en FTP y navegamos a la ruta /ftp/ImpFiles, encontraremos un archivo de texto llamado IMP.txt

ftp [IP]
Si lo llevamos a nuestro equipo, veremos que hay una flag que dice lo siguiente:

Fuzzing web al puerto 80
Como no encontramos nada interesante por el momento, realizaremos un poco de fuzzing en la web para ver si identificamos algún directorio útil
gobuster dir -u [IP] -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,txt -t 50

Encontraremos un directorio que parece interesante: un login para iniciar sesión en SquirrelMail. Sin embargo, no veremos nada que nos sea útil por el momento.

TXT encontrado en el puerto 21
Después de un rato pensando, me parece que el archivo TXT que encontramos en FTP podría ser más importante de lo que inicialmente creímos. Lo único que se me ocurre es probar posibles directorios utilizando palabras clave del archivo TXT.

Y así fue, después de muchas pruebas logré encontrar el directorio vworkshop.

SQL Injection
Parece que podemos comparar piezas para coches, pero la URL me llama la atención, ya que tiene toda la pinta de ser vulnerable a SQL injection. Pruebo con algunos IDs que supongo que no existen y veo que da errores, la foto del producto desaparece. Para asegurarme de que es vulnerable, pruebo con 1' and sleep(5)-- -, y efectivamente, la web tarda 5 segundos en cargar. Esto confirma que es vulnerable a SQL injection.

Una vez descubramos el número de columnas usando 1' ORDER BY (probando números), podremos intentar obtener información confidencial. En este caso, descubrimos que hay 7 columnas.
Lo siguiente que intento es ver los nombres de las bases de datos disponibles utilizando la siguiente consulta:
http://[IP]/vworkshop/sparepartsstoremore.php?sparepartid=99' union select 1,2,3,group_concat(schema_name),5,6,7 from information_schema.schemata-- -
Vemos que hay varias bases de datos disponibles, y una de ellas me llama la atención: BlackMarket

Para ver las tablas de la base de datos BlackMarket, usaremos la siguiente consulta:
http://[IP]/vworkshop/sparepartsstoremore.php?sparepartid=99' union select 1,2,3,group_concat(table_name),5,6,7 from information_schema.tables where table_schema='BlackMarket'-- -

Al ejecutar la consulta, veremos varias tablas, pero la que me interesa es la que se llama "users".
Las columnas dentro de la tabla "users" son: user_id, username, password y acceso. Para ver la información de usernames y passwords, utilizamos:
http://[IP]/vworkshop/sparepartsstoremore.php?sparepartid=99' union select 1,2,3,group_concat(column_name),5,6,7 from inforrmation_schema.columns where table_schema='BlackMarket' and table_name='user'


Al ejecutar la consulta, veremos que las contraseñas de los usuarios están hasheadas. Las copiaremos todas y las pasaremos por hashes.com. Después de procesarlas, conseguiremos la contraseña del usuario admin, que es BigBossCIA.

Acceso al login del puerto 80
Lo primero que pienso es que podremos acceder al correo de SquirrelMail, pero no es el caso. Así que pruebo en el primer login que encontramos en el puerto 80, y conseguimos iniciar sesión, lo que nos da la siguiente flag.

Inicio sesion en squirrelmail
Una vez iniciamos sesión, podemos ver un apartado de clientes con información relacionada. No encuentro nada más interesante, así que decido intentar iniciar sesión en SquirrelMail con alguno de estos usuarios.

No consigo nada relevante hasta que observo que en la última flag aparece lo siguiente: Jason Bourne email access ?????. Pruebo con varios usuarios hasta que, con jbourne y la contraseña ?????, logro acceder al correo.
En el email hay un correo con lo que parece un texto codificado.

Parece que la información está codificada con Atbash. Al decodificarla, vemos que menciona un directorio con una backdoor. Si accedemos a [ip]/vworkshop/kgbbackdoor/PassPass.jpg, encontramos una foto, pero no parece haber nada más por el momento.


Si utilizo el comando strings en la foto que encontré, aparece lo que parece ser una contraseña o algún tipo de clave. Sin embargo, no estoy seguro de para qué nos sirve aún.

Se me ocurre hacer fuzzing al directorio kgbbackdoor, y encuentro lo siguiente:
gobuster dir -u http://[IP]/vworkshop/kgbbackdoor/ -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,txt -t 50

backdoor
Vemos que hay un archivo backdoor.php, pero al intentar acceder a él, aparece un Not Found. Después de un rato buscando, reviso el código fuente del archivo backdoor.php y descubro que hay un input, aunque parece estar oculto.

Una vez encuentro el código, lo pongo tal como lo encontré en la imagen, pero no funciona. Como el código está en decimal, lo convierto primero a hexadecimal y luego a texto. Finalmente, consigo lo que parece ser una contraseña: HailKGB.
Ahora sí, con la contraseña HailKGB, podemos acceder al backdoor.
Nos encontramos con un panel en el que podemos ejecutar comandos, leer archivos, entre otras opciones.

Si nos dirigimos al apartado de Network, veremos que podemos establecer una conexión.

escalada de privilegios
Una vez conseguimos acceso a la máquina, comenzamos a buscar información en el sistema para escalar privilegios. Encontramos un texto oculto en /home/.Mylife, y dentro de este archivo, llamado .Secreto, aparece lo que parece ser una contraseña para el usuario dimitri (DimitryHateApple). Sin embargo, al intentar usarla, no funciona. Luego noto que el nombre de usuario está escrito con una "I", así que cambio la "Y" de la contraseña por una "I" (DimitriHateApple), y con esto obtengo acceso al usuario dimitri.

Una vez tengamos acceso al usuario dimitri, pruebo el comando sudo -l y veo que simplemente con un sudo su, consigo escalar a root.

Y así es como conseguimos privilegios máximos en la máquina BlackMarket de VulnHub.

Blackmarket

Reconocimiento
Enumeracion web y creacion de dicionarios con cewl
Exploitacion
FTP Fuerza Bruta, SQL Injection(manual), backdoor RCE
Post-explotacion
Filtración de contraseñas, abuso de privilegios sudo.