应用虚拟化的攻防

Web渗透测试大家都耳熟能详,但是针对应用虚拟化的渗透测试或许大家比较少接触,而且网上也没有相关的资料。作为前沿攻防团队,本期技术专题将结合过往的项目经验,针对应用虚拟化技术给大家介绍一下相关的攻防技术。

首先介绍一下什么是应用虚拟化,其实应用虚拟化是指应用/服务器计算A/S架构,采用类似虚拟终端的技术,把应用程序的人机交互逻辑(应用程序界面、键盘及鼠标的操作等)与计算逻辑隔离开来,服务器端为用户开设独立的会话空间,应用程序的计算逻辑在这个会话空间中运行,把变化后的人机交互逻辑传送给客户端,并且在客户端相应设备展示出来,通俗的说法为“瘦终端”。

目前,主流的厂家有Ctrix,VMWare等,下图为Ctrix的应用虚拟化样例:

通过这种应用虚拟化技术,对于企业来说,能够提高员工办公的效率,增加效益,对于办公人员来说,则可以在实现随时随地的办公,提高了便捷型,可谓是双方得益,然而越便捷的东西,就意味着他的脆弱性越高,而且在部署这类型应用虚拟化的产品时,大部分的工程人员并无安全经验,很多细节的安全问题并未得到重视,TRT在项目过程中遇到的这类型系统基本都是轻而易举的入侵成功。

攻防是一个持续过程,在渗透测试的过程中,我们必须知己知彼才能百战百胜,了解应用系统是很关键的,所以我们还是得简单介绍一下应用虚拟化的工作模式,以Ctrix的XenApp作为例子:

客户端通过访问CtrixWeb Interface 并选择所需要打开的应用,如下图,那么Ctrix Web Interface就会调用数据中心的应用服务器打开该应用,同时通过特殊的协议,如Citrix ICA,将应用服务器所打开的应用映射到用户的客户端。应用的所有操作均在数据中心完成,用户即使不安装该应用也能使用该应用。

那么问题来了,既然打开的应用是在数据中心,那就意味着,使用者是直接操作数据中心的服务器,如果应用的访问控制没有做好,那么就意味着,攻击者能够利用访问控制的缺失访问非授权的资源,甚至直接控制服务器。

一般情况下,管理员在部署应用虚拟化时都会禁止用户直接调用CMD、任务管理器、组策略、控制面板、注册表、浏览C盘目录、写入文件等,但总会有一些疏忽之处,TRT团队总结出了不少逃逸的技巧,挑选几项给大家分享一下:

调用BAT、VBS执行代码

场景1:如果通过管理员禁止调用任务管理器、注册表、组策略等,同时也禁止了用户浏览C盘目录,限制了用户执行cmd.exe的权限,无法通过调用CMD执行命令。

突破方式:

一般情况下,管理员禁止了用户浏览C盘目录,但禁止不了用户正常浏览用户桌面(在windows 2008系统C:\USER\登录用户名的文件夹下,也同样可以正常浏览),攻击者只需要调出浏览用户桌面即可,如IE,Word都具备打开本地文件的功能,以IE为例,可以使用IE的“查看下载”—>“选项”—>“浏览”,打开资源管理器:

1、尽管多个地方做了浏览及写入限制,但在默认情况下,如WINDWOS 2008系统的C:\USER\登录用户名的文件夹或桌面文件夹是具备访问和写入权限的,我们可以通过写入VBS、BAT命令远程执行代码,然后将执行的结果输出到C:\USER\登录用户名的文件夹下,成功执行远程代码。

2、调用宏命令执行代码:

场景2:在场景1的前提下,如果管理员禁止了目录的执行权限,导致C:\USER\登录用户名的文件夹的目录无法执行命令时。

突破方式:

由于用户进行了执行的限制,那我们可以利用“应用”为我们执行命令。利用上述的方式打开资源管理器,通过Ctrix的远程挂载客户端硬盘的功能,在本地的磁盘打开一个新建的Excel,新建一个宏,利用宏命令的shell()函数(该函数能够通过宏直接调用cmd命令),如下图

Shell “cmd  /c ipconfig >> c:\User\xxx\文件名.txt”

如果存在word、Microsoft Access、PowerPoint应用的话,同样也通过新建一个宏,利用宏命令的shell()函数(该函数能够通过宏直接调用cmd命令),如下图

Word:

Access:

Powerpoint:

 

使用X-shell执行系统代码

场景3:在场景1的前提下,如果管理员禁止了目录的执行权限,导致C:\USER\登录用户名的文件夹的目录无法执行命令时。

突破方式:

浏览云主机的文件夹时,曾发现部分管理员会为了方便管理,安装X-SHELL,这时就可以用利用X-SHELL执行系统命令。

默认情况下,X-SHELL能够执行的系统命令特别有限:

直接运行一些系统命令时,提示command not found

但是可以通过类似管道符的方式,如ipconfig | net user形式执行系统命令:

通过以上方式,可以达到执行系统命令的效果。

开发者模式执行代码

场景4:在场景1和场景2的前提下,如果用户只发布了IE,也对C盘目录做了限制,甚至猥琐到你禁止跳转到任何目录上,但依然有办法突破。

突破方式:

由于打开的是当前目标服务器的IE,可以通过IE的开发者工具的调试功能,通过Javascript调用命令行的方式打开目标服务器的命令行,执行命令。下图为通过IE打开命令行的方法截图:

上述是我们在不同项目过程中,发现的部分应用虚拟化所存在的安全问题,有攻才有防,在攻防的过程中,我们更重视防御的方法,针对部署应用虚拟化我们建议除了做禁止用户直接调用CMD、任务管理器、组策略、控制面板、注册表、浏览C盘目录及写入文件、目录的执行权限等之外,还需要做以下的防护:

本文版权属于TRT团队,由团队成员121、Sampro、短信炸弹编写。如果你觉得这篇文章有用,可以分享给自己的朋友,同样希望更多的人也关注我们的微信公众号trt917,我们会定期分享一些信息安全相关知识,希望能够对大家有所帮助。