返回列表 发帖

知已知彼百战不殆 Serv-U攻击防护全攻略

知已知彼百战不殆 Serv-U攻击防护全攻略


Serv-U FTP Server为RhinoSoft出品的一款在windows平台下使用非常广泛的FTP服务器软件,目前在全世界广为使用,但是前不久它一个又一个的漏洞被发现,许多服务器因此而惨遭黑客入侵。本文旨在帮助广大的网管了解一下常见的黑客入侵手法,从而更好的打造一个安全的FTP服务器。因为懂得入侵,也就懂得了防护,不是吗?

  一. 漏洞篇
  下面为笔者上网找到的关于这款FTP服务器的漏洞资料,当然由于网上也有,我只列一下表,前几个漏洞现在一般不会存在,我就拿后面几个影响力比较大的漏洞开刀吧!
  漏洞列表如下:
  Serv-U FTP Server的SITE PASS拒绝服务攻击1999-12-02
  CatSoft FTP Serv-U存在暴力破解漏洞2000-10-31
  Serv-U FTP存在目录遍历漏洞2000-12-11
  Serv-U Ftp服务器长文件名堆栈溢出漏洞
  Serv-U FTP服务器MDTM命令远程缓冲区溢出漏洞
  Serv-U FTP Server远程/本地提升权限缺陷
  Serv-U v5.0.0.4 and prior 畸形文件名远程缓冲区溢出漏洞
  Serv-U FTP服务器设备远程拒绝服务漏洞
  Serv-U FTP服务本地提升权限漏洞
  二. 攻击与防护实战篇
  首先说明,我不希望有人看到这篇文章利用我所讲的方法去攻击别人的服务器,这是我所不愿看到的,我只是向大家介绍一下常见的黑客入侵手法(所以省略许多入侵技术细节,有兴趣的朋友可以参考其它资料),从而让广大的管理员更加进一步的了解黑客入侵的过程与所利用的方法,从而做到更好的防范!在防护之前我们先了解一下黑客常用的手法:远程直接溢出、修改配置文件提升、用本地提升权限漏洞进行提升等等.当然这只是常用的方法,还有一些其它的方法比如穷举FTP账号密码、利用配置文件破解密码、利用Serv-U做后门等等就不提了。
  1. Serv-U Ftp服务器长文件名堆栈溢出漏洞攻防实战
  关于这个漏洞的利用网上有相应的Exp,下面为笔者拿到的一个Exp程序,如图1:

图1
  至于实战嘛,运行后会有帮助的,按帮助来呵呵,给个图大家看,如下图2:

图2
  至于防范,对管理员而言,最好的方法就是升级了,因为Serv-U 5.0已经不存在此漏洞了。
  2. Serv-U FTP服务器MDTM命令远程缓冲区溢出漏洞攻防实战
  关于这个漏洞的利用程序,笔者在网上找到了三个不同的版本,下面给大家看下我最常用的吧,如图3:

图3
  从图可以看出这个漏洞需要账号密码,所以利用这个漏洞的前提嘛就是得到账号密码了.当然,一般人是配合几个漏洞来入侵的,比如许多论坛以前公开了好多FTP的账号密码什么的,还有好多FTP是弱口令,用扫描器一扫一大堆,呵,怕了吧!还是给大家看个入侵的实例图,分别如图4和5:

图4

图5
  防范,最简单的就是升级到新版本,在5.0.0.4的版本中此漏洞已经修补!
  3.Serv-U FTP Server远程/本地提升权限缺陷攻防实战
  这里我们首先要获得一个webshell,至于如何获得,可以利用上传漏洞啊等等,就一笔带过。下图的webshell没有了运行系统命令的权限,却还是可以看到他的FTP的版本和用户的配置文件并且可以修改这个配置文件,如图6:

图6
  接下去的事就是在后面加个我们恶意构造的具有运行权限目录在系统盘C盘并且权限为系统管理员的用户hacker且密码为我们设的123456,然后我们在命令行下FTP登录以后就可以提升权限,具体过程可以参考下图,如图7:

图7
  看到Exec command successful的提示了吗?呵呵,这个时候服务器上会多出一个xyskytest管理员来。到这里,一台服务器就这样被我成功的控制了。这个漏洞其实就是修改配置文件造成的,如果我们在配置的时候把信息写入注册表或者把配置文件所在的目录设一下访问权限,就可以防止这样的漏洞了。
  4.Serv-U FTP服务本地提升权限漏洞攻防实战
  这个漏洞的形成原理大约说一下吧:Serv-U FTP Server是做为一个服务运行的,而且默认是localsystem权限,而且经过研究发现它的本地管理端口及账号密码都可以嗅探得到,如果一个user权限用户利用这点去运行某些命令来提升权限,那就形成了所谓的本地提升权限漏洞.本文还是演示webshell环境下的提升权限吧,假设你已经有一个webshell并且服务器上装有Serv-U服务.如果一点安全也不做的服务器,可以说本地提升权限一下子就成功了,稍微懂点安全的管理员会改掉内置的默认的端口号及密码什么的,我就遇到过这一台服务器,虽然花了不少时间,最终还是拿下了!按照常规方法就是没有成功,很是郁闷,后来看到了一个怪的端口,而且远程Telnet不上,只对本地127.0.0.1开放,我想就是FTP内置的端口了,管理员看起来还蛮负责的,如图8:

图8
  有了端口,那么内置的账号密码如何得到呢?网上流传的方法如下:
  1. 下载了服务器上的ServUAdmin.exe这个文件,用Winhex打开ServUAdmin.exe来找默认的管理员账号与密码.这里我就是用这种办法找到内置的管理端口与账号密码的。
  2. 下载了对方的ServUAdmin.exe回来覆盖掉自己机子上的再用抓包软件进行嗅探,这种办法理论上可行,我没测试过.
  3. 利用现有程序可以直接读到账号密码了,就不用那么麻烦嗅探或者在Winhex里找了。有了账号密码与端口,我们就可以修改Exp的代码,这里用个工具去实现,如图9:

图9
  接下来的事不用我多说,上传配置好的利用程序直接用webshell运行它,就可以拿到服务器权限啦!不过当时兴奋的没抓图,为了让读者开开眼界,我还是本地演示一下溢出吧,如图10:

图10
  再接下来就是用servu.exe “net localgroup administrators xyskyhack /add”把这个用户加到管理员组,就这样成功提升权限了,所以在这里告诉大家一声,永远没有绝对的安全!!!具体的防范下面会给出,相信大家一定会满意的。
  三. 知已知彼 打造安全的FTP服务器
  上面的漏洞篇与实战篇我想大家如果仔细看的话,肯定会有收获,不过为了照顾那些懒得看上面东西的读者,我们还是稍微抓几个关键的图片,一步一步的教大家如何打造一台安全的FTP服务器!好,Let’s go !

  A.安装前的准备
  安装前为了安全,我不得不这样说:首先要保证你的系统的安全性,比如说磁盘格式必须为NTFS,系统打上目前所有的补丁,而且进行加固。至于如何加固,网上有许多人写了教程,我简要的说一下,删默认的共享,在本地安全策略里设置账号安全与密码策略,不显示上一次登陆的用户名,用TCP/IP筛选允许对外访问的端口,也就是所谓的端口过滤。如果服务器提供WEB服务,必须得利用NTFS对目录进行权限设置。当然,还有N多啦,大家慢慢研究去!
  B.开始安装并汉化破解
  上网下载一个最新版本,这样无异于把以前的常见漏洞拒之门外,同时也省了许多补漏洞的麻烦。下载好了我们就开始安装啦,一般的软件安装介绍都这么说的:一路Next…..真的吗?狂汗,当然不是,许多漏洞就是默认安装才有的啦!安装的时候要注意如下几个地方:
  1. 选择安装路径的时候,为了安全起见,不要按默认的目录安装;
  2. 安装中会提示是否安全成一个服务,我们安装成一个服务,这样才能比较稳定的提供FTP服务。
  3. 在匿名访问设置里选择不允许匿名访问,原因嘛不用说大家都知道的,选择了不允许匿名访问以后serv_U会提示新建一个账号,默认是不锁定的,为了安全,我们得为它锁定,在Lock in home directory对话框里的Lock the user in to the home directory ?里选择Yes,还有,创建的第一个账号的权限往往非常大,这点要特别注意。
  4. 权限设置。一般没有特殊的要求,最好不要给特权,当然得具体情况具体分析,灵活运用嘛。在Admin privilege对话框的Account admin privilege下拉列表里选择No Privilege选项,表示没有特权。
  5. 接下来的汉化以及破解,就不说了吧。
  C.进一步的安全防范,具体如下:
  a.虽然在我们安装的版本中TMDM漏洞已经不存在了,不过为了安全还是禁止TMDM命令修改日期与时间,在设置的高级选项卡里把"允许MDTM命令来更改文件的日期/时间"前面的勾去掉。
  b.上面提到修改INI配置文件从而实现提升权限,我想大家都知道了,呵,其防范就是把配置文件写到注册表里面,如何写,请看下图11:

图11
  这样就不会出现上面所说的ini配置文件导致黑客恶意添加一个具有系统权限且有执行权限的账号。
  c.下面开始对本地提升权限进行防范,当然也是可以突破的嘛,只是给黑客制造一些麻烦。网上一般推荐用Ultraedit打开然后修改,为了方便读者,我找到了一个比较老的工具,对最新版的也适用,如图12:

图12
  这里我修改了默认的端口,本来是43958的,用户名本来是LocalAdministrator我也改了,至于密码我当时没改,大家一定要改呀,这样就可以防范网上一大堆的溢出了。
  D.另外要注意的几个问题
  a.首先遇到的就是如何对用户进行管理。为了安全起见,我们一般建两个账号,一个账号用于上传,一个账号用于下载,当然视具体情况不同而不同啦。这样管理起来就方便多了,上传的账号的权限就只能写入与列表,当然如果有人上传一个文件夹,你就得为人家开一个创建目录的权限,同理,下载的账号只要能读取与列表,当然有些网站提供下载只能读取不能列表也很正常,视具体情况灵活配置,这里抓一个图配置上传账号的目录访问设置,下载专用账号的就不抓图了,如图13:

图13
  另外,如果你担心这个不够用,你还可以利用NTFS来设置上传和下载的目录的权限。
  b.其次就是一个防范大容量文件攻击的问题,如果没有设置上传下载等一些参数,用FTP发送大容量的文件可能导致FTP处理繁忙甚至造成程序假死或自动关闭的现象,所以建议设置一下,如图14:

图14
  c.再者就是FTP服务中存在允许上传权限的问题,这个问题只是在允许断点再传的FTP服务中存在,但现在90%的FTP服务程序都是允许断点再传的,所以这问题在普遍的FTP服务器都会存在.其最好的防范方法是每个用户都给他建立一个目录,将那个用户的权限完全锁在这个目录内,那么用户就没有权限可以查看其它用户的目录,也就是说无法造成这个问题所造成的破坏。
  E.对本地提升权限的终极防范
  读者朋友们,前面说了Serv-U是以服务启动默认是以System权限运行的,所以才有被权限提升的可能。如果这个时候我们把Serv-U服务的启动用户改成一个USER组的用户,那么就再不会有所谓的权限提升了。这样做又出来了一个问题,FTP服务本身却无权限访问serv_U安装目录了,比较好的解决办法就是把这个低权限用户对Serv-U安装目录和提供FTP服务的目录或盘符设为完全控制的权限。在进行终极防范之前,首先把你欲创建的FTP账号建好并设置好相关的权限,然后我们把serv_U服务的权限降级,Let’s go….
  1.打开计算机管理里面的用户与组,创建一个隶属于users的用户servuadmin,然后打开服务找到serv_u服务并进行如下的设置,输入刚才添加servuadmin的时候的密码再按下确定就是了,如图15:

图15
  这样我们的FTP服务的权限就属于一个users权限了。就不会存在本地提升权限了,但是这样子修改以后你的FTP已经失去功能了,不用急,看下面。
  2.下面得为serv_U安装目录和提供FTP服务的目录进行设置,选中完全控制就可以了。这里只抓一个安装目录的权限设置,提供FTP服务的目录设置也是一样,如图16:

图16
  4. 溢出测试是否安全。经过上面的配置之后,我们可以对自己的FTP服务器进行本地溢出测试,就不抓图了,结论嘛肯定是不成功啦!当然,这样配置后就意味着以后我们管理FTP的时候少了一份危险的同时却多了一份麻烦,因为你会发现现在打开FTP管理工具却创建不了新的用户以及删除不了用户。所以以后想加FTP账号的话,改回Serv_U服务的system权限再加吧!
  四. 小结与思考
  借用某N人的话:入侵和防御就像矛和盾,盾上不能有任何薄弱之处,不然就会死的很难看。本文旨在为服务器管理员提供防御这个漏洞的办法,不足之处,请大家多多指教。
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

于智者同行,你会不同凡响;与高人为伍,你会登上巅峰

返回列表