This page looks best with JavaScript enabled

TryHackMe - GoldenEye

 •  ✍️ sckull

GoldenEye es una maquina de TryHackMe, enfocada en la tematica de Golden Eye encontramos multiples usuarios los cuales utilizamos con Hydra en POP3 donde obtuvimos acceso y credenciales para Moodle que posteriormente nos devolvio a POP3 donde encontramos credenciales de administracion para Moodle donde luego explotamos una vulnerabilidad para obtener acceso. Finalmente explotamos una vulnerabilidad en el Kernel de Linux para escalar privilegios.

Room

Titulo GoldenEye box_img_maker
Descripción Bond, James Bond. A guided CTF.
Puntos 930
Dificultad Media
Maker

ben

GOLDENEYE PART 1

NMAP

Escaneo de puertos tcp, nmap nos muestra el puerto http (80). ssl (55006), pop3 (55007) y el puerto smtp (25) abiertos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Nmap 7.80 scan initiated Wed Aug  5 17:03:08 2020 as: nmap -sV -o mini_scan golden.thm
Nmap scan report for golden.thm (10.10.38.197)
Host is up (0.25s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
25/tcp open  smtp    Postfix smtpd
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Aug  5 17:03:58 2020 -- 1 IP address (1 host up) scanned in 50.07 seconds

# Nmap 7.80 scan initiated Wed Aug  5 17:02:54 2020 as: nmap -sV -p- -T5 -o big_scan golden.thm
Warning: 10.10.38.197 giving up on port because retransmission cap hit (2).
Nmap scan report for golden.thm (10.10.38.197)
Host is up (0.25s latency).
Not shown: 65449 closed ports, 82 filtered ports
PORT      STATE SERVICE     VERSION
25/tcp    open  smtp        Postfix smtpd
80/tcp    open  http        Apache httpd 2.4.7 ((Ubuntu))
55006/tcp open  ssl/unknown
55007/tcp open  pop3        Dovecot pop3d

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Aug  5 17:16:03 2020 -- 1 IP address (1 host up) scanned in 789.07 seconds

HTTP

Encontramos una pagina web en el puerto 80, en donde mencionan un directorio /sev-home/.
image

En el codigo del script que se ejecuta en la pagina encontramos un posible nombre de usuario y contraseña, en el comentario tambien indica que la contraseña esta codificada.
image

Utilizamos CyberChef para obtener en texto plano la contraseña.
image

En el directorio /sev-home/ encontramos un panel simple de logeo.
image

Al ingresar con las credenciales que encontramos nos muestra un video con contenido en la pagina.
image

En uno de los parrafos muestra el siguiente mensaje, en el que indican que devemos de enviar un correo a un supervisor calificado, y que el servicio de pop3 esta configurado en un puerto alto que seria el 55007:

1
2
3
4
5
6
7
Please email a qualified GNO supervisor to receive the online 
GoldenEye Operators Training to become an Administrator of 
the GoldenEye system

Remember, since security by obscurity is very effective, 
we have configured our pop3 service to run on a very high 
non-default port

Además en el codigo fuente de la pagina encontramos otro posible nombre de usuario junto a otro que ya encontramos y que son “supervisores”.
image

RUSTBUSTER/GOBUSTER

Utilizamos gobuster para busqueda de directorios y archivos en el directorio principal (/).

 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
~ rustbuster v3.0.3 ~ by phra & ps1dr3x ~

         _     _                 _         _           _        _                 _         _           _           _     
        /\ \  /\_\              / /\      /\ \        / /\     /\_\              / /\      /\ \        /\ \        /\ \   
       /  \ \/ / /         _   / /  \     \_\ \      / /  \   / / /         _   / /  \     \_\ \      /  \ \      /  \ \  
      / /\ \ \ \ \__      /\_\/ / /\ \__  /\__ \    / / /\ \  \ \ \__      /\_\/ / /\ \__  /\__ \    / /\ \ \    / /\ \ \ 
     / / /\ \_\ \___\    / / / / /\ \___\/ /_ \ \  / / /\ \ \  \ \___\    / / / / /\ \___\/ /_ \ \  / / /\ \_\  / / /\ \_\
    / / /_/ / /\__  /   / / /\ \ \ \/___/ / /\ \ \/ / /\ \_\ \  \__  /   / / /\ \ \ \/___/ / /\ \ \/ /_/_ \/_/ / / /_/ / /
   / / /__\/ / / / /   / / /  \ \ \    / / /  \/_/ / /\ \ \___\ / / /   / / /  \ \ \    / / /  \/_/ /____/\   / / /__\/ / 
  / / /_____/ / / /   / / _    \ \ \  / / /     / / /  \ \ \__// / /   / / _    \ \ \  / / /     / /\____\/  / / /_____/  
 / / /\ \ \  / / /___/ / /_/\__/ / / / / /     / / /____\_\ \ / / /___/ / /_/\__/ / / / / /     / / /______ / / /\ \ \    
/ / /  \ \ \/ / /____\/ /\ \/___/ / /_/ /     / / /__________/ / /____\/ /\ \/___/ / /_/ /     / / /_______/ / /  \ \ \   
\/_/    \_\/\/_________/  \_____\/  \_\/      \/_____________\/_________/  \_____\/  \_\/      \/__________\/_/    \_\/   


[?] Started at	: 2020-08-05 17:13:55

GET	200 OK				http://golden.thm/
GET     403 Forbidden                   http://golden.thm/.php
GET     403 Forbidden                   http://golden.thm/.html
GET     403 Forbidden                   http://golden.thm/.hta
GET     403 Forbidden                   http://golden.thm/.hta.php
GET     403 Forbidden                   http://golden.thm/.hta.html
GET     403 Forbidden                   http://golden.thm/.hta.txt
GET     403 Forbidden                   http://golden.thm/.htaccess
GET     403 Forbidden                   http://golden.thm/.htaccess.php
GET     403 Forbidden                   http://golden.thm/.htaccess.html
GET     403 Forbidden                   http://golden.thm/.htaccess.txt
GET     403 Forbidden                   http://golden.thm/.htpasswd
GET     403 Forbidden                   http://golden.thm/.htpasswd.php
GET     403 Forbidden                   http://golden.thm/.htpasswd.html
GET     403 Forbidden                   http://golden.thm/.htpasswd.txt
GET     200 OK                          http://golden.thm/index.html
GET     200 OK                          http://golden.thm/index.html
GET     403 Forbidden                   http://golden.thm/server-status
  [00:03:25] ########################################   18444/18444   ETA: 00:00:00 req/s: 89

[?] Ended at: 2020-08-05 17:17:20

Utilizando GOBUSTER con las credenciales realizamos una busqueda de paginas y directorios en /sev-home/ pero no encontramos nada interesante.

root@upset:~/thm/goldeneye# gobuster dir -u http://golden.thm/sev-home/ -w /usr/share/wordlists/dirb/common.txt -P [... REDACTED ...] -U boris -q -t 50 -x php,html,txt
/index.html (Status: 200)
/index.html (Status: 200)

POP3 - HYDRA

Intentamos reutilizar la contraseña junto con los usuarios que encontramos en este servicio pero no funcionaron, por lo que utilizamos hydra para hacer un ataque de fuerza bruta junto con los usuarios y el wordlist rockyou.

Despues de realizar mas de diez mil intentos no encontramos alguna contraseña (raro en una maquina de THM) con el wordlist rockyou cambiamos de wordlist a uno más pequeño, con el cual encontramos credenciales para los usuarios boris y natalya.
image

BORIS - EMAIL

Utilizamos las credenciales para leer los correos de boris al igual que en Fowsniff CTF - THM, encontramos otros usuarios xenia y alec. En los correos hablan sobre codigos de boris, estos codigos natalya ha podido romper. Tambien sobre un archivo escondido en el servidor.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
  RETR 1
  +OK 544 octets
  Return-Path: <root@127.0.0.1.goldeneye>
  X-Original-To: boris
  Delivered-To: boris@ubuntu
  Received: from ok (localhost [127.0.0.1])
      by ubuntu (Postfix) with SMTP id D9E47454B1
      for <boris>; Tue, 2 Apr 1990 19:22:14 -0700 (PDT)
  Message-Id: <20180425022326.D9E47454B1@ubuntu>
  Date: Tue, 2 Apr 1990 19:22:14 -0700 (PDT)
  From: root@127.0.0.1.goldeneye

  Boris, this is admin. You can electronically communicate to co-workers and students here. I'm not going to scan emails for security risks because I trust you and the other admins here.
  .
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
  RETR 2
  +OK 373 octets
  Return-Path: <natalya@ubuntu>
  X-Original-To: boris
  Delivered-To: boris@ubuntu
  Received: from ok (localhost [127.0.0.1])
      by ubuntu (Postfix) with ESMTP id C3F2B454B1
      for <boris>; Tue, 21 Apr 1995 19:42:35 -0700 (PDT)
  Message-Id: <20180425024249.C3F2B454B1@ubuntu>
  Date: Tue, 21 Apr 1995 19:42:35 -0700 (PDT)
  From: natalya@ubuntu

  Boris, I can break your codes!
  .
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
  RETR 3
  +OK 921 octets
  Return-Path: <alec@janus.boss>
  X-Original-To: boris
  Delivered-To: boris@ubuntu
  Received: from janus (localhost [127.0.0.1])
      by ubuntu (Postfix) with ESMTP id 4B9F4454B1
      for <boris>; Wed, 22 Apr 1995 19:51:48 -0700 (PDT)
  Message-Id: <20180425025235.4B9F4454B1@ubuntu>
  Date: Wed, 22 Apr 1995 19:51:48 -0700 (PDT)
  From: alec@janus.boss

  Boris,

  Your cooperation with our syndicate will pay off big. Attached are the final access codes for GoldenEye. Place them in a hidden file within the root directory of this server then remove from this email. There can only be one set of these acces codes, and we need to secure them for the final execution. If they are retrieved and captured our plan will crash and burn!

  Once Xenia gets access to the training site and becomes familiar with the GoldenEye Terminal codes we will push to our final stages....

  PS - Keep security tight or we will be compromised.

  .

NATALYA - EMAIL

Utilizamos neuvamente telnet pero esta vez con las credenciales de natalya, encontramos en uno de los correos las credenciales del usuario xenia.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
  RETR 1
  +OK 631 octets
  Return-Path: <root@ubuntu>
  X-Original-To: natalya
  Delivered-To: natalya@ubuntu
  Received: from ok (localhost [127.0.0.1])
  by ubuntu (Postfix) with ESMTP id D5EDA454B1
  for <natalya>; Tue, 10 Apr 1995 19:45:33 -0700 (PDT)
  Message-Id: <20180425024542.D5EDA454B1@ubuntu>
  Date: Tue, 10 Apr 1995 19:45:33 -0700 (PDT)
  From: root@ubuntu

  Natalya, please you need to stop breaking boris' codes. Also, you are GNO supervisor for training. I will email you once a student is designated to you.

  Also, be cautious of possible network breaches. We have intel that GoldenEye is being sought after by a crime syndicate named Janus.
  .
 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
  RETR 2
  +OK 1048 octets
  Return-Path: <root@ubuntu>
  X-Original-To: natalya
  Delivered-To: natalya@ubuntu
  Received: from root (localhost [127.0.0.1])
      by ubuntu (Postfix) with SMTP id 17C96454B1
      for <natalya>; Tue, 29 Apr 1995 20:19:42 -0700 (PDT)
  Message-Id: <20180425031956.17C96454B1@ubuntu>
  Date: Tue, 29 Apr 1995 20:19:42 -0700 (PDT)
  From: root@ubuntu

  Ok Natalyn I have a new student for you. As this is a new system please let me or boris know if you see any config issues, especially is it's related to security...even if it's not, just enter it in under the guise of "security"...it'll get the change order escalated without much hassle :)

  Ok, user creds are:

  username: xenia
  password: [... REDACTED ...]

  Boris verified her as a valid contractor so just create the account ok?

  And if you didn't have the URL on outr internal Domain: severnaya-station.com/gnocertdir
  **Make sure to edit your host file since you usually work remote off-network....

  Since you're a Linux user just point this servers IP to severnaya-station.com in /etc/hosts.
  .

GOLDENEYE PART 2

Agregamos el siguiente dominio severnaya-station.com a nuestro archiv /etc/hosts junto a la IP de la maquina, y nos dirigimos a /gnocertdir. Encontramos lo que parece ser la plataforma Moodle.
image

Utilizamos las credenciales de xenia para ingresar. En los mensajes de xenia encontramos un mensaje de doak (nuevo nombre de usuario) en donde habla sobre un curso en el que xenia esta involucrada.
image

DOAK - HYDRA -> POP3

Nuevamente utilizamos hydra con el usuario doak en el puerto de pop3 (55007). Logramos obtener su contraseña.
image

Al revisar uno de sus correos encontramos su usario y contraseña:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
RETR 1
+OK 606 octets
Return-Path: <doak@ubuntu>
X-Original-To: doak
Delivered-To: doak@ubuntu
Received: from doak (localhost [127.0.0.1])
	by ubuntu (Postfix) with SMTP id 97DC24549D
	for <doak>; Tue, 30 Apr 1995 20:47:24 -0700 (PDT)
Message-Id: <20180425034731.97DC24549D@ubuntu>
Date: Tue, 30 Apr 1995 20:47:24 -0700 (PDT)
From: doak@ubuntu

James,
If you're reading this, congrats you've gotten this far. You know how tradecraft works right?

Because I don't. Go to our training site and login to my account....dig until you can exfiltrate further information......

username: dr_doak
password: [... REDACTED ...]

.

ADMIN - MOODLE

Utilizamos las credenciales de doak en moodle. Encontramos un archivo que contiene una direccion a una imagen, que segun el mensaje ahi se encuentran las credenciales del usuario admin.
image

Descargamos la imagen y al analizarla con exiftool encontramos una cadena de texto codificada en base64.
image

Utilizamos la “contraseña” que encontramos en moodle con el usuario admin y logramos obtener acceso.

WWW-DATA - USER

Dentro de moodle agregamos una shell inversa en la configuracion del PATH de ASPELL.
image

Tambien configuramos el parametro del plugin TinyMCE a PSpellShell.
image

Pusimos a la escucha netcat, creamos una nueva entrada de blog donde vemos la opcion de spell, que al presionar el boton, se ejecuta nuestra shell.
image

Logramos obtener una shell con el usuario www-data.
image

PRIVILEGE ESCALATION

Hacemos una pequeña enumeracion con uname -a y vemos la version del kernel, al revisar si existe un exploit encontramos Linux Kernel 3.13.0 - Local Privilege Escalation, el cual descargamos y ejecutamos en la maquina, pero nos dio un error y es que gcc no está instalado en la maquina.
image

Por lo que buscamos alternativas a gcc y encontramos clang, el cual si esta instalado en la maquina. Editamos el exploit cambiando gcc por clang, descargamos, ejecutamos el exploit en la maquina y logramos obtener una shell con usuario root.
image

gcc a clang.

1
2
-lib = system("gcc -fPIC -shared -o /tmp/ofs-lib.so /tmp/ofs-lib.c -ldl -w");
+lib = system("clang -fPIC -shared -o /tmp/ofs-lib.so /tmp/ofs-lib.c -ldl -w");

Y nuestra flag root.txt.
image
image

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe