APT593

CPCTF : Lord of The Flag - User (Argentina)

16/07/2020

Descripción:

La comunidad del anillo sufrio una transformacion digital en la nube.(User Flag)

Resolución

Enumeración

┌─[nandx@parrot]─[~/]
└──╼ $nmap -A lotf
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-16 17:24 -05
Nmap scan report for lotf (192.168.1.109)
Host is up (0.00019s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Con un escaneo inicial y uno más profundo a todos los puertos llegamos a que la máquina tiene dos puertos abiertos.

Revisando el pueto 80 con un navegador se obtiene:

image-20200716173035383

El sitio se ve que es muy sencillo, pero mientras más sencillo mejor porque hay menos que analizar, ¿verdad?.

En este punto es bueno correr en paralelo una enumeración de elementos y directorios comúnes utilizando nikto o dirbuster.

Parte 1

Revisando el código fuente:

<!DOCTYPE html>
<html>
<body>

<div class="content">
<h1>No puedes pasar!</h1>
<img src="GandalfTheGrey.jpg" >
<!-- Tal vez Gandalf The White te quiera ayudar.... -->
<!-- La ubicacion que buscas esta aqui: https://lotr.fandom.com/wiki/The_Lord_of_the_Rings:_The_Fellowship_of_the_Ring -->
</div>
</body>
</html>

En los comentarios hay dos pistas que nos ayudan a avanzar. La primera pista es pedirle ayuda a GandalfTheWhite. No está claro cómo, pero tampoco hay mucho recursos en el sitio como para perdernos. Tenemos una imágen con nombre GandalfTheGrey. Para invocar a Gandalf The White únicamente hay que cambiar el nombre a la imágen.

image-20200716173916606

Bingo! Obtenemos una contraseña pero llegamos a un camino sin salida, puesto que no sabemos aún dónde hay que utilizarla y a qué usuario pertenece.

Parte 2

La segunda pista nos señala un lugar donde encontrar la ubicación que buscamos. Esta pista hace referencia que hay más en el sitio web, pero necesitamos conocer su ubicación. La enumeración previa con dirbuster y sus diccionarios por defecto no arrojó nada. Esta pista da una referencia a que tal vez haya que crear un diccionario con alguna palabra clave del universo de El Sr. de los Anillos.

Programas como cewl permiten crear una lista de palabras a partir de un sitio web:

─[✗]─[nandx@parrot]─[~/ctf/scripts/machine]
└──╼ $cewl -h
CeWL 5.4.8 (Inclusion) Robin Wood (robin@digi.ninja) (https://digi.ninja/)
Usage: cewl [OPTIONS] ... <url>

    OPTIONS:
	-d <x>,--depth <x>: Depth to spider to, default 2.
	-m, --min_word_length: Minimum word length, default 3.
    <url>: The site to spider.

┌─[nandx@parrot]─[~/ctf/scripts/machine]
└──╼ $cewl -d 0 -m 4 https://lotr.fandom.com/wiki/The_Lord_of_the_Rings:_The_Fellowship_of_the_Ring > diccionario.txt
┌─[✗]─[nandx@parrot]─[~/ctf/scripts/machine]
└──╼ $wc -l diccionario.txt 
1819 diccionario.txt

Utilizando nuevamente dirbuster con el diccionario creado obtenemos una ubicación web en /Mordor.

image-20200716175451005

Parte 3

image-20200716180159504

Mordor nos lleva a Owncloud (No tan Mordor que se diga). Tenemos una contraseña, pero no el usuario y después de prueba y error no se consigue entrar. En este punto es recomendable enumerar la aplicación y ver si existe alguna vulnerabilidad conocida y para eso sería bueno obtener la versión. Sin embargo, antes de usar google, hay un dato que salta la atención en el footer del sitio: demo:demo

Son credenciales que dan un acceso a owncloud (¿Será posible subir una shell?)

image-20200716180856131

El acceso nos permite obtener más información y aprendemos que la versión instalada es Owncloud 8.1.

Buscando sobre esta versión se encuentra un Username Disclosure.

No diría que es tanto una vulnerabilidad puesto que está relacionado con la funcionalidad de autocompletar nombres de usuario cuando compartimos un archivo a otro usuario dentro de owncloud. Sin embargo, este método nos da una forma rápida de obtener un listado de todos los usuarios sin estar haciendo prueba y error con el autocompletar.

Usando burp como lo sugiere el exploit

image-20200716182124682

Obtenemos un listado de usuarios que incluye a todos los personajes de la comunidad y un usuario compuesto con números en hexadecimal (Son el código ASCII de “gandalf”)

Ingresando con el usuario 67616e64616c66 y contraseña Ish4llP4ssW0rd! obtenemos más información que nos lleva a la recta final del reto:

image-20200716182610789

Parte 4

Se encuentra un archivo .kdbx que es una base de datos de keepass, un gestor de contraseñas. El nombre RockMe hace referencia a que hay que crackearlo y sugieren usar RockYou.txt

El archivo RecordatorioDeClave.txt contiene una expresión regular que traducido a lenguaje mortal dice: Toda palabra que contenga wizard en algún lugar. No está 100% claro el mensaje pero tal vez lo que intenta decir este recordatorio es que la clave contiene la palabra wizard.

Lo siguiente es crear un diccionario buscando todas las contraseñas que contengan wizard en RockYou.txt.

┌─[nandx@parrot]─[~/ctf/scripts/machine]
└──╼ $grep wizard rockyou.txt > rockyouwizard.txt

Nota del Autor: La razón por la cual se reduce el diccionario es para asegurar que no tome mucho tiempo crackear en caso esten resolviendo el reto desde su raspberry pi.

Luego, utilizando john the ripper se puede crackear el password:

┌─[nandx@parrot]─[~/ctf/scripts/machine]
└──╼ $keepass2john RockMe.kdbx > rockme.hash

┌─[nandx@parrot]─[~/ctf/scripts/machine]
└──╼ $john --wordlist=rockyouwizard.txt rockme.hash 
...
Press 'q' or Ctrl-C to abort, almost any other key for status
cyberwizard      (RockMe)
1g 0:00:00:02 DONE (2020-07-16 18:34) 0.3816g/s 177.0p/s 177.0c/s 177.0C/s drwizard..couponwizard

Damos con la contraseña del archivo de keepass que es cyberwizard. Y después de descargar la versión portable de keepass se puede abrir el archivo y obtenemos:

image-20200716184048509

Obtenemos la clave de un usuario ssh y la flag de usuario:

┌─[nandx@parrot]─[~/ctf/scripts/machine]
└──╼ $ssh saruman@lotf
saruman@lotf's password: 
...
saruman@nube:~$ cat flag.txt
PCTF{L0rd_of_Th3_Fl4g_625372362}