VulNyx | Bund

Información

Bund es una máquina Linux de dificultad media de la plataforma VulNyx, ganaremos acceso al
sistema desde el protocolo Rsync consiguiendo subir al servidor web una reverse shell en Ruby.
Para la escalada de privilegios abusaremos de permisos SUDO en el binario Bundle

Enumeración

Network Scan (ARP)

arp-scan -l
Interface: eth0, type: EN10MB, MAC: 08:00:27:2d:80:d5, IPv4: 192.168.1.10
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.1.56 08:00:27:6b:85:44 PCS Systemtechnik GmbH

La IP buscada es 192.168.1.56

Nmap Scan (TCP)

Escaneo rápido

nmap -n -Pn -sS -p- --min-rate="5000" 192.168.1.56
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-05 18:54 CEST
Nmap scan report for 192.168.1.56
Host is up (0.00012s latency).
Not shown: 65531 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
873/tcp open rsync
9393/tcp open unknown
MAC Address: 08:00:27:6B:85:44 (Oracle VirtualBox virtual NIC)

Escaneo detallado

❯ nmap -n -Pn -sVC -p22,80,873,9393 192.168.1.56
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-05 18:56 CEST
Nmap scan report for 192.168.1.56
Host is up (0.00031s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 f0e624fb9eb07a1abdf7b185237fb16f (RSA)
| 256 99c87431451058b0cecc63b47a82573d (ECDSA)
|_ 256 60da3e3138fab549ab48c3432c9fd132 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Site doesn't have a title (text/html).
873/tcp open rsync (protocol version 31)
9393/tcp open http WEBrick httpd 1.8.1 (Ruby 2.7.4 (2021-07-07))
|_http-server-header: WEBrick/1.8.1 (Ruby/2.7.4/2021-07-07)
|_http-title: Site doesn't have a title (text/html;charset=utf-8)
PuertoServicioVersión
Puerto 22SSHOpenSSH 8.4p1 Debian 5+deb11u1
Puerto 80HTTPApache httpd 2.4.56 ((Debian))
Puerto 873RSYNCrsync (protocol version 31)
Puerto 9393WEBrickWEBrick httpd 1.8.1 (Ruby 2.7.4 (2021-07-07))
Servicios abiertos en la máquina objetivo

Puerto: 80 (HTTP)

Encuentro una página en construcción que no contiene nada de interés (realizando fuzzing tampoco encontré ningún recurso/archivo)

Puerto: 9393 (HTTP)

Encuentro una página en construcción que no contiene nada de interés (realizando fuzzing tampoco encontré ningún recurso/archivo)

Puerto: 873 (RSYNC)

Me conecto a Rsync y no muestra ningún recurso.

rsync 192.168.1.56::

Que no muestre ningún recurso, no significa que no exista… Rsync puede estar configurado en modo: list = no (esto hace que no tengas la capacidad de listar recursos sin conocer su nombre) realizo fuerza bruta de recursos con la herramienta rsync-brute y el diccionario common.txt

 ./rsync-brute -t 192.168.1.56 -w /opt/common.txt

Obtenemos acceso y encontramos el recurso fileadmin

Dentro del recurso fileadmin, encuentro lo que parece ser un directorio de un servidor web de tipo
Jekyll/Bundler porque la extensión del archivo app es .rb (Ruby)

rsync 192.168.1.56::fileadmin

Descargo app.rb para ver la estructura que tiene el archivo.

rsync 192.168.1.56::fileadmin/app.rb 

El texto “Under Construction” es el mismo que se muestra en ambos servidores web.

Modifico app.rb para intentar inyectar un comando y lo subo para sobrescribir el existente.

rsync app.rb 192.168.1.56::fileadmin

Consigo ejecutar comandos como usuario axel en el servidor que corre en el puerto 9393

Ya ejecutando comandos, intento ganar acceso al sistema… modifico de nuevo el archivo app.rb con una reverse shell de Netcat y subo el archivo.

rsync app.rb 192.168.1.56::fileadmin

Al pulsar F5 para refrescar la página obtengo la shell como usuario axel y leo la flag user.txt

Privilege Escalation

axel puede ejecutar como root el binario bundle con sudo

En GTFOBins nos dan el one liner para escapar una shell

Me convierto en usuario root abusando de los privilegios y leo la flag root.txt

axel@bund:~$ sudo -u root /usr/local/bin/bundle help

Hasta aquí la máquina Bund

No responses yet

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *