2.12 对某虚拟主机的一次SiteManager提权
虚拟主机提供商所提供的服务器,安全性相对较高。安全设置较好的服务器,即使某个站点存在安全漏洞,被攻击者获得WebShell,也不会影响其他站点,即攻击者无法获取其他站点的资料,各个站点的安全相对独立,采取的是基于角色的安全控制(用户站点)。在入侵手法中,对虚拟主机的入侵,如果针对某个站点无法入侵成功,那么攻击者往往会采用旁注的方法来入侵虚拟主机上的其他站点,当成功得到其他站点的WebShell后,再来获取指定站点的数据库、管理后台等资料,然后实施深层次的渗透。
对虚拟主机的渗透,一般前半部分较容易实现,后半部分相对较难。本案例虚拟主机的设置还是比较安全的,但是就因为一个细节没有设置好,导致整个服务器乃至所管理的服务器群主机失陷。下面就介绍整个安全渗透过程。
2.12.1 获取虚拟主机某站点的WebShell
通过SQL注入、FTP口令扫描等方法都可以获取WebShell。获取该虚拟主机所有用户的站点配置文件,该配置文件中列出了站点名称、FTP用户名及密码。直接将其设置到CuteFTP中,上传“神秘超强冷枫后门”ASP版本的WebShell,然后在浏览器中输入WebShell的地址,如图2-112所示,输入密码后可正常运行。
图2-112 上传并测试WebShell
2.12.2 使用WebShell中的提权功能尝试提权
目前的WebShell功能很强大。在该WebShell中提供了很多可以提升权限的地方,例如查看提权目录列表Program、pcAnywhere、Serv-u、RealServer、SQL、config、data、temp、Recycler等,如图2-113所示。不要小看这些目录,如果能够查看这些目录,而且具有读写权限,那对虚拟主机来说就很危险了。
图2-113 查看提权目录
在本例中,依次查看Program、pcAnywhere、Serv-u、RealServer、SQL、config、data、temp、Recycler等可能提权的目录,如图2-114所示,不是无法访问,就是路径未找到,因此利用这些目录来提权是行不通的。
图2-114 获取相应文件路径失败
2.12.3 查看可写目录
在WebShell的左边功能列表中单击“查看可写目录”选项,如图2-115所示,WebShell会给出本系统WebShell可写的所有目录,单击“详细报告”按钮可以查看详细情况。
图2-115 查看系统可写目录
依次查看每个磁盘的可写目录,如图2-116所示,对前3个磁盘(C盘、D盘和E盘)都无法写入。
图2-116 依次查看可写文件目录
系统的temp目录中可能会保留一些有用信息,而该主机的操作系统为Windows Server 2003,系统盘下的Windows\temp目录可以读取,因此可以尝试从中获取可利用的信息。在一些系统中,主机管理系统会将部分运行信息保存在临时回话中,由于程序运行完毕未对临时文件夹进行清理,因此只要找到这些信息,就可以提升权限。到C:\Windows\temp目录下下载并打开该目录下的每一个文件,如图2-117所示,通过查看该目录中的sess_*文件,发现以“sess”开头的文件是该系统所提供虚拟主机的多个站点的临时会话,虽然有些会话中包含了用户账号等信息,但对本次提权意义不大。查看其他文件,也没有找到特别有用的信息。
图2-117 打开并查看temp目录中的文件
继续查看磁盘,发现G盘中有一个目录可以读写,如图2-118所示,名称为“setup”。setup目录一般是管理员进行程序安装及设置时所用的目录,在setup文件夹下有多个文件夹,对各个文件夹依次进行查看。
图2-118 获取G盘唯一可读写目录
说明
对整个磁盘进行可读写目录的查看,发现仅setup目录可读写,这极有可能是管理员在安装和设置程序后没有及时删除或者做安全限制造成的。
在查看文件夹及文件的过程中,在vbs文件夹中发现存在多个vbs文件。直接打开,如图2-119所示,GetPing.vbs是一个用于获取ping功能的vbs文件。
图2-119 查看vbs文件
2.12.4 渗透成功
1.找到明文管理员密码
在G:\Setup\vbs下的一个txt文件中找到了一个关键的地方——SiteManager。如图2-120所示,使用SiteManager必须要有具备系统管理员权限的用户名和密码,它们在相关配置文件中会以明文形式存在。
图2-120 找到SiteManager所用的管理员账号和密码
2.查看远程终端端口
在WebShell中单击“特殊端口”选项,查看系统特殊端口的开放情况。如图2-121所示,该服务器远程终端3389端口是开放的,由于该WebShell无法执行“netstat-an”等DOS命令,所以认为该计算机的3389端口是打开的。
图2-121 获取端口开放情况
说明
使用WebShell读取注册表的数据不一定准确,在本例中就是这样,WebShell获取的端口是3389,而实际终端端口是6688。笔者使用了一个笨方法,对该主机的所有端口都进行了探测,然后根据经验对开放的端口进行3389登录尝试。
3.进入系统
在“运行”框中输入“mstsc”,打开远程终端登录器,输入IP地址及获取的用户名和密码,成功进入系统。使用“ipconfig/all”命令查看,发现该计算机有3个IP地址,如图2-122所示。
图2-122 进入系统
2.12.5 继续渗透内外网
1.获取系统口令
使用3389远程终端登录系统,将无法使用GetPw及PwDump等工具获取系统的密码,上传的NC不知道为什么,一传上去就不见了,上传了好多次都是如此。实在没有办法,笔者直接到Radmin网站下载了Radmin 2.2上传到服务器,在服务器上安装Radmin客户端,通过其telnet来执行“getpw$local”命令,以获取其系统Hash值。对获取的Hash值进行整理,并将其导入LC5进行破解,如图2-123所示。
图2-123 破解系统账号
说明
破解系统账号的目的是对内部或者外部网络进行渗透,利用同一口令进行登录尝试。在一个大型网络中,使用同一口令的服务器还是很多的。通过分析研究,笔者发现获取的其他账号和口令分布对应于某一个域名的FTP账号和口令,但不知道这是如何做到的。
2.探测相同网段具有该端口的远程终端IP地址
使用“sfind-p 6688 60.*.*.1 60.*.*.255”命令查看与被渗透主机有相同网段的开放6688端口的IP地址,如图2-124所示,找出了4个IP地址。
图2-124 使用sfind命令探测开放6688端口的其他同网段IP地址
3.使用获取的用户账号和密码登录
使用原来获取的用户账号和密码尝试登录,成功进入系统,如图2-125所示,该服务器有2个IP地址。
图2-125 成功进入新的服务器
4.启用内外网卡
在查看“网络邻居”的属性时,发现计算机有多块网卡,其中有一块网卡被禁用了。启动内网网卡后,远程终端连接失败,内网与外网断开了。