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)
Puerto | Servicio | Versión |
Puerto 22 | SSH | OpenSSH 8.4p1 Debian 5+deb11u1 |
Puerto 80 | HTTP | Apache httpd 2.4.56 ((Debian)) |
Puerto 873 | RSYNC | rsync (protocol version 31) |
Puerto 9393 | WEBrick | WEBrick httpd 1.8.1 (Ruby 2.7.4 (2021-07-07)) |
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