现实环境中,在对一个目标做渗透测试的时候,我们很少现找一个 0day来渗透一个Windows 域管理器。然而,如果我们在很罕见的测试环境中给客户做渗透测试,这个时候我们就不得不找一个0day了。
Lansweeper是一个资产管理软件,可以扫描你的网络环境,获取系统信息、网络接口、资产状态等等。在这次渗透中,我们很惊讶的发现我们可以获取Lansweeper 5 的普通用户的管理仪表盘权限。我们的客户也很惊讶,因为他们发誓他们只配置了域管理员可以访问该页面,普通用户是没有权限登录这个页面的。如果他没有骗我们的话,我们必须要重新设置登录许可,并且对登录过程进行检查,看看问题出现在哪里。我们的实验结果表明:总共有3个漏洞导致客户的网络设施彻底沦陷。
我们遇到的环境中的Lansweeper 5 是安装在Windows Server机器上,使用的是MSSQL数据库。为了得到Lansweeper数据库中的密码并解密出来,我们用到了以下的攻击漏洞,这些漏洞是在用户的仪表盘页面上找到的;
l 数据库默认账号密码
l MSSQL的错误信息中泄露的敏感信息
l 解密密文
以上三种漏洞可以从两个不同的方向将我们存储在后台的凭证获取到:Web界面和MSSQL数据库泄露。
Lansweeper 5的默认使用MSSQL服务器作为后台数据库,用于存储凭证信息和正常用于查询的数据。连接信息可以在网站文件夹下的web.config文件中找到。也就是说只有更改web.config文件,才能把默认数据库账号密码改掉。
如果攻击者可以 访问lansweeperdb的数据库MSSQL的1433端口,那么他就可以很简单的通过这个默认账号密码进一步获取到更大的权限。
身份认证信息就存在表: tsysCredentials 中,如下图:
这些密文并不是加盐的哈希算法,他们使用的是一个可逆的加密算法,具体解密在后面部分会讲。数据库开启了远程访问有时候就是这样,如果存在漏洞的话就很容易被攻击者利用,但是如果数据库只是绑定了本地地址的话,攻击者就困难了。所以接下来我们将想大家展示从web界面上获取到以上内容。
从MSSQL错误信息中获取敏感信息
lansweeper应用为SQL脚本提供了一个丰富的报告信息。开发人员一般来说一定不能让用户请求到tsysCredentials表中的信息。但是,SQL脚本 (Configuration->Database scripts) 的报错信息中可能可以显示出该表的内容,这也是基于报错的SQL注入的原理( http://securityidiots.com/Web-Pentest/SQL-Injection/MSSQL/MSSQL-Error-Based-Injection.html ),下面的截图是个例子:
如上图,只要设置适当的值,用户名和密码就都可以被发现。简单的在select语句中加上除以0技巧,就可以报错了。正常情况下,为了可以访问SQL脚本,我们需要注册后台用户,并且需要高权限用户通过你的注册,这个时候如果限制普通用户登录就可以了。然而,在我们的情况中,Lansweeper访问控制设置在最近一次更新中被清除了,这导致我们的后台可以直接用普通用户登录并且提取到密码。这也提醒我们在更新之后要检查各种设置。
当我们用Lansweeper存储这些认证信息的时候,特别是远程管理这些电脑和服务器的时候,密码要设计成可逆的。但是在存储这些密码的时候要特别注意,在Lansweeper中,这些就被忽视了。因此我们建议在设计密码的时候最好请专业人员设计。
在获取到tsysCredentials表上的内容时,看起来似乎并没有把密码暴露出来。但是该系统是用.NET架构开发的,很容易就能发现加密密钥和密文存储在一起的。其余的部分就是固定的硬编码和用于混淆的参数。这是个很糟糕的处理方法,因为它是依赖于软件本身,而不是具体的安装或者特定的密码输入。另外两个键和密文都可以通过上述的SQL注入提取。
一下是用工具解密密码的过程( https://github.com/GoSecure/LansweeperPasswordRecovery ):
好了,如果你使用的是Lansweeper 5,记住这个密码恢复可能可以让任何人进入你的数据库(通过默认账号名密码)或者通过默认的SQL注入。
这个问题在版本6 的Lansweeper中修复了。更新信息如下:更安全的密码加密 http://www.lansweeper.com/changelog.aspx 。
好吧,翻译到这里我也奔溃了,确实没有什么好东西,以下是作者给出的一个msf上的好像有个工具,大家看看,就当安慰了:
https://www.rapid7.com/db/modules/auxiliary/gather/lansweeper_collector
如上所述 , Lansweeper 6应该包括新的安全设计和安全补丁,可以看一看现在的解决方案。与此同时,以下是一些保护你凭证的方法:
1. 在升级系统的时候记得检查登录验证,防止未授权用户登录
2. 不要使用默认数据库账号密码。
3. 尽量不要把你的数据库入口暴露在公网下
当然,同时建议其他类似的软件也注意这方面问题。
*参考来源: blog.gosecure.ca ,FB小编东二门陈冠希编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)