VulNyx - Fire

logo

  • Extracting Credentials - Firefox Profile
  • Import SSH Key - Public
  • Abuse Units Binary - Privesc

Escaneo de puertos

❯ nmap -p- -T5 -n -v 192.168.1.100

PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
80/tcp   open  http
9090/tcp open  zeus-admin

Escaneo de servicios

❯ nmap -sVC -v -Pn -p 21,22,80,9090 192.168.1.100

PORT     STATE SERVICE         VERSION
21/tcp   open  ftp             pyftpdlib 1.5.7
| ftp-syst: 
|   STAT: 
| FTP server status:
|  Connected to: 192.168.1.100:21
|  Waiting for username.
|  TYPE: ASCII; STRUcture: File; MODE: Stream
|  Data connection closed.
|_End of status.
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r--   1 root     root      4442576 Sep 29 18:52 backup.zip
22/tcp   open  ssh             OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey: 
|   3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
|   256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_  256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp   open  http            Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Apache2 Debian Default Page: It works
| http-methods: 
|_  Supported Methods: GET POST OPTIONS HEAD
9090/tcp open  ssl/zeus-admin?
| ssl-cert: Subject: commonName=teste/organizationName=b8029c6b7a9c4c7d93fed3a3c6ab94bc
| Subject Alternative Name: IP Address:127.0.0.1, DNS:localhost
| Issuer: commonName=teste/organizationName=b8029c6b7a9c4c7d93fed3a3c6ab94bc
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2023-09-29T17:19:10
| Not valid after:  2024-09-28T17:19:10
| MD5:   be59:4728:2274:7a3b:0c7e:d93f:900f:7034
|_SHA-1: 9abe:3c0e:577f:45b6:aac5:099a:4ff9:16c5:27d0:3ef0
| fingerprint-strings: 
|   GetRequest, HTTPOptions: 
|     HTTP/1.1 400 Bad request
|     Content-Type: text/html; charset=utf8
|     Transfer-Encoding: chunked
|     X-DNS-Prefetch-Control: off
|     Referrer-Policy: no-referrer
|     X-Content-Type-Options: nosniff
|     Cross-Origin-Resource-Policy: same-origin
|     <!DOCTYPE html>
|     <html>
|     <head>
|     <title>
|     request
|     </title>
|     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|     <meta name="viewport" content="width=device-width, initial-scale=1.0">
|     <style>
|     body {
|     margin: 0;
|     font-family: "RedHatDisplay", "Open Sans", Helvetica, Arial, sans-serif;
|     font-size: 12px;
|     line-height: 1.66666667;
|     color: #333333;
|     background-color: #f5f5f5;
|     border: 0;
|     vertical-align: middle;
|     font-weight: 300;
|_    margin: 0 0 10p

FTP TCP - 21

Me conecto al servidor FTP y me descargo el archivo backup.zip.

ftp

Al descomprimir backup.zip veo un directorio con el nombre mozilla, en su interior perfiles del navegador firefox.

fairfocs

Me descargo firefox_decrypt.py y obtengo las credenciales del usuario marco.

fdecrypt

HTTP TCP - 80

http

HTTP TCP - 9090

Al visitar el puerto 9090 me sale esta advertencia.

9090

Después de ignorar la advertencia y aceptar los riesgos encuentro un panel de login.

servidorfire

Inicio sesión con las credenciales encontradas anteriormente.

servidorfire-dash

Voy a Tools/Terminal y veo que es una terminal del usuario marco.

terminal

Creo la carpeta .ssh en el home de marco, dentro de la carpeta creo el archivo authorized_keys, le añado mi id_rsa.pub y ya puedo conectarme al sistema.

marcoshell

Enumero permisos de sudo.

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

User marco may run the following commands on fire:
    (root) NOPASSWD: /usr/bin/units

En la ayuda del binario units encuentro la flag -f la cual me permite “leer” archivos.

unitsHelp

Lanzo units apuntando al id_rsa de root y guardo la salida de la terminal en un archivo con el nombre id_rsa_sucia.

unitsfile

Con awk y sed la dejo la llave casi lista para usarla.

❯ cat id_rsa_sucia | awk '{print $3}' | sed "s/'//g" > root_rsa

Al finalizar los retoques me queda de la siguiente forma.

rootrsa

Finalmente me conecto como root.

root

Y aquí termina la máquina Fire.

Saludos!