Serv-U是一个极为强大的FTP服务器软件,界面简洁,容易上手,不论是商业用途,还是自己搭个人FTP,它几乎成了首选软件,而近两年不断爆出的各个版本的安全漏洞,却让大家在使用Serv-U时不得不多留个心眼。
攻击手段
纵览一下当前网络上流行的漏洞攻击方式,软件缺陷所造成的溢出最为关键,简单的说溢出就是针对软件的bug,提交构造的恶意代码,造成软件执行攻击者的代码或指令。从2004到2005年内Serv-U就出现了4~5个溢出漏洞,极其严重的可远程获取电脑的完全管理权限,非常危险,这将直接导致我们的个人隐私完全暴漏,入侵者可以通过漏洞进入我们的计算机,肆意翻看电脑上的文章、照片。当前在网络中出现的攻击手段,主要有嗅探窃听、恶意攻击、权限提升、账号隐藏、漏洞溢出五种方式,而这些又是一个互相关联的过程。
嗅探窃听:这算是对Serv-U攻击的一个前奏。入侵者会通过一些嗅探软件窃听到FTP密码,毕竟一些攻击工具必须拥有账号才能实施攻击。
恶意攻击:使用大容量文件攻击,入侵者会利用这漏洞对Serv-U软件发送大容量的文件,然后导致FTP处理不过来而造成程序没响应或者自动关闭。
权限提升:前提是攻击者取得对Serv-U安装目录完全控制权限。如果Serv-U把配置信息写入扩展名为ini的文件,大部分攻击者会对目标主机Web服务进行渗透入侵,诸如利用流行的SQL注入,上传漏洞来进行入侵,进而对Serv-U的安装目录实施篡改ServUDaemon.ini文件,替换为自己设定好拥有执行权限的配置信息,以此来获取管理员身份特权。
账号隐藏:通过第三方插件(Serv-U扩展库),实现“账号-映射”,也就是让一个固定账号下面映射几个子账号,继承账号权限。攻击者必须拿到Serv-U目录的写权限,利用插件来对账号隐藏。
漏洞溢出:一般情况下,攻击者在确定版本有溢出漏洞之后,会自己编译或者在网络上寻找所对应的溢出漏洞攻击工具对目标系统进行溢出,成功将会取得目标系统的系统权限,由于Serv-U默认是以system权限运行,所以溢出成功后,所得到的权限为system权限。
大家可能会发现,除了软件异常以外,Serv-U目录读写权限已成为关键,可能就会想到设置好Serv-U目录权限,安全就得以保障了,其实不然,安全是一个整体。很多时候,在装有Serv-U的服务器上架设着Web服务器,我们不得不两者兼顾,有的放矢,才能把安全做好。
一次模拟入侵
我们可以从国内权威安全组织“绿盟”漏洞数据库中查找到在过去一年内的相关Serv-U漏洞,结果足让人吃惊,平均下来三个月就有一次漏洞。
2004-09-14 Serv-U FTP服务器设备文件名远程拒绝服务漏洞
2004-08-09 Serv-U本地权限提升漏洞
2004-04-22 Serv-U FTP服务器LIST命令超长-l参数远程缓冲区溢出漏洞
2004-02-27 Serv-U FTP服务器MDTM命令远程缓冲区溢出漏洞
2004-01-29 Serv-U FTP服务器SITE CHMOD命令超长文件名远程溢出漏洞
下面我们就以Serv-U本地权限提升漏洞为例来说明其危害性。
PCS小提示:尽管在Serv-U6.0.0.2中增加了密码安全设置功能。但是本文作者在对Serv-U6.0.0.2进行测试的时候发现,在安装Serv-U的服务器权限设置不当的时候依然能提升权限成功。
漏洞发现日期:2004-08-09
影响版本:RhinoSoft Serv-U 3.0.0.20 至RhinoSoft Serv-U 6.0.0.2
漏洞危害:Serv-U存在设计问题,本地攻击者可以利用这个漏洞以SYSTEM权限在操作系统上执行任意命令。
测试环境:Microsoft Windows Server 2003, Enterprise Edition+Serv-U FTP Server 6.0.0.2
测试过程:
第一步:以普通用户身份登录Windows,在开始菜单的运行窗口中输入cmd,在命令提示符下输入Serv-U6(运行Serv-U6本地提升权限工具,见图1):
输入serv-u6.exe 43958 “net user test test /add”,添加一个名为“test”的用户。
第二步:接着输入serv-u6.exe 43958 “net localgroup administrators test /add”将该账户提升为超级用户权限,如果成功,那么软件界面将会返回提示信息
<220 Serv-U FTP Server v6.0 for WinSock ready...
>USER LocalAdministrator
<331 User name okay, need password.
******************************************************
>PASS #l@$ak#.lk;0@P
<230 User logged in, proceed.
******************************************************
这个时候,你可以使用用户名test,密码test进行登录了,并且发现自己已经成为超级用户了,这里不需要再说明什么了,你已经拥有了系统的超级权限了,入侵者已经可以在你的电脑上为所欲为了。
漏洞解决方案:尽快升级到最新版本,由于此本地提升权限漏洞为软件设计问题,并非程序出现异常。
安全对策
Serv-U安全隐患重重,那么如何才能防范入侵呢?笔者以Windows 2003 Sp1系统、NTFS分区为例,在保证系统安装好最新补丁的情况下,来对系统进行安全部署。首先安装Serv-U最新版本于非系统分区,由于默认情况下系统盘的一些目录都被赋予了everyone权限,这给攻击者在获取Webshell的时候执行攻击程序提供了环境。安装过程很简单,注意安装过程中是否有必要设置匿名登录,否则禁止匿名登录。
1.系统权限设置
第一步:对Serv-U目录设置权限。对用户组进行清理,留下Administrators和system,我们赋予Administrator权限,当然我们还可以新建立一个用户组来对Serv-U操作,把目录赋予此用户完全控制的能力,不过此方法不适合虚拟主机进行日常添加和删除用户操作。
第二步:建立一个FTP用户目录,根目录赋予Administrators完全控制权限,System只读权限。
第三步:为每个用户创建各自的目录,并赋予如下安全策略:
删除 Everyone group(这里尤为关键)
该System account's folder's 完全控制
添加给用此目录的用户完全访问控制
第四步:通过Serv-U设置用户权限,取消“执行”权限。在Web目录中去掉执行权限,以防止取得webshell后运行攻击程序来对Serv-U进行攻击。在进行权限设置的时候请遵循基本规律:有特殊属性的放在前面,共用属性的放在后面!
此外,针对Serv-U的插件实现账号隐藏的攻击方式惟有在目录权限设置不当并且入侵者取得WebShell的时候进行文件替换,挂接Dll。只要权限设置合理,定期对Serv-U目录检查,Serv-U安装后文件并不多,此类攻击方式很容易现形。
2.防范大容量文件攻击
在安装好FTP软件后,首先需要添加自己的域,然后在域上添加FTP的登录用户,当添加用户后,软件一般默认没有对添加的用户进行文件上传、下载的速率进行设置,因此这样一来就有被攻击的隐患,那就是黑客会利用这个漏洞对FTP软件发送大容量的文件,然后导致FTP处理不过来而造成程序没响应或者自动关闭。
在“常规”中能看到“最大上传速度、最大下载速度(KB/秒)”的选项。我们一般默认是不填的,建议用户设置一个具体的数字来限制这个速度。同时,最好把在“空闲超时、任务超时、最大用户数”的选项上也设置一个具体的数值。一般地,默认10分钟就足够了(见图2)。
3.溢出防范
近期内暂未发现软件所造成的缓冲区溢出漏洞,但是建议用户关注安全新闻,注意打补丁,新版本中也解决了出现的BUG,最好的方法就是升级,以免造成不必要的损失。当然这是极为被动的方式,但愿广大朋友对安全多一点认识,多一点细致,多一点防范,也就会少一点损失。
4.端口密码设置
由于笔者使用的是Serv-U6.0.0.2版本,固可以在ServUDaemon.ini中加上LocalSetupPortNo=12345来改变本地管理端口,不用去改ServUDaemon.exe。修改以后我们要利用IPSec来限制IP访问12345端口。在新版本Serv-U6.0.0.2中已经提供对本地密码进行修改的功能,在其主界面右边,我们可以更改设置本地服务器密码,这样一来,就需要输入密码才能进行本地管理,默认的是#l@$ak#.lk;0@P也就是空,不需要密码就可以管理。我们设置和更改密码的时候,旧密码留空,然后设置好你的本地管理密码。设置完成后会在ServUDaemon.ini中添加LocalSetupPassword=eq8BD223881747 DB4FCC458FC5EE3774D6之类的一段(见图3)。
5.传输安全
由于Serv-U在未开启SSL时,FTP传输是以明文方式传输数据,在位于路由或交换环境下,这很容易被嗅探工具捕获,如强大的Sniffer Pro、NetXray,小一点的arpsniffer、Dsniffer都可以抓到,利用此方式攻击,很多安全站点被渗透也不是什么新鲜的话题了。所以下面我们来看看如何启用Serv-U的SSL功能。
第一步: 首先为Serv-U创建新的SSL服务器证书,启动Serv-U管理员,Serv-U默认为我们提供了一个证书,但所有默认安装的SSL证书私人密钥均一样。为安全起见,我们需重新建立一个,很简单,打开Serv-U“本地服务器”的“设置”选项,在管理界面右边,打开“SSL证书”,依次填入“普通名称(FTP服务器的IP地址)”、“电子邮件”等相关信息(见图4),点“应用”按钮将会在Serv-U目录下覆盖掉原Serv-U提供的证书ServUCert.crt。
第二步:初次使用我们应该对证书进行认证,把它安装到受信任的区域,点击“安装证书”,进入下一步“证书导入向导”,选择默认存储区域,点击“下一步”或者自行选择存储区域、完成,接着会弹出安全性警告(因为没有从证书颁发机构安装),这里不管它,点击“是”,进行证书安装,成功后会弹出“证书导入成功”对话框,确定后,我们再次打开ServUCert.crt,OK,证书已经信任了,这方便了FTP客户端进行登录时候不会弹出“是否信任”烦人的提示框,下一步我们来设置Serv-U以提供SSL支持(见图5)。
第三步:打开Serv-U服务器下面的域,比如www.xhacker.cn),在右边出现的“安全性”下拉框中,有三个选项,默认的是“仅仅规则FTP,无SSL/TLS会话”,既然我们要对FTP服务器进行SSL支持,我们就选择下面的“只允许SSL/TSL会话”,也可以根据需要选择“同时允许规则FTP,SSL/TSL会话”,应用后,Serv-U服务器就已经具备了SSL传输加密传输功效。
为安全考虑,只有对FTP客户端也启用SSL连接。以FlashFxp为例,首先在FlashFxp的快速连接窗口中,选择“SSL”,然后在“安全套接字”下面选择“认证SSL”。这样我们就可以使用SSL连接了,连接成功后,我们将会在FlashFxp的状态栏下看到一把小锁的标志,说明已经进行成功SSL安全连接。现在大家可以用嗅探工具对ftp端口进行嗅探,在未使用SSL传输连接的时候,可以嗅探到明文密码,通过使用SSL加密传输连接,逃过了明文传输被嗅探这一劫。
现在Serv-U FTP服务器在国内应用相当广泛,小到个人,大到集团,只要BUG一发现,针对漏洞的攻击代码一流传起来,将给诸多企业及个人用户带来巨大的灾难。对此,我们惟有确保安全部署好系统的情况下,对安全界投以关注的目光,时刻关注最新漏洞,做好防范措施,发现漏洞,及时给系统打上补丁,才能够保证Serv-U不被入侵。